Sudoers文件权限

我试图运行下面的命令,而不需要sudo:

echo 1 | sudo tee -a /sys/block/$hd/device/delete 

$ hdvariables从我的驱动器托架中的每个硬盘的sdb – > sdidynamic更改。

我将下面一行添加到sudoers文件中:

 operator ALL=/sys/block/sdb/device/delete 

但是,即使我运行,这仍然没有改变它仍然要求sudo密码:

 echo 1 | sudo tee -a /sys/block/sdb/device/delete 

sudoers行只能指向你想要运行的命令,而不是目标输出文件。 在/sys下的任何东西都是一个特殊的设备,字符被写入。

你想要做的是创build一个脚本,将echo 1 > /sys/block/$hd/device/delete其中$ hd被选中以匹配正则expression式/sd[bi]/ 。 将sudo命令指向该脚本,而不是在哪里。

此外,迈克尔汉普顿是正确的:有人运行一个删除命令,你不想搞砸了。 如果你没有正确的备份,那么你的数据永远不会存在。

把你的代码放在一个脚本中(你正在编写一个脚本,对吗?),并授予用户sudo对脚本的访问权限。

它可能最终会看起来像这样:

 #!/bin/bash for kill_this_disk in /sys/block/sd[bi]/device/delete do echo 1 > $kill_this_disk done 

而且,我希望你有很好的备份。

我不认为**运算符ALL = / sys / block / sdb / device / delete **将使您能够访问该设备,即使是非root用户。 sudoers使您能够指定在以sudo方式运行时不会查询密码的命令(例如“tee”)。 您的问题来自/ sys / block / $ hd / device / delete上的权限…

也许你需要在sudoersconfiguration文件中使用NOPASSWD选项。 我相信这个语法是这样的:

 operator ALL=NOPASSWD:/sys/block/sdb/device/delete