親に基づいて固定ビットを再帰的に設定

親に基づいて固定ビットを再帰的に設定

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再起動時に消える必要があります。それ以外の場合、これは魅力のように動作します。

おすすめ記事