ACLが完全に機能するようにする

ACLが完全に機能するようにする

ACLと権限について多くの質問と回答があることを知っていますが、正直なところ、ACLはあまりにも弱く、一貫した理解ができません!整理されていない情報が混在しているのと同じです。

この質問でこの混乱が終わることを願っています。

質問:

私のUbuntu 14.04 Webサーバーで次のことをしたいと思います。

  • すべてのfiles/future_files権限を有効にします640
  • みんな許可をfolders/future_folders受けて750
  • そしてAdmin:www-data唯一基本所有者

私の解決策:

私はACLを使います:

setfacl -Rdm u:admin:rwX /path/to/parent //capital X apply for folders
setfacl -Rdm g:www-data:rX /path/to/parent
setfacl -Rdm o::- /path/to/parent 

もう今存在するファイルとフォルダは規則に正確に従います。

質問:

これでユーザーとしてログインしたので、admin新しいディレクトリを作成できます770750?新しいファイルを作成すると、640ではなく660が表示されますか?ルールを採用しませんか! ?


getfacl出力は次のとおりです。

# owner: admin
# group: www-data
# flags: ss-
user::rwx
group::r-x
other::---
default:user::rwx
default:user:admin:rwx
default:group::r-x
default:group:www-data:r-x
default:mask::rwx
default:other::---

ルール間に衝突があるようです!新しいルールを適用する前にすべてのACLを削除しましたが。

PS:以下のように1つのコマンドで組み合わせたことを覚えています。以前は働いていましたが…うまくいきません!

etfacl -Rdm u:admin:rwX,g:www-data:rwX,o::- /path/to/parent

正しいショートバージョンをご存知でしたら、お気軽にお知らせください:)

答え1

ついに解決策を見つけて、次のようにここで解決策を更新することを完全に忘れました。

1:すべての人の所有者を定義し、所有者グループを継承可能にします。

- sudo chown -R admin:www-data /var/www/html 
- sudo chmod g+s  /var/www/html (inherit owner group)

2:フォルダとファイルにデフォルトのアクセス許可を適用する(それぞれ750および640、デフォルトは保護されています)

- sudo chmod -R 750 /var/www/html
- sudo find /var/www/html -type f -print0 | sudo xargs -0 chmod 640 (apply for files only)

** repeat file permissions for each sub-directory

3: 書き込み可能なファイルとフォルダに対する権限を申請します。

- sudo chmod -R 770 /var/www/html/images
- sudo find /var/www/images -type f -print0 | sudo xargs -0 chmod 660

4: 自動継承規則 (ACL) 適用

- setfacl -Rdm u::rwX,g::rwX,o::- /path/to/parent  (Capital X only apply to directories)

5: ACL 確認:

- getfacl /var/www/html

これが質問に対する答えであることを願っています。

答え2

@Engineeroholicの回答を拡張できる問題と解決策

これは考えられる問題です。

$ whoami
admin
$ umask
0000

0000可能な値 - あなたが見ることができる値。どのように過ごすか教えてください。する望むより。

次のいずれかのオプションを使用して問題を解決してください。上記の問題が最終的にあなたの問題ではない場合でも、これはあなたの問題を解決する必要があると思います。

# option 1: one session
$ umask 0027

または( 、 を必ず追加してください>>。 より大きい記号で上書きしないでください。)

# option 2: system-wide, note that you might need /etc/bash.profile, 
#           /etc/bash.bashrc, or something else called at login
#           if your system doesn't have /etc/.profile

$ echo -e "\n\n##New folders 0750, new files 0640" >> /etc/.profile
$ echo "umask 0027" >> /etc/.profile
$ source /etc/.profile

または( 、 を必ず追加してください>>。 より大きい記号で上書きしないでください。)

# option3: for `admin` only. Make sure that you are writing to 
#          a file called at login, in case ~/.bashrc isn't 
#          called at that point.

$ echo -e "\n\n##New folders 0750, new files 0640" >> ~/.bashrc
$ echo "umask 0027" >> ~/.bashrc
$ source ~/.bashrc

これで、必要な権限でファイルを生成できます。

あなたは何人かの人々が「0770 - 0027 = 0750どこに0-7行ったのか」と描写することを得るでしょう0

より正確には、

   Octal1   Octal2   Binary1             Binary2
                       (    rwxrw---- )
      0770    0770         0111111000      0111111000
& NOT 0027  & 1750   & NOT 0000010111    & 1111101000
----------  ------   ----------------    ------------
      0750    0750         0111101000      0111101000
      ^                                 (   rwxr-x--- )
      |
      |
       `This one isn't really octal (I think.)

あなたのディレクトリに。

ファイルの場合:

  Octal     Binary1              Binary2
            (      rw-rw---- )
      0660        0110110000      0110110000
& NOT 0027  & NOT 0000010111    & 1111101000
----------    ----------------   ------------
      0640        0110100000      0110100000
                                (  rw-r----- )

バラよりここ詳細については。

この答えが明確になったのかわかりません。理由しかし、これが可能な解決策です。

問題になる可能性は低いですが、包含をに変更getfaclできdefault:mask::rwxます。default:mask::r-x

関連情報