Linux
正確的 WWW 數據權限
我不斷回到完美的基於網路的權限,我已經通過幾種方式做到了。這篇文章並不復雜,因為它有點長,我想提供一些範例。
我進行了廣泛的搜尋,但我想知道是否有事實上的標準。感謝您的時間。
問:任何人都可以根據下面的基本許可目標告訴我最好的方法嗎?
- 許可目標:
- 預防
0777
模式- 預設組
www-data
是粘性的- 預設使用者
myself
是棒*(如果可能,我認為 setfacl 中不存在預設使用者)*- 懸崖筆記
- 使用:
Ubuntu 16.04
和16.10
(目前的桌面版本)$ chmod g + rws
我已經設置了這個,我想知道為什麼這會突出我的文件為橙色,這與我有關。目標是將目前和新文件保留為
www-data
.sudo chgrp -R www-data /var/www sudo chmod -R g+rws /var/www # <-- s or S?
以上大部分情況下都有效,但我讀過它不好用,為什麼?所以我嘗試了
setfacl
。$ setfacl
在這裡 I
setfacl
,問題是它會+x
為使用者製作所有目前文件,我不希望這樣。# For Current Files | User/Group sudo setfacl -Rm u:myself:rwx /var/www sudo setfacl -Rm g:ww-data:rwx /var/www # For Future Files | User/Group sudo setfacl -Rmd u:myself:rwx /var/www sudo setfacl -Rm g:www-data:rwx /var/www
.bashrc setfacl 文件/目錄分別
所以我有一個瘋狂的想法是製作一個
.bashrc
函式它還不完全正確,但你明白了。function facl_file() { echo "(+) Set ACL for $USER:www-data rw [Files Only, Persist]" # Files cannot have defaults -d permissions while IFS= read -r -d $'\0' file; do echo " Setting $file" # Default Mode: RW mode="rw" # If Executable, Add RWX if [[ -x "$file" ]]; then mode="rwx" fi sudo setfacl -m u:$USER:$mode $file sudo setfacl -m g:www-data:$mode $file done < <(find $CREATE -type f -print0) echo "(+) Done with Files" } function facl_dir() { echo "(+) Set ACL for $USER:www-data rwx [Directories Only, Persist]" while IFS= read -r -d $'\0' dir; do echo " Setting $dir" sudo setfacl -m u:$USER:rwx $dir sudo setfacl -dm u:$USER:rwx $dir sudo setfacl -m g:www-data:rwx $dir sudo setfacl -dm g:www-data:rwx $dir done < <(find $CREATE -type d -print0) echo "(+) Done with Directories" }
上面的目標是防止
Directories
失去+x
,並防止不是+x
它的文件。如果我在這方面走錯了路,任何建議都將不勝感激。我似乎找不到合適的“粘性標準”。
我沒有意識到這篇文章還在這裡,所以我會回答我自己的問題。嘗試使用
X
而不是x
. 我會先用一個測試文件夾來做:cd ~; mkdir test; touch test/{default,run.sh};chmod +x test/run.sh # Ensure this fellow is in here! sudo usermod -aG www-data $USER sudo setfacl -R -m g:www-data:rwX ~/test sudo setfacl -Rd -m g:www-data:rwX ~/test sudo getfacl ~/test
這將設置保留文件夾 x 和 run.sh x - 唯一可見的更改是末尾的 +,如下所示:
-rwxrwxr-x+
- 這只是意味著它已設置 addtl `facl。希望這可以幫助。