GNU/Linux >> Linux の 問題 >  >> Linux

umask は ACL にどのように影響しますか?

Linux での ACL と MASK というタイトルのこの例を見つけました。この記事では、ACL と umask がどのように機能するかを理解するのに役立つと思われる次の例を示します。

背景

Linux システムでファイルが作成されると、デフォルトのパーミッション 0666 が適用されますが、ディレクトリが作成されると、デフォルトのアクセス許可 0777 が適用されます 適用されます。

例 1 - ファイル

umask を 077 に設定してファイルにアクセスするとします。 strace を使用できます これを行ったときに実際に何が起こっているかを確認するには:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

この例では、システム コール open() が表示されます。 パーミッション 0666 で作成されますが、 umask 077 の場合 その後、カーネルによって適用され、次のパーミッションが削除されます (---rwxrwx ) そして rw------- が残ります 別名0600。

例 - 2 つのディレクトリ

デフォルトのパーミッションが 0666 ではなく 0777 であることを除いて、同じ概念をディレクトリに適用できます。

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

今回は mkdir を使用しています 指図。 mkdir コマンドはシステムコール mkdir() を呼び出しました .上記の例では、 mkdirmkdir() というコマンド デフォルトのパーミッション 0777 を持つシステムコール (rwxrwxrwx )。今度は 022 の umask で 次の権限が削除されます (----w--w- )、つまり 0755 (rwxr-xr-x) が残ります。 ) ディレクトリが作成されたとき。

例 3 (デフォルト ACL の適用)

それでは、ディレクトリを作成し、デフォルトの ACL がその中のファイルとともに適用されるとどうなるかを示しましょう。

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

それでは、ファイル aclfile を作成しましょう。 :

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

新しく作成されたファイルの権限を取得します:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

マスク mask::rw- に注意してください . mask::rwx ではない理由 ディレクトリが作成されたときと同じように?

luvly を確認してください ログ ファイルを参照して、ファイルの作成に使用されたデフォルトのアクセス許可を確認してください:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

ここが少しややこしいところです。マスクを rwx に設定 ディレクトリが作成されたとき、ファイルの作成に対して同じ動作が期待されますが、そのようには機能しません。カーネルが open() を呼び出しているためです。 0666 のデフォルトの権限を持つ関数 .

要約

  • ファイルは実行許可を取得しません (マスキングまたは効果的)。 ACL、umask、または mask &ACL のどの方法を使用してもかまいません。
  • ディレクトリは実行権限を取得できますが、マスキング フィールドの設定によって異なります。
  • ACL パーミッション下にあるファイルに実行パーミッションを設定する唯一の方法は、chmod を使用して手動で設定することです .

参考文献

  • acl のマニュアル ページ

セキュリティ上の理由から、Linux オペレーティング システムでは、実行ビットを含むファイルの自動作成が許可されていません。これは、サイバー攻撃者がサーバーにアクセスした場合に、そのようなファイルにプログラムを書き込んで実行するのを防ぐためです.あくまで安全対策です。 chmod ユーティリティでファイルを作成した後、ファイルに実行ビットを手動で設定する必要があります


Linux
  1. Fat32ドライブのファイルパーミッションを変更するには??

  2. 使用中のファイルを移動 -- どのように機能するのか?

  3. ファイル権限はシンボリックリンクにどのように適用されますか?

  1. Linux で Umask が初期ファイル/ディレクトリのアクセス許可を制御する方法を理解する

  2. rm はどのように機能しますか? rm は何をしますか?

  3. ファイル内で \n を grep する方法

  1. Laravelファイルのパーミッションを正しく設定する方法

  2. cPanelファイルマネージャーでファイルのアクセス許可を変更する方法

  3. ACL はファイルの有効なアクセス許可をどのように計算しますか?