![アーカイブから抽出したファイルに親フォルダの権限を継承させる方法](https://rvso.com/image/168786/%E3%82%A2%E3%83%BC%E3%82%AB%E3%82%A4%E3%83%96%E3%81%8B%E3%82%89%E6%8A%BD%E5%87%BA%E3%81%97%E3%81%9F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E8%A6%AA%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%A8%A9%E9%99%90%E3%82%92%E7%B6%99%E6%89%BF%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95.png)
Centos 8 Linux を使用しています。複数のユーザーが同じグループに属し、同じ FS (xfs) 内の多数のフォルダー/サブフォルダーとファイルにアクセスしています。すべてのファイルとフォルダーにグループの書き込み権限を持たせ、umask を 0002 に設定して、ユーザーが作成した新しいファイルに適切な権限を持たせたいのですが、tar やその他の圧縮ファイルをユーザーが抽出すると、抽出されたファイルは元の権限を維持し、変更されないため、一部のファイルは所有者のみに対して権限を持ち、グループに対して権限を持たないことになります。ユーザーが chmod を実行してグループの書き込みを許可する必要なく、権限を自動的に設定する方法を探しています。メイン フォルダーに g+s を割り当てようとしましたが、新しいフォルダーはグループ権限のみを継承でき、個々のファイルは継承できません。ACL を有効にしてみましたが、やはりファイルが親フォルダー権限を継承できません。メイン フォルダーはこのように見えます
drwxrwsr-x+ 4 owner group 4.0K Mar 6 10:26 test
そして、その中のtgzファイルを抽出した後の内容
drwxrwsr-x+ 8 owner group 202 Mar 6 09:56 folder1
drwxrwsr-x+ 8 owner group 202 Mar 6 10:12 folder2
しかし、ファイルのある最初のフォルダに到達すると、ファイルの権限は所有者のみになります
ll test/folder1
-rwx------. 1 owner group 195K Jun 6 2018 file1
-rwx------. 1 owner group 225K Aug 4 2018 file2
-rwx------. 1 owner group 211K Aug 20 2018 file3
-rwx------. 1 owner group 100K Sep 9 2018 file4
-rwx------. 1 owner group 200K Oct 24 2018 file5
-rwx------. 1 owner group 199K Nov 9 2018 file6
実行後でも
setfacl -R -m d:o:rwx test
ファイルの権限が変更されない
圧縮アーカイブから作成または抽出されたすべてのファイルに、メイン フォルダーからのアクセス許可を強制的に継承させる方法はありますか?
答え1
まだより良い解決策を探していますが、今のところはtar出力をchmodコマンドにパイプするスクリプトを作成しました。
#!/bin/bash -
set -o pipefail
tar xvf "$@" | xargs -rd '\n' chmod 770 --
100人以上のユーザーに別のコマンドを使用するように指示するのは面倒なので、あまり好きではありませんが、より良い解決策が見つからない場合はこれを保持します。マニュアルページからの情報として、tarにはファイル権限を無視するオプションがあるようです。
--no-same-permissions
しかし、umask 権限が抽出されたファイルのものよりも制限されている場合にのみ機能するようです。バグなのだろうか。
答え2
あなたはstar
の実装tar
-chmod
抽出時にファイルの権限を設定するオプション:
star -x -o -f file.tar -find -chmod ug+rwX