SUID 的问题

aio*_*obe 3 linux suid

我有一个简单的命令,我希望能够以用户身份执行,但它需要 root 权限。我怀疑这是“SUID”位的情况,但我从未使用过它。

这是我尝试过的:

aioobe@e6510:~/bin$ sudo -s
root@e6510:~/bin# cat -> spindown_baydrive
#!/bin/bash
/sbin/hdparm -Y /dev/sdb
root@e6510:~/bin# chmod +x spindown_baydrive 
root@e6510:~/bin# chmod ug+s spindown_baydrive 
root@e6510:~/bin# exit
aioobe@e6510:~/bin$ ./spindown_baydrive 
/dev/sdb: Permission denied
aioobe@e6510:~/bin$


aioobe@e6510:~/bin$ ls -la spindown_baydrive 
-rwsr-sr-x 1 root root 37 2011-01-31 09:59 spindown_baydrive
Run Code Online (Sandbox Code Playgroud)

有什么建议?

use*_*517 7

这正是sudo 的设计目的。使用 visudo 编辑 sudoers 以允许非特权用户以 root 身份运行您的脚本。

visudo

添加这样的一行

aioobe ALL=NOPASSWD: /path/to/spindown_baydrive

并保存文件

现在您可以使用以下命令以 root 身份运行该文件

sudo /path/to/spindown_baydrive

如果您想要求输入密码才能运行脚本,请将上面的 sudoers 行更改为

aioobe ALL= /path/to/spindown_baydrive