2014-04-02 44 views
0

我維護Web目錄:如何強制執行Web目錄的權限?

drwxrwsr-x 2 hendry www-data 57344 Apr 1 21:02 foobar/ 

我想我創建了一個「粘着位」(指正請)存在,以確保在該目錄中的文件-RW-RW-R--權限,但它不似乎沒有用。

有時在foobar /中創建的文件可能具有-rw-r-r--權限(缺少在www數據上寫入!)。我認爲這是因爲一些Web進程用該權限寫入文件。因此,如何確保文件始終具有-rw-rw-r--而不是進入所述Web應用程序(假設我無法做到這一點)並更改umask。

我想確保httpd進程始終可以在這些文件上運行。

回答

1

目錄上的setgid位只能確保目錄內創建的文件也由擁有該目錄的組擁有。它不會影響授予該組的權限(中間的三位)。

你需要的是覆蓋默認的權限位的目錄中創建的文件,即:

setfacl -m default:user:www-data:rwx foobar/ 

在foobar的ACL訪問控制列表/應該是這樣的:

foobar% getfacl . 
# file: . 
# owner: www-data 
# group: www-data 
user::rwx 
group::r-x 
other::r-x 
default:user::rwx 
default:group::r-x 
default:group:www-data:rwx 
default:mask::rwx 
default:other::r-x 

如果你用限制性的umask創建文件...

foobar% umask 
077 
foobar% touch foo 
foobar% ls -l 
total 0 
-rw-rw-r--+ 1 www-data www-data 0 Apr 2 11:18 foo 

請注意,有+第一列的末尾,表示ACL存在,您應該使用getfacl查看完整圖片。

foobar% getfacl foo 
# file: foo 
# owner: www-data 
# group: www-data 
user::rw- 
group::r-x      #effective:r-- 
group:www-data:rwx    #effective:rw- 
mask::rw- 
other::r--