上下文:我正在使用 Python 和 Shell 脚本尝试创建一个简单的应用程序,以使用 dmenu 运行来挂载/卸载驱动器。
我目前的问题是挂载驱动器的命令在shell脚本文件中,并且该命令需要root权限才能运行。
出问题的部分正是这个:
mount ${DRIVE} ${DESTINATION}
我已经做了一些研究,对“在没有 sudo 的情况下运行挂载”问题的大多数答案都指向编辑 fstab 文件并手动添加磁盘。
我想知道是否有另一种方法,而不需要让用户编辑系统文件/配置。或者至少让这个配置自动完成。
您需要一些方法来限制用户可以使用的挂载命令的可能参数,否则恶意用户可以通过挂载某些东西来轻松接管系统,
/etc
以便系统使用攻击者的版本/etc/shadow
而不是真实版本。效果就像攻击者必须用攻击者已知的密码临时替换任何和所有用户的密码。如果用户只需要将一组固定的文件系统挂载/卸载到一组固定的挂载点,则只需将它们添加到
/etc/fstab
使用user
orusers
挂载选项可能是一个有效的解决方案。如果您无法预测用户需要安装的设备名称,或者用户需要能够将其安装到他/她可以访问的任意位置,那么您的问题就更难了。也许只允许用户将文件系统挂载到固定位置,然后教用户使用
ln -s /actual/mount/point /desired/location
创建符号链接以使文件出现在需要的位置?这个问题的更简单和更安全的答案是使用
udisks2
而不是mount
直接使用。它由 Thunar 等文件管理器使用,不需要 root 权限。该工具将驱动器安装在/run/media/<username>/
.要安装驱动器,请
udisksctl
使用mount
:用于
unmount
卸载。您可以编辑用户权限文件并授予该用户使用挂载。
使用 visudo 并添加这样的一行(为您自己的用户更改该用户名)