Я использую autofs для монтирования своих NFS-ресурсов по требованию в моем Kubuntu.
autofs
- это программа для автоматического монтирования каталогов по мере необходимости. Автоматическое монтирование монтируется только при обращении к нему и отключается после периода бездействия. Поэтому автоматическое монтирование общих ресурсов NFS/Samba экономит полосу пропускания и обеспечивает лучшую общую производительность по сравнению со статическим монтированием через fstab
.
В вашем случае это полезно:
При определении доли CIFS в файл карты, указать -fstype=cifs
и предшествуют общую папку с двоеточием :
Пример:
mntpoint -fstype=cifs ://example.com/shrname
Пример: Смонтируйте чтение-запись, указав пользователя и группу для владения файлами:
mntpoint -fstype=cifs,rw,uid=myuserid,gid=mygrpid ://example.com/shrname
Пример: Смонтируйте чтение-запись, указав имя пользователя и пароль, которые будут использоваться для подключения к общему ресурсу:
mntpoint -fstype=cifs,rw,username=myuser,password=mypass ://example.com/shrname
Файл карты - /etc/auto.master
или /etc/auto.*
или, например, /etc/auto.master.d/*
. Прочитайте документацию и узнайте, как настроить демон.
На первый взгляд кажется, что это не идеальное решение для вас, потому что кажется, что вы должны хранить учетные данные в файле. Это может быть файл карты (как в примере выше) или отдельный файл, например, credentials.txt
как вы можете видеть здесь. Однако там есть этот комментарий:
Я полагаю, вы могли бы сделать credentials.txt
именованным каналом и запустить программу запроса пароля для подачи канала.
Если это правильно, то я ожидаю, что эта "программа запроса пароля" может быть просто одним echo
или printf
вы вызываете вручную.
РЕДАКТИРОВАТЬ:
То, о чем я прошу, - это простой способ сделать это без необходимости вручную вызывать команду в командной строке и без необходимости сохранять (или выдумывать) учетные данные в файле.
Linux может монтировать / размонтировать различные файловые системы с помощью исполняемых файлов mount.*
И umount.*
. Эта опция credentials=/etc/credentials.txt
в связанном примере фактически является опцией для mount.cifs
. Я думаю, что если вы используете что-то вроде
mount -t foo …
или в конфигурации autofs
:
mntpoint -fstype=foo …
он попытается найти и запустить mount.foo
, передав ему все остальные параметры.
Поэтому вы должны создать mount.mycifs
как обертку над mount.cifs
. Он должен как-то запросить у вас учетные данные (простой xterm -e …
может быть, использовать read
или dialog
или что-то еще; но прочтите это, пожалуйста), добавить -o username=…,password=…
или -o credentials=…
для остальных параметры и передать их в mount.cifs
(или mount -t cifs
), который выполняет фактическое монтирование.
Если у вас есть umount.cifs
сделайте umount.mycifs
символической ссылкой на него.
Затем используйте -fstype=mycifs
в файле карты без каких-либо параметров, связанных с учетными данными.
Следующий /sbin/mount.mycifs
- быстрое и грязное доказательство концепции. Поймите, что он делает, прежде чем запускать его в своей ОС, потому что он будет работать от имени root
, я случайный человек в Интернете, и вы не должны мне доверять.
#!/bin/bash
tmpf="`mktemp`"
DISPLAY=:0 XAUTHORITY=/home/ola/.Xauthority xterm -e /bin/bash -c '\
read -p "user:" u; \
read -sp "password:" p; \
printf "username=%s\npassword=%s" "$u" "$p" > "$0"; \
' "$tmpf"
mount -t cifs "$@" -o credentials="$tmpf"
rm "$tmpf"
Он должен принадлежать пользователю root:root
или любому другому, что подходит для mount.*
В вашей ОС. Не забудьте сделать его исполняемым (sudo chmod a+x /sbin/mount.mycifs
), иначе это не сработает. Обратите внимание, что с DISPLAY
и XAUTHORITY
есть неприятный хак, который позволяет демону autofs
отображать окно xterm
на вашем (?) экран, но в целом это не должно делать. Хак только для демона, mount -t mycifs …
должен иметь возможность отображать xterm
без хака, если он вызывается из среды вашего рабочего стола.
Чтобы сделать его менее грязным, вам следует написать еще одну программу или скрипт и запустить его с ограниченными разрешениями вашего локального пользователя, прежде чем вы получите доступ к каталогу, где будет автоматически монтироваться ваш CIFS. Этот скрипт должен ожидать сигнала от mount.mycifs
, запрашивать учетные данные (он может отображать окна и т.д. Без неприятных хаков) и передавать их в mount.mycifs
который не должен отображать ни окна, ни запросы самостоятельно.