Php
CentOS 7、SELinux、PHP、Apache:如何為目錄中的新文件或更新文件設置預設權限?
伺服器資訊:
CentOS Linux release 7.0.1406 (Core) PHP 5.4.16 (cli) (built: Sep 30 2014 09:44:39) SELinux enforcing Apache/2.4.6 (CentOS)
我的 PHP 腳本需要從主目錄中讀取文本文件。這些文件每 30 分鐘更新一次。(來自受信任的使用者)。
通常這些文件的權限設置為
-rw----r--.
所有者和組是來自上傳文件的使用者。現在有一種情況是其他人的讀取權限失去了。(我不知道為什麼..)並且 PHP 腳本無法讀取內容:
file_get_contents(/home/someuser/some_dir/subdir1/subdir2/file.txt): failed to open stream: Permission denied (2)
因為也缺少組讀取權限,所以我不能只將
apache
-user 添加到someuser
-group 中。我只需要確保隨時給予 apache 程序的讀取權限。
最好和最安全的方法是什麼?
也許設置
umask 173
到目錄或文件?
您可以使用 ACL(訪問控制列表)來設置額外的組權限,可以使用
setfacl
命令進行設置。例如:setfacl -dm g:apache:r /home/someuser/some_dir/subdir1/subdir2
當您
ls
對該目錄執行操作時,它會+
在權限旁邊顯示一個標誌,以指示已設置 ACL:$ ls -ld /home/someuser/some_dir/subdir1/subdir2 drwxrwxr-x+ 2 someuser somegroup 26 Oct 10 10:17 /home/someuser/some_dir/subdir1/subdir2
您可以使用該命令查看 ACL
getfacl
。$ getfacl home/someuser/some_dir/subdir1/subdir2 # file: home/someuser/some_dir/subdir1/subdir2 # owner: someuser # group: somegroup user::rwx group::rwx other::r-x default:user::rwx default:group::rwx default:group:apache:r-x default:mask::rwx default:other::r-x
然後當在那裡創建文件和目錄時,它們將繼承這些權限:
$ cd /home/someuser/some_dir/subdir1/subdir2 $ touch moo $ getfacl moo # file: moo # owner: someuser # group: somegroup user::rw- group::rwx #effective:rw- group:apache:r-x #effective:r-- mask::rw- other::r--
ACL 太棒了!我強烈建議您了解有關該主題的更多資訊: