特定のフォルダ(この場合、私のフォルダは「CT」)でホイールグループにrmを与えたいと思います。
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
コマンドを使用すると、ホイールグループのユーザーがを実行できます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
ターゲットがディレクトリである必要があり、特定の所有権が必要であるという条件を追加できます。