t
すべての新しいファイルとディレクトリに特定のアクセスマスクがあり、ディレクトリにも固定ビットセット(このディレクトリ内のファイルの削除を制限する固定ビット)があるディレクトリを作成したいと思います。
最初の部分では、親ディレクトリのデフォルトACLを設定する必要があることを理解しました。ただし、新しいディレクトリはt
親ディレクトリからこのビットを継承しません。したがって、所有者でない人もサブディレクトリのファイルを削除できます。この問題を解決できますか?
ベストアンサー1
グループメンバーシップを許可する構成であり、テスト、グループファイルの作成と変更と同時に、所有者および「他人」を除き、ファイルの削除および名前の変更は許可されません。ユーザー名を使用して、レフそしてumaskが022であると仮定します。
groupadd acltest
usermod -a -G acltest lev
ルートアカウントからログアウトしてレフアカウント。ログインしてルートになるか、以下を使用してください。Sudo:
mkdir /tmp/acltest
chown root:acltest /tmp/acltest
chmod 0770 /tmp/acltest
chmod g+s /tmp/acltest
chmod +t /tmp/acltest
setfacl -d -m g:acltest:rwx /tmp/acltest
setfacl -m g:acltest:rwx /tmp/acltest
ACL は固定ビットを設定できず、固定ビットはサブディレクトリにコピーされません。ただし、以下を使用することもできます。inotifyまたは、ファイルシステムの変更(新しいディレクトリなど)を検出し、それに応じて反応する同様のソフトウェア。
たとえば、Debian では:
apt-get install inotify-tools
次にスクリプトを作成します。inotify、良い/usr/local/sbin/set_sticky.sh
。
#!/usr/bin/env bash
inotifywait -m -r -e create /tmp/acltest |
while read path event file; do
case "$event" in
*ISDIR*)
chmod +t $path$file
;;
esac
done
実行許可根:chmod 0700 /usr/local/sbin/set_sticky.sh
。次に、起動時に(たとえば)/etc/rc.local
または適切なRCファイルで実行します。
/usr/local/sbin/set_sticky.sh &
もちろん、この例では/tmp/acltest
再起動時に消える必要があります。それ以外の場合、これは魅力のように動作します。