这是我的 bash 脚本init.d
:
#!/bin/bash
case "$1" in
'start')
# mount
bindfs -n /home/my_user/.local/share/Cryptomator/mnt /home/my_user/drivefolder
;;
'stop')
fusermount -u /home/my_user/drivefolder
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
所以我从 root 帐户运行它:
/etc/init.d/drivemount.sh start
/etc/init.d/drivemount.sh stop
我想要的是/home/my_user/drivefolder
从root
一个帐户挂载/卸载到my_user
另一个帐户无特权(这样无需权限即可操作已挂载的文件夹)。
有什么办法可以做到这一点?(无需在my_user
没有权限的帐户中从其他位置运行脚本)
澄清:脚本不会自动运行。我想要手动运行脚本,无论是从root
还是从my_user
仅从sudo
位置运行/etc/init.d
(出于与问题无关的原因)
PD:我读到过eval
可以这么做但我不知道。
答案1
而不是bindfs …
使用sudo -u my_user bindfs …
。
如果 root 运行脚本,则应sudo
允许无需密码即可成为 my_user。如果 my_user 运行脚本,则应sudo
允许无需密码即可成为同一用户。如果任何用户运行脚本,sudo
则将如同 root 运行脚本一样。
(或许中的一些设置sudoers
可以改变与密码相关的行为。我不确定。但我希望常见的合理配置能够按照描述的方式运行。)
我的测试表明 root 不需要sudo -u my_user
before fusermount -u
。但是,如果另一个用户只是运行脚本(不带sudo
),并且他们能够以 my_user 的身份进行身份验证,那么他们就能够挂载。为了保持一致性,最好允许他们以相同的方式卸载,因此sudo -u my_user
beforefusermount …
可能是一件好事。