Samba mount с запросом пароля от имени пользователя без полномочий root

17

Я хочу смонтировать защищенный паролем общий ресурс SMB (обслуживаемый машиной Windows). Общий ресурс защищен именем пользователя и паролем, и я не могу записать пароль в файл, я хочу получить пароль во время монтирования.

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

Клиент без головы, поэтому я ищу инструмент командной строки.

Что я пробовал:

  • mount.cifs: хотя это может быть сделано setuid root, его авторы не считают его безопасным . Запуск его под sudoтой же проблемой.
  • smbnetfs, fusesmbЯ не мог убедить любого из них , чтобы побудить меня пароль.
  • Наутилус и гвфс: gvfs-mount smb://servername/sharenameтерпит неудачу с Error mounting location: volume doesn't implement mount.

Как подключить общий ресурс Samba из командной строки как пользователь без полномочий root с запросом пароля?

Жиль "ТАК - прекрати быть злым"
источник
1
Один из ведущих разработчиков, похоже, ослабил свою позицию в отношении проблем setuid. Выдержка: «Код был существенно переработан и должен быть намного безопаснее, чем был раньше. Теперь он разделяет привилегии, так что основная часть процесса монтирования выполняется как непривилегированный пользователь и, если он связан с правыми библиотеками, с сокращенными возможностями к минимуму. На данный момент, я бы сказал, что это достаточно безопасно, что нам больше не нужно ограничивать его от установки setuid root. " источник: lists.samba.org/archive/samba/2010-April/154935.html Я понял, что должен указать на это.
Тим

Ответы:

20

«Ошибка места установки: том не реализует монтирование», по-видимому, означает «Мне нужна шина D-Bus, но она недоступна». (Спасибо коллеге гуру Вентуракса за эту информацию.) В рамках сеанса SSH я могу использовать gvfs-mountпри условии, что dbus-daemonон запускается первым и установлена ​​переменная среды DBUS_SESSION_BUS_ADDRESS.

export $(dbus-launch)
gvfs-mount smb://workgroupname\;username@hostname/sharename
# Type password
ls ~/.gvfs/'sharename on hostname'

gvfs-mountи все другие утилиты GVFS должны общаться с одним и тем же сеансом D-Bus. Следовательно, если вы используете несколько сеансов SSH или иным образом используете монтирование в сеансах входа в систему, вы должны:

  • запустить D-Bus в первый раз, когда это необходимо;
  • позаботьтесь о том, чтобы D-Bus не заканчивался сессией, пока есть смонтированные файловые системы GVFS;
  • повторно использовать существующий сеанс D-Bus во время входа в систему, если таковой имеется.

Для этого смотрите Повторное использование сеансов D-Bus в сеансах входа .

Жиль "ТАК - прекрати быть злым"
источник
1
Это также относится к gio mountпоследним версиям Ubuntu.
Jnas
1

SMBNetFS по умолчанию использует Gnome-keyring. Любые пароли, введенные и сохраненные в Gnome-keyring при просмотре общих папок Samba в Nautilus, должны использоваться автоматически. Так что, если хранение паролей в Gnome-keyring в порядке, SMBNetFS более удобен. Он автоматически монтирует всю сетевую окрестность. Эта информация взята из примера файла конфигурации SMBNetFS, но я не проверял ее, так как не использую Gnome.

Что касается использования брелока Gnome без Х11 см использовать брелок гнома-демон без X .

Самир
источник