Linux

正確的 WWW 數據權限

  • December 12, 2018

我不斷回到完美的基於網路的權限,我已經通過幾種方式做到了。這篇文章並不復雜,因為它有點長,我想提供一些範例。

我進行了廣泛的搜尋,但我想知道是否有事實上的標準。感謝您的時間。

問:任何人都可以根據下面的基本許可目標告訴我最好的方法嗎?

  • 許可目標:
    • 預防0777模式
    • 預設組www-data是粘性的
    • 預設使用者myself是棒*(如果可能,我認為 setfacl 中不存在預設使用者)*
  • 懸崖筆記
    • 使用:Ubuntu 16.0416.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。

希望這可以幫助。

引用自:https://serverfault.com/questions/847803