Linux

chmod 不粘

  • August 31, 2012

我在虛擬專用伺服器上使用 CentOS。

當我以 root 身份進入並更改文件夾的 chmod 值時,它可以工作。但是,我放入該文件夾的任何文件都不會繼承我設置的 chmod。

這是我使用的:

chmod -Rv 777 files

回報是這樣的:

mode of `files' retained as 0777 (rwxrwxrwx)
mode of `files/1344188366-f7cad6aa87685db775817d4168c329ef-AUTO_INSURANCE2.csv'
changed to 0777 (rwxrwxrwx)

好的,因此更改了一個文件。但是,如果我將任何文件放入該文件夾,它們將具有不同的 chmod 值。如何使 chmod 與該目錄中的每個文件和文件夾保持一致?

我希望將預設 chmod 設置為的文件正在通過 XHR 上傳。IE 從瀏覽器到伺服器的文件上傳過程。

如何在我的 PHP 中設置應用程式碼的 chmod 級別?

編輯

我想我已經找到了解決問題的合理方法。下面的答案解決了文件權限問題。但是get_current_user()在 php 中執行後,我意識到執行腳本的使用者與我正在嘗試處理的文件的使用者不同。文件使用者是 apache,因為那是它的創建者。但是PHP腳本是一個不同的使用者,預設使用者。

您需要改為修改umask。這可以按使用者(in ~/.profile)或系統範圍(ie /etc/profile)定義。

此處提供了此概念和案例的詳細說明

此處提供了取消屏蔽和八進制權限的更詳細細分。

編輯:

您的具體問題是如何設置通過 Apache 通過 PHP 上傳的文件的權限。相同的概念也umask適用,只是需要在正確的位置進行定義。在典型的 Apache 安裝中,該位置將是環境變數文件;envvars在某些發行版上。/etc/sysconfig/httpd在 RHEL/CentOS 上。

另請參閱:如何覆蓋 Apache/PHP 在 /tmp 中儲存的文件的預設權限?

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