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
新しいディレクトリを作成できます770
か750
?新しいファイルを作成すると、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