setfaclを使用してサブファイル/ディレクトリが持つ必要がある権限を管理するときは、何らかの理由でファイルに実行( "x")権限を除くすべての権限があります。
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ getfacl .
# file: .
# owner: someuser
# group: webs
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ touch file
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ mkdir dir
someuser@someuser-MS-7816:/opt/lampp/htdocs/project$ ls -l
total 4
drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir
-rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file
私はこれがumaskに関連していると思いますが、私が何かを見逃していない限り、さまざまな方法で変更すると、決して期待した結果が得られません。
この問題をどのように解決しますか?
ベストアンサー1
ホクラキンの答え次のように教えてください。
cp
cpio
およびファイル(例えば、など)をコピーまたは再生成する関連プログラムtar
。新しいファイルを元のファイルと同じモードに設定(試行)します。- バイナリ実行可能ファイルを生成するコンパイラはモード777を指定します(少なくともコンパイルが成功した場合)、ユーザーは実際にコンパイルしたプログラムを実行できます。
ファイルまたはディレクトリを生成するすべてのプログラムは、ファイルに付与するモード(権限)を指定します。これはほとんど常にCプログラム(または使用される言語)にハードコードされており、ユーザーに直接アクセスできることはほとんどありません。その後、umask
値とデフォルトのACLは許可ビットをオフにできますが、追加することはできません。
問題は、mkdir
モードが777(rwxrwxrwx
)で指定されているのに、ファイルを生成するほとんどすべてのプログラムが666()で指定されていることですrw-rw-rw-
。これにはtouch
、シェル(例:I / Oリダイレクト用)、エディタ(、、など...)などが含まれます。したがって、ACL をどのように使用しても、通常のファイルが生成された直後(これらのプログラムで)ファイルに対する権限を取得することはできません。ファイルを生成してから生成する必要があります。program > file
vi
vim
emacs
dd
split
rwxrwxrwx
chmod
このルールにはいくつかの例外があります。