我正在尝试编写一个 shell 脚本来挂载循环设备,并且我正在为这个脚本分配一个粘性位以作为 uid(root) 执行。(这是针对服务器上的其他用户)问题是我似乎无法运行'mount' 命令前面不使用 sudo。当我在 root 帐户中时,我可以毫无问题地运行“mount”命令,所以我认为通过设置脚本rws-r_x-r_x
可以做到这一点。
我是否误解了使用粘性位的概念?还是有其他方法?
服务器在 Ubuntu 10.04 下运行
你说的是setuid
位,不是那个sticky
。内核不尊重脚本上的 setuid 位。 有关详细说明,请参阅这篇文章,这里有一个摘要:要点是脚本上的 suid 是不安全的。* 内核开始读取脚本以执行它,但它看到#!/path/to/interpreter
并发现它需要被解释。然后它直接取消“执行”脚本并调用指定的解释器,将脚本名称作为第一个参数传递(以及之后的所有后续参数)。在这种情况下设置 UID 不安全的原因是攻击者可能会更改要在内核设置新 UID 和解释器读取文件之间执行的脚本。
*:提到的另一篇文章perl
以一种可以 suid 的方式处理其脚本。
至于手头的实际安装问题,请添加一行 /etc/fstab/
并包含该user
选项。