Правильный способ смонтировать самбу

9

Я хотел бы смонтировать сетевую файловую систему CIFS с samba в моей системе Arch Linux. Я хотел бы смонтировать эту файловую систему всякий раз, когда я вхожу в систему (через ssh, TTY или через KDM).

Я могу получить довольно близко к тому, что я хочу, добавив сетевой ресурс к /etc/fstab. Самая большая «проблема» заключается в том, что это требует либо жесткого кодирования моего пароля, /etc/fstabлибо создания файла учетных данных с моим именем пользователя и паролем. Мне кажется небезопасным хранить свое имя пользователя и пароль в текстовом файле, даже если я установил разрешения на 600.

Существует ли «правильный» способ безопасного автоматического подключения сетевого ресурса? Могу ли я сделать это с PAM (мои имя пользователя и пароль одинаковы на обеих машинах) и если да, то как?

StrongBad
источник
Вы смотрели на pam_cifs ? «pam_cifs - это модуль Linux-PAM для монтирования и размонтирования общих ресурсов CIFS при входе в систему для каждого пользователя»
CVN
Или pam_mount, у меня нет особого опыта, но, похоже, он предназначен для этого.
EightBitTony
@EightBitTony нахождение pam_mount заставило меня задать вопрос, я надеюсь, что кто-то сможет сказать мне более определенно, если это путь, и если да, то как.
StrongBad

Ответы:

8

Способ № 1 - /etc/fstab

Я понимаю, что вы ищете альтернативы этому, но вот, в частности, как получить свои учетные данные из /etc/fstabфайла:

//WindowsHost/Sharename /LocalMountPoint cifs credentials=/etc/cifsauth 0 0

Тогда в файле /etc/cifsauth:

username=someuser
password=somepass

Сделать разрешения этого файла 600, то есть chmod 600 /etc/cifsauth.

Способ № 2 - pam_mount

Вы можете установить pam_mount, а затем настроить универсальное монтирование для всех пользователей, которые входят в систему, например:

# /etc/security/pam_mount.conf.xml
<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

Этот метод по-прежнему имеет ту же проблему, что и метод № 1, где учетные данные хранятся в файле /home/%(USER)/.Music.cred. Это файл учетных данных того же типа, что и в первом методе, поэтому убедитесь, что разрешения также равны 600.

Способ № 3 - использовать gvfs-mount

Это U & L Q & A под названием: Могу ли я автоматизировать монтирование общего ресурса cifs без сохранения моего пароля в открытом тексте? содержит ответ @Gilles, в котором описано использование кольца ключей GNOME для сохранения ваших учетных данных CIFS.

После этого вы можете получить доступ к общим ресурсам CIFS, используя GVFS - виртуальную файловую систему GNOME, например:

$ gvfs-mount smb://username\;workgroupname@hostname/sharename

Это сопоставит общий ресурс с именем хоста с именем sharename и смонтирует его $HOME/.vfs/sharename on hostname. Вы не можете контролировать это никоим образом. Это жестко закодировано, чтобы всегда быть установленным здесь, я смотрел!

Однако вы можете создавать ссылки на эти монтирования, что я и делаю, чтобы получить доступ к смонтированным ресурсам. Использование .gvfsбыло неудачным, потому что некоторые инструменты не перечисляют точечные каталоги в просмотре файлов, поэтому часто созданная мной ссылка является единственным способом доступа к этим общим ресурсам.

SLM
источник
если вы сделаете файл скрытым, скажем .cifsauth, а 'username =' не требуется, достаточно только учетных данных = / etc / .cifsauth
Рахул Патил
@RahulPatil - вы говорите, что должны сделать учетные данные, названные .cifsauth, чтобы удалить username=, или что username=просто не нужно все вместе?
SLM
да ... хороший ответ .. !! +1 за pam_mount
Рахул Патил
@RahulPatil - с каким битом вы согласны?
SLM
2

Оказывается, это pam_mountпуть. Вы добавляете сетевой ресурс в/etc/security/pam_mount.conf.xml

<volume user="yourUserName" fstype="auto" path="//path/to/the/network/share" mountpoint="/path/to/the/mount/point" options="username=yourUserName" />
<mkmountpoint enable="1" remove="true" />

Это должно быть теоретически можно использовать %(USER), %(USERUID)и %(USERGID)переменные , чтобы сделать его общее горе, но я не мог получить эту часть для работы на Arch Linux. Вам также необходимо настроить вашу систему для использования pam_mount. Вам нужно изменить оба /etc/pam.d/system-authи ваш соответствующий логин-менеджер. Для КДМ это так /etc/pam.d/kde. Изменения в основном включают в себя добавление optional pam_mount.soк каждому разделу обоих файлов, но точные детали сложны, так как порядок имеет значение. Я следовал за Arch Wiki .

С этой настройкой и тем же именем пользователя / паролем на сервере и на моей машине я могу автоматически смонтировать, не сохраняя файл учетных данных в любом месте.

StrongBad
источник
Это хорошо ... В принципе, я бы предпочел решение fstab - мне pamлично не нравится, а остальным, и я заметил, что они имеют тенденцию ползти дальше к конфигурации системы - но это определенно отвечает на вопрос. Могу ли я спросить, почему вы так против хранения учетных данных? Полномочия пользователя и / или владение / шифрование файла должны быть более чем достаточными. В некоторых системах вы даже можете хранить такую ​​информацию в прошивках, которые доступны только после аутентификации. sshнапример, хранит учетные данные на основе прав доступа fs?
mikeserv
@mikeserv мы используем единую систему входа в систему, поэтому системный администратор, имеющий root-доступ к машине с моим файлом учетных данных, может не иметь root-доступа ко всем серверам, к которым мой пароль дает мне доступ.
StrongBad