儘管有 775 個權限,但組的所有者和成員的寫入行為不同
我使用以下行通過我的 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
和 groupmygroup
。所以現在我的掛載點如下所示:$ ls -al drwxrwxr-x 0 www-data mygroup ...
一切正常。
問題:為什麼我的 webapp 能夠
/media/f
在該文件夾歸其所有時寫入,www-data:mygroup
但在它歸其所有時卻不能寫入root:mygroup
(知道它www-data
是mygroup
?我曾嘗試重新安裝和重新啟動,以期讓
www-data
(使用者)的成員資格成為mygroup
“堅持”的組,但它只是不起作用。奇怪的是,當設置
root:mygroup
所有權時,如果我sudo su www-data
然後嘗試/media/f
從終端寫入,一切正常。知道那裡發生了什麼嗎?就好像uwsgi
執行 django 的程序並沒有真正以我試圖授予的全部權限執行www-data
。想法?
事實證明,這對於上述上下文來說是非常具體的。我正在使用 uWSGI 以皇帝模式為我的網站提供服務。我設置了參數
uid=www-data
和gid=www-data
. 我希望這會導致我的附庸程序擁有與使用者和組相關聯的權限www-data
,以及www-data
與(使用者)所屬的任何組相關聯的權限。這個假設是不正確的。封臣不會(預設情況下)使用任何補充組 ID 執行。事實證明 uWSGI(在最近的版本中)對此進行了修復。
add-gid=mygroup
您可以在 uWSGI 配置中手動指定。您可以多次指定此參數,以根據您的意願將盡可能多的 gid 添加到 vassal 程序。此功能僅在 uWSGI 1.9.15 中可用,因此您可能需要升級才能使用此方法。完整的文章在這裡。