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

Aclの動作を説明できませんか?

つまり、これは状況です。
Web開発者向けのサーバーを入手しました。多くの開発者がいます。すべてのdevelopers + PHP + Apache wwwに属しています グループ。開発ディレクトリがあります–development

目標は、development内のすべてのファイルです ディレクトリには755があります 権限と、開発者が作成するたびに、developmentでファイルを変更します ディレクトリ、ファイルにはまだ755があります 。

だから私はいくつかのaclを読みました チュートリアル、ガイド、ハウツーですが、それでも希望する結果が得られません。

  1. 私のディスクはaclでマウントされています
  2. chown -R www:www developmentを取得しました
  3. chmod g+s developmentを追加しました
  4. aclの数を設定しました developmentに関するルール ディレクトリとこれを取得しました:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. ACLの私の考えによると 、ディレクトリにそのようなルールがある場合、私のタスクは達成されるはずですが、developmentでファイルを作成しようとすると dir、私は得る:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

なぜrw-が作成されるのか理解できないようです 代わりにrwx

おそらく、私が見逃した単純なものか、理解できない一般的な概念です。

承認された回答:

デフォルトのACLは、 defaultではないことを指定するumaskを置き換えます。 権限、ただし最大 新しいファイルを作成するための権限。この場合、rwxrwxr-x

次に、アプリケーションはopenを呼び出します またはcreat 必要な権限で。ほぼすべてのアプリケーションがrw-rw-rw-を要求します ファイル用。

これは、straceを実行することで確認できます。 、例:

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

0666 rw-rw-rw-と同じです 。)

2つの権限は、ビットごとのANDを使用して結合され、rw-rw-r--を提供します。 。

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

別の説明については、POSIXアクセス制御リスト—「デフォルトのACLの例」を参照してください。

したがって、本当の問題は、ファイルを実行可能にする必要があるのはなぜですか?


Linux
  1. setfacl:コマンドが見つかりません

  2. ファイルの存在を確認し、存在しない場合はコマンドを実行するにはどうすればよいですか?

  3. read(2) は EOF でないときにゼロを返すことができますか?

  1. PostgreSQL がインストールされているかどうかを Linux スクリプトで確認するにはどうすればよいですか?

  2. Linux でファイルを永続的に読み取り専用にして、root でも編集できないようにするにはどうすればよいですか?

  3. set -e オプションが有効かどうかはどうすればわかりますか?

  1. ユーザーが読み取れないファイルを見つけますか?

  2. #ln -s :target はディレクトリではありません。

  3. crontab が機能しないのはなぜですか? どうすればトラブルシューティングできますか?