Permissions

儘管有 775 個權限,但組的所有者和成員的寫入行為不同

  • April 5, 2019

我使用以下行通過我的 fstab 安裝了遠端共享:

//path/to/target /media/f cifs gid=<mygroup's id>,dir_mode=0775,file_mode=0775 0 0

結果,所有內容/media/f最終都具有如下所示的權限:

$ ls -al
drwxrwxr-x 0 root mygroup ...

我已經讓使用者www-data成為. 但是,它不起作用。我得到許可錯誤。mygroup``/media/f

為了解決這個問題,我更改了掛載行以設置and以便gid掛載uid點具有 userwww-data和 group mygroup。所以現在我的掛載點如下所示:

$ ls -al
drwxrwxr-x 0 www-data mygroup ...

一切正常。

問題:為什麼我的 webapp 能夠/media/f在該文件夾歸其所有時寫入,www-data:mygroup但在它歸其所有時卻不能寫入root:mygroup(知道它www-datamygroup?

我曾嘗試重新安裝和重新啟動,以期讓www-data(使用者)的成員資格成為mygroup“堅持”的組,但它只是不起作用。

奇怪的是,當設置root:mygroup所有權時,如果我sudo su www-data然後嘗試/media/f從終端寫入,一切正常。知道那裡發生了什麼嗎?就好像uwsgi執行 django 的程序並沒有真正以我試圖授予的全部權限執行www-data

想法?

事實證明,這對於上述上下文來說是非常具體的。我正在使用 uWSGI 以皇帝模式為我的網站提供服務。我設置了參數uid=www-datagid=www-data. 我希望這會導致我的附庸程序擁有與使用者和組相關聯的權限www-data ,以及www-data與(使用者)所屬的任何組相關聯的權限。這個假設是不正確的。封臣不會(預設情況下)使用任何補充組 ID 執行。

事實證明 uWSGI(在最近的版本中)對此進行了修復。add-gid=mygroup您可以在 uWSGI 配置中手動指定。您可以多次指定此參數,以根據您的意願將盡可能多的 gid 添加到 vassal 程序。此功能僅在 uWSGI 1.9.15 中可用,因此您可能需要升級才能使用此方法。

完整的文章在這裡

引用自:https://unix.stackexchange.com/questions/171504