授权wheel组到特定文件夹中的rm

授权wheel组到特定文件夹中的rm

我想将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

您可以添加其他条件来要求目标是目录、具有特定所有权等。

相关内容