我有一个直接访问某些磁盘的VMWare VM。为了运行(没有运行vmware作为su,这有它自己的问题),我需要改变设备的所有权。我已经使用尼莫手动完成了这一工作,因此我知道需要执行什么。
为此编写了一个shell脚本,我编写了
chown john:john /dev/disk/by-id/blahblah /dev/anotherblah /dev/lastoneblah我将其保存为文件drive-owner,设置执行位,然后在根shell中将其所有者更改为root,并设置+s特殊模式标志。
根据ls的说法,结果是-rwsr-sr-x。
如果我从一个正常的(非根) shell运行,我会从chown获得错误,不允许操作。它运行时没有来自根壳的抱怨。
我似乎错过了自动运行脚本作为根的部分。我认为这就是"setuid“权限和+s是如何指定它的的目的和功能。
我遗漏了什么?
发布于 2015-07-22 05:00:28
出于安全考虑,shell脚本忽略Setuid和setgid标志。
发布于 2015-07-22 07:25:33
按照这些步骤:
sudochmod +x script_pathchmod 777 script_path发布于 2015-07-22 07:34:11
@希尔德里德在上面的评论中注意到了这一点。我会把它扩展到一个答案,因为我认为它是正确的,强烈推荐的答案。
超级命令
…允许指定的用户像根用户一样执行脚本(或其他命令);或者它可以在执行命令之前根据每个命令设置uid、gid和/或辅助组。它旨在成为使脚本setuid安全的替代方案。Super还允许普通用户提供命令供其他用户执行;这些命令使用提供命令的用户的uid、gid和组执行。
(强调我的)。
https://unix.stackexchange.com/questions/217520
复制相似问题