Монтировать общий ресурс Samba при входе в систему с помощью скрипта запуска (не fstab)

Монтировать общий ресурс Samba при входе в систему с помощью скрипта запуска (не fstab)

Фон

Я пытаюсь автоматически выполнить команду, которая монтирует защищенный паролем ресурс Samba, когда мой пользователь входит в систему. Проблема в том, что я использую свой ноутбук совместно с другим пользователем, и янехочу, чтобы общий ресурс Samba был смонтирован, когда она входит в систему. Я хочу, чтобы он был смонтирован толькокогда я вхожу в систему. Это исключает редактирование моего файла fstab, поскольку я хочу, чтобы это было специфично для пользователя.

Предыдущие исследования

Я искал и просмотрел множество вопросов и ответов, связанных с установкой общих ресурсов Samba, включая "Монтирование общих ресурсов Samba при загрузке/входе в систему и использование скрипта" и "Правильная запись fstab для монтирования общего ресурса Samba при загрузке," но большинство ответов подразумевают редактирование fstab, что отлично подходит большинству людей, но это не то, что я ищу здесь.

Что я уже сделал

Я могу вручную смонтировать общий ресурс Samba из командной строки, выполнив следующие действия:

sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

Постановка задачи

Предыдущая команда отлично работает, когда я запускаю ее из командной строки — она запрашивает у меня пароль для получения разрешения sudo, я ввожу его, и команда запускается. Проблема в том, что когда я добавляю точно такую ​​же команду в поле «Команда» в Настройки запускаемых приложений > Изменить программу запуска, сохраняю изменения, перезагружаюсь и снова вхожу в систему, общий ресурс Samba не монтируется, как я ожидал. Я подозреваю, что это потому, что мне нужны права root для запуска как sudo, а со сценарием в Настройки запускаемых программ я не могу его ввести, поэтому сценарий просто не работает.

Как это обойти?

решение1

Ладно, мне удалось решить это самостоятельно (с помощью других). Основная проблема, как я и подозревал, заключалась в том, что я пытался запустить команду, требующую привилегий root, не указывая пароль. Я решил эту проблему, следуя инструкциям в теме "Как выполнить команду sudo в скрипте без запроса пароля". Короче говоря, я создал скрипт оболочки под названием "script-mount-samba-share.sh", который не содержит ничего, кроме одной строки с командой монтирования, которую я хочу запустить:

mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

Затем я изменил владельца файла на root:root и изменил его права доступа на 700. Затем я настроил sudo, чтобы разрешить запуск этого скрипта без ввода пароля, а затем я изменил поле «Команда» в Startup Applications Preferences > Edit Startup Program на «sudo /home/scott/script-mount-samba-share.sh» (без кавычек) и вуаля. В следующий раз, когда я перезагрузился и вошел под своим пользователем, общий ресурс Samba смонтировался без малейшего движения моего пальца. Я также проверил, что когда я перезагружаюсь и вхожу под другим пользователем, общий ресурс Samba не монтируется, а это то, что мне нужно.

Единственная небольшая проблема, которую я сейчас пытаюсь преодолеть, заключается в том, что когда я уже вошел в систему, а затем переключаю пользователей на кого-то другого, мой общий ресурс Samba все еще отображается в левой навигационной панели Nautilus, что вполне логично, поскольку он был смонтирован, когда я вошел в систему под своим собственным пользователем, но я не хочу, чтобы смонтированный общий ресурс отображался в Nautilus для другого пользователя, поэтому моя следующая задача — выяснить, как это реализовать.

решение2

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

sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700

конечно со всеми изменениями в /etc/sudoers

Связанный контент