现状
给出以下/etc/fstab
挂载点:
//server/app /home/user/server/app cifs noauto,user,vers=3.11 0 0
//server/code /home/user/server/code cifs noauto,user,vers=3.11 0 0
这些要以user
特权(不带sudo
)安装。Givenuser
已登录,password
当前以交互方式提示 - 没有凭据文件,也没有硬编码的密码/etc/fstab
。
另外:所有共享都具有相同的凭据user
和相同的密码。
问题是什么?
假设我们想在启动时挂载所有共享。分享app
:
mount ~/server/app # `user` is active
# password interactively requested
Password for user@//server/app: (press TAB for no echo)
问题是,我必须为所有共享输入相同的密码,因为它不会被缓存。
我试过的
# type password once and store it in process memory
echo "Enter password for mounts:"
read -s mount_pass
[[ -z "mount_pass" ]] && echo "Password empty, exiting" && exit
# mount all shares - how to feed every mount command with given password?
mount ~/server/app
mount ~/server/code
# My attempts
echo $mount_pass | mount ~/server/app
mount ~/server/app < <(echo $mount_pass)
(原谅我肤浅的shell知识)
有没有办法将存储在命令中的密码传递$mount_pass
给mount
命令,以便它可以通过其标准输入自动读取并且不打开交互式提示?
看来,
mount
via/etc/fstab
总是希望从终端设备以交互方式读取密码,并且没有解决方案可以通过标准输入来管道它。这是使用GNOME Keyring/
secret-tool
和sudo
-S
通过标准输入传递密码的选项的解决方法。需要注意的是,我们必须使用
mount
提升的特权。假定本地sudo
凭据等于远程共享服务器凭据。