setfaclがグループ権限を誤って変更する

setfaclがグループ権限を誤って変更する

サーバーの「/home」ディレクトリツリーをバックアップするために「backup」アカウントを作成し、setfaclを使用してディレクトリ全体を読み取ることができました。私のcronジョブは毎晩rootとしてこのコマンドを実行します。

setfacl -R -m u:backup:rx,d:u:backup:rx /home

いいですね。 1つの問題を除いて、このコマンドを実行するたびにSSHキーのグループ権限が変更されます。

me@myserver:~/.ssh$ ls /home/me/.ssh/id_rsa -l
-rw-r-x---+ 1 me me 1679 Jan  8 18:35 /home/me/.ssh/id_rsa

さて、これでグループの読み取りが可能になったので、これにより私のsshプログラムがクラッシュします。奇妙なことに、getfaclは権限に同意しません。

me@myserver:~/.ssh$ getfacl /home/me/.ssh/id_rsa
getfacl: Removing leading '/' from absolute path names
# file: home/me/.ssh/id_rsa
# owner: me
# group: me
user::r--
user:backup:r-x
group::---
mask::r-x
other::---

getfaclはファイルをグループから読み取れないと見なします。明らかなコマンドを実行すると

chmod 400 id_rsa

権限は固定されていますが、元のコマンド(setfacl -R -mu:backup:rx、d:u:backup:rx / home)を再実行するたびに復元されます。どうなりますか?

注:これらのセキュリティ問題について心配する必要がないように、id_rsaをバックアップしたいと思います。

ベストアンサー1

acl(5)マニュアルページを見ると次のようになります。

ACLエントリとファイル権限ビットの対応

ACLによって定義された権限は、ファイル権限ビットによって指定された権限の親セットです。

ファイル所有者、グループ、その他の権限と特定のACLエントリとの間には対応関係があります。所有者権限は、ACL_USER_OBJエントリの権限に対応します。ACLにACL_MASKエントリがある場合、グループ権限はACL_MASKエントリの権限に対応します。。それ以外の場合、ACL に ACL_MASK エントリがない場合、グループ権限は ACL_GROUP_OBJ エントリの権限に対応します。その他の権限は、ACL_OTHER_OBJ エントリの権限に対応します。

getfacl出力を見ると、そのファイルがないとmaskファイルにアクセスできないことがわかります。r-xbackup

実際にr-xそのモードになっても、グループがファイルにアクセスできるという意味ではありませんme(そうではありません)。他の人(ユーザーまたはグループ)がアクセスできます。

しかし、ssh同じだから十分ではありません。

を実行するとchmod 400マスクが消去されます。つまり、ユーザーはbackupマスクにアクセスできなくなります。

これは少し混乱していますが、おそらく2つの権限メカニズムを調和させるための最良の方法です。

問題が発生した場合は、バックアップするか、rootその機能を使用する必要があります。

おすすめ記事