![授权wheel组到特定文件夹中的rm](https://linux22.com/image/155414/%E6%8E%88%E6%9D%83wheel%E7%BB%84%E5%88%B0%E7%89%B9%E5%AE%9A%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84rm.png)
我想将wheel组授权给特定文件夹中的rm(在本例中我的文件夹是“CT”)。
我尝试在 visudo 中添加这一行:
%wheel All=(ALL) /bin/rm /CT/
我在 CT 文件夹中有一个测试文件“test1”,当我尝试使用 Wheel 用户进行 rm 时,我收到消息说我无权运行/bin/rm test1
答案1
由于您只想从目录本身中删除文件/CT
,因此可以在不引用sudo
.
最初,您需要将组所有权和权限设置为 root:
chgrp wheel /CT
chmod g+rwx /CT
现在,组中的用户wheel
有权(创建和)删除此目录中的任何文件,而无需使用sudo
:
rm -f /CT/unwanted.txt
答案2
您的命令允许wheel组用户运行rm /CT/
。而已。一点也没有少。
您可以尝试这个,这将允许用户删除/CT/
其中的任何内容,前提是他们使用与此处指定的完全相同的标志:
%wheel ALL=(ALL) /bin/rm -rf /CT/*
我对控制的一般偏好sudo
是编写一个验证参数的脚本,并让该脚本通过sudo
.也许这样的东西就足够了,它检查目标是否是文件夹内的文件/CT
#!/bin/bash
#
ss=0
for item in "$@"
do
real=$(readlink "$item")
if [[ "$real" =~ ^/CT/. ]] && [[ -f "$real" ]]
then
rm -f -- "$item"
else
[[ -t 2 ]] && echo "Refusing to remove '$item'" >&2
ss=1
fi
done
exit $ss
您可以添加其他条件来要求目标是目录、具有特定所有权等。