Как смонтировать защищенный паролем общий ресурс Windows без sudo в сценарии оболочки?

Вопрос или проблема

Чтобы передать пароль в shell-скрипте, вам нужно будет написать:

sudo mount -t cifs -o password=asdasd,username=mc007,uid=1000 //192.168.1.105/cfmaster/ /PMaster/projects/x4mm/win

Но есть ситуации, когда вы не хотите использовать sudo (скрипты сборки,…).

И если вы не используете sudo, команда завершится с ошибкой:

только root может использовать опцию "--options"

Так как же смонтировать сетевую папку с паролем из ненавязчивого shell-скрипта?

спасибо

Как упоминалось в комментариях, пользователь ‘muru’ предлагает посмотреть на Как выполнить определенные команды sudo без пароля?. После исследования, похоже, что это единственный официально поддерживаемый способ монтирования защищенной паролем общей папки Windows из скрипта.

Это требует от вас знакомства с технологиями и потребует изменения системных файлов с правами root.

Ответ или решение

Как смонтировать защищённый паролем общий ресурс Windows без использования sudo в shell-скрипте

Существует множество ситуаций, когда необходимо смонтировать сетевой диск, защищённый паролем, без администраторских прав, например, при выполнении скриптов сборки. В данной статье мы подробно рассмотрим, как можно обойти необходимость использования sudo для монтирования CIFS-ресурсов в Linux.

Проблема

Использование команды mount для CIFS требует прав суперпользователя для передачи опций в командной строке, таких как имя пользователя и пароль. В противном случае вы столкнётесь с ошибкой:

only root can use "--options" option

Однако существует способ настроить систему так, чтобы вы могли монтировать такие ресурсы без постоянного запроса прав администратора.

Решение

  1. Создание файла учётных данных:

    Чтобы избежать ввода пароля в командной строке, вы можете создать файл, который будет хранить ваши учётные данные, например:

    echo "username=mc007" > ~/.smbcredentials
    echo "password=asdasd" >> ~/.smbcredentials
    chmod 600 ~/.smbcredentials

    Здесь важно установить права доступа к файлу на 600, чтобы защитить свои учётные данные от посторонних.

  2. Редактирование файла fstab:

    Можно настроить автоматическое монтирование через файл /etc/fstab. Для этого вам необходимо отредактировать его с правами суперпользователя. Откройте fstab:

    sudo nano /etc/fstab

    Добавьте строку, подобную следующей, чтобы монтировать ваш ресурс:

    //192.168.1.105/cfmaster/ /PMaster/projects/x4mm/win cifs credentials=/home/yourusername/.smbcredentials,uid=1000,gid=1000,iocharset=utf8 0 0

    Убедитесь, что вы заменили yourusername на ваше имя пользователя.

  3. Монтирование общей папки:

    После изменения fstab, вы можете просто выполнить команду для монтирования:

    mount /PMaster/projects/x4mm/win

    В этом случае система будет использовать указанные в .smbcredentials учётные данные.

  4. Выполнение скрипта:

    Теперь вы можете использовать shell-скрипт, в котором суточная сборка будет монтировать ресурс без необходимости запрашивать права администратора:

    #!/bin/bash
    if mount | grep /PMaster/projects/x4mm/win > /dev/null; then
       echo "Диск уже смонтирован."
    else
       mount /PMaster/projects/x4mm/win
       echo "Диск смонтирован успешно."
    fi

Заключение

Такая схема позволяет вам монтировать защищённые ресурсы Windows без постоянного запроса прав суперпользователя. Используя файл учётных данных и конфигурацию в fstab, вы можете повысить безопасность своих данных и упростить процесс монтирования. Однако, обратите внимание на безопасность вашего файла с учётными данными, и обеспечьте его защиту от несанкционированного доступа.

Эти рекомендации помогут вам создавать более безопасные и удобные решения для работы с сетевыми ресурсами в рамках автоматизированных процессов.

Оцените материал
Добавить комментарий

Капча загружается...