Я использую 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 который не должен отображать ни окна, ни запросы самостоятельно.