这是我的 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
它可以做到,但我不知道。
而不是
bindfs …
使用sudo -u my_user bindfs …
.如果 root 运行脚本,那么
sudo
应该允许成为没有密码的 my_user。如果 my_user 运行脚本,那么sudo
应该允许成为没有密码的相同用户。如果任何用户使用该脚本运行该脚本,sudo
那么它就像 root 运行该脚本一样。(也许某些设置
sudoers
可以改变这种关于密码的行为。我不确定。我希望常见的理智配置的行为与描述的一样。)sudo -u my_user
我的测试表明 root之前不需要fusermount -u
。但是,如果另一个用户只是运行脚本(不带sudo
)并且他们能够以 my_user 身份进行身份验证,那么他们将能够挂载。为了保持一致性,最好让它们以相同的方式卸载,所以sudo -u my_user
beforefusermount …
可能是一件好事。