如何在没有权限的情况下从 root 帐户使用 bindfs/fusermount 挂载/卸载文件夹?

如何在没有权限的情况下从 root 帐户使用 bindfs/fusermount 挂载/卸载文件夹?

这是我的 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/drivefolderroot一个帐户挂载/卸载到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_userbefore fusermount -u。但是,如果另一个用户只是运行脚本(不带sudo),并且他们能够以 my_user 的身份进行身份验证,那么他们就能够挂载。为了保持一致性,最好允许他们以相同的方式卸载,因此sudo -u my_userbeforefusermount …可能是一件好事。

相关内容