Вопрос или проблема
Чтобы передать пароль в 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
Однако существует способ настроить систему так, чтобы вы могли монтировать такие ресурсы без постоянного запроса прав администратора.
Решение
-
Создание файла учётных данных:
Чтобы избежать ввода пароля в командной строке, вы можете создать файл, который будет хранить ваши учётные данные, например:
echo "username=mc007" > ~/.smbcredentials echo "password=asdasd" >> ~/.smbcredentials chmod 600 ~/.smbcredentials
Здесь важно установить права доступа к файлу на 600, чтобы защитить свои учётные данные от посторонних.
-
Редактирование файла
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
на ваше имя пользователя. -
Монтирование общей папки:
После изменения
fstab
, вы можете просто выполнить команду для монтирования:mount /PMaster/projects/x4mm/win
В этом случае система будет использовать указанные в
.smbcredentials
учётные данные. -
Выполнение скрипта:
Теперь вы можете использовать shell-скрипт, в котором суточная сборка будет монтировать ресурс без необходимости запрашивать права администратора:
#!/bin/bash if mount | grep /PMaster/projects/x4mm/win > /dev/null; then echo "Диск уже смонтирован." else mount /PMaster/projects/x4mm/win echo "Диск смонтирован успешно." fi
Заключение
Такая схема позволяет вам монтировать защищённые ресурсы Windows без постоянного запроса прав суперпользователя. Используя файл учётных данных и конфигурацию в fstab
, вы можете повысить безопасность своих данных и упростить процесс монтирования. Однако, обратите внимание на безопасность вашего файла с учётными данными, и обеспечьте его защиту от несанкционированного доступа.
Эти рекомендации помогут вам создавать более безопасные и удобные решения для работы с сетевыми ресурсами в рамках автоматизированных процессов.