Php

CentOS 7、SELinux、PHP、Apache:如何為目錄中的新文件或更新文件設置預設權限?

  • October 10, 2014

伺服器資訊:

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 太棒了!我強烈建議您了解有關該主題的更多資訊:

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