setfaclを使用して、子ファイル/ディレクトリに必要なアクセス許可を管理する場合、何らかの理由で、ファイルには実行( "x")以外のすべてのアクセス許可があります。
[email protected]:/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
[email protected]:/opt/lampp/htdocs/project$ touch file
[email protected]:/opt/lampp/htdocs/project$ mkdir dir
[email protected]:/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と関係があると思いましたが、さまざまな方法で変更しても、何かが足りない場合を除いて、期待どおりの結果が得られることはありません。
これはどのように修正できますか?
承認された回答:
Hauke Lagingの答えは、次のように言おうとしています。
-
cp
および関連するプログラム(例:cpio
、tar
など)
ファイルをコピーまたは再作成します。
これにより、新しいファイルが元のファイルと同じモードに
設定されます。 - バイナリ実行可能ファイルを作成するコンパイラは、777のモードを指定します(少なくとも、コンパイルが成功した場合)。
これにより、ユーザーはコンパイルしたばかりのプログラムを実際に実行できるようになります。
ファイルまたはディレクトリを作成するプログラムは、そのファイルに持たせたいモード(権限)
を指定します。
これは、ほとんどの場合、Cプログラムでハードコーディングされています
(または使用されている言語)
であり、ユーザーが直接アクセスすることはほとんどありません。
次に、umask
値とデフォルトのACLは、許可ビットをオフにすることができますが、
追加することはできません。
あなたの問題は、mkdir
777のモードを指定します(rwxrwxrwx
)、
ファイルを作成するほとんどすべてのプログラムは666(rw-rw-rw-
)。
これにはtouch
が含まれます 、シェル
(I / Oリダイレクト用。例:program > file
)、
編集者(vi
、vim
、emacs
、など…)、dd
、split
、 等々。
したがって、rwxrwxrwx
の権限は取得されません プレーンファイルでは、
作成直後(これらのプログラムのいずれかによる)、
ACLで何をするかに関係なく、
ファイルを作成してから、chmod
を作成する必要があります。
このルールにはいくつかの例外があります:
Linux – Linuxオーバーレイ(overlayfs)マウントで、変更を上位ファイルシステムから下位ファイルシステムにマージしますか?
Linux – Linuxは、物理的にインストールしたメモリよりも多くのメモリと少ないメモリの両方を表示するのはなぜですか?