Предпосылки
Я пытаюсь автоматически выполнить команду, которая монтирует защищенный паролем общий ресурс 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
Проблема Statement
Предыдущая команда прекрасно работает, когда я выполняю ее из командной строки - она запрашивает у меня пароль для получения разрешения sudo, я ввожу его, и команда запускается. Проблема заключается в том, что когда я добавляю ту же самую команду в поле «Команда» в «Параметры запуска приложений»> «Редактировать программу запуска», сохраняю свои изменения, перезагружаюсь и снова регистрируюсь, общий ресурс Samba не монтируется, как я ожидал. Я подозреваю, что это потому, что мне нужно разрешение root для запуска от имени sudo, и со сценарием в Настройках автозагрузки я не могу его ввести, поэтому сценарий просто завершается неудачей.
Как я могу обойти это?
Хорошо, мне удалось решить это самостоятельно (с помощью других). Основной проблемой, как я и подозревал, был тот факт, что я пытался запустить команду, требующую привилегий суперпользователя без указания пароля. Я решил эту проблему, следуя инструкциям в теме « Как мне выполнить команду в скрипте без запроса пароля ». Короче говоря, я создал сценарий оболочки с именем «script-mount-samba-share.sh», который не содержит ничего, кроме одной строки с командой mount, которую я хочу запустить:
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, чтобы разрешить запуск этого сценария без ввода пароля, а затем я изменил поле «Команда» в Предпочтения запуска приложений> Отредактируйте программу запуска в "sudo /home/scott/script-mount-samba-share.sh" (без кавычек) и вуаля. В следующий раз, когда я перезагрузил компьютер и вошел в систему с моим пользователем, общий ресурс Samba смонтирован без моего поднятия пальца. Я также проверил, что при перезагрузке и входе в систему с другим пользователем общий ресурс Samba не монтируется, чего я и хочу.
Единственный небольшой улов, который я сейчас пытаюсь преодолеть, это то, что, когда я уже вошел в систему и затем переключил пользователей на кого-то другого, мой общий ресурс Samba все еще отображается в левой навигационной панели в Nautilus, что имеет смысл так как он был смонтирован, когда я вошел в систему со своим собственным пользователем, но я не хочу, чтобы смонтированный общий ресурс отображался в Nautilus для другого пользователя, поэтому моя следующая задача - выяснить, как выполнить эту часть.
Важно добавить имя пользователя и пароль для команды монтирования, в противном случае может потребоваться ввести пароль. для меня это сработало:
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