setfaclがグループ書き込みをオンにしてファイルモードに影響する理由

setfaclがグループ書き込みをオンにしてファイルモードに影響する理由

ファイルとディレクトリにACLを再適用するスクリプトがあります。ただし、グループへの書き込み権限を開く副作用がありますが、これは説明できません。各文の前後の権限を確認し、スクリプト内の特定の文の一つに原因を絞り込んだ。

root@kompir:/tmp/perms# nl /apply-sec 
     1  #!/bin/bash
       
     2  targetbase=$1
     3  [ -z "$targetbase" ] && exit
     4  [ ! -d $targetbase ] && exit
     5  #set -x
       
     6  check_base() {
     7          # Debugging function - call it to view the current ACL and mode bits
     8          getfacl $targetbase
     9          ls -ld $targetbase
    10          echo ---------------------------------------------
    11  }
       
       
    12  # Remove any ACLs
    13  setfacl -R -b $targetbase
       
    14  # Set basic permissions
    15  chown -R owner $targetbase
    16  find $targetbase -type d -exec chmod 2755 {} \;
    17  find $targetbase -type f -exec chmod 644 {} \;
       
       
    18  # Set Default Mask
    19  setfacl -d -m m:rwx $targetbase
       
    20  # User1 with Default
    21  check_base
    22  setfacl -m u:user1:rwx $targetbase
    23  check_base
    24  setfacl -d -m u:user1:rwx $targetbase
       
    25  # User2 with Default
    26  setfacl -m u:user2:r-x $targetbase
    27  setfacl -d -m u:user2:r-x $targetbase
       
    28  # Apply recursively
    29  getfacl $targetbase | setfacl -R -M- $targetbase

22行目のステートメントはグループ書き込みモードビットをオンにします(16行目ではビットがオフになっています)。

テスト目的で生成されたいくつかのサンプルディレクトリを使用して、スクリプトの出力を以下に示します。

root@kompir:/tmp/perms# /apply-sec perms1/
# file: perms1/
# owner: owner
# group: root
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:mask::rwx
default:other::r-x

drwxr-sr-x+ 4 owner root 4096 Jun  9 09:20 perms1/
---------------------------------------------
# file: perms1/
# owner: owner
# group: root
# flags: -s-
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:mask::rwx
default:other::r-x

drwxrwsr-x+ 4 owner root 4096 Jun  9 09:20 perms1/
---------------------------------------------

デバッグ関数が表示モードで2番目に呼び出されると、グループ書き込み権限が再びオンになります。

なぜこれが起こり、これは予想される動作ですか?避けられますか?

ベストアンサー1

デバッグ関数が表示モードで2番目に呼び出されると、グループ書き込み権限が再びオンになります。

これは本当ではありません。得られる結果を見てください。

# file: perms1/
[...]
group::r-x

出力に表示されるのは、lsグループ権限ではなく、指定されたユーザーおよびグループACLエントリが付与できる権限を制限するACLマスクです。

よりacl(5)マニュアルページ。以前の答えには長い説明があります。 touch / mkdirがデフォルトのACLを無視しているようです。

おすすめ記事