題 Linux組權限未正確執行。


我正在運行Ubuntu 10.04服務器,並且對用戶/組有一些非常反直覺的體驗。例如:

sudo touch test_file                    # create empty file

sudo groupadd test                      # create 'test' group

sudo chown root:test test_file          # change group of file to 'test'

sudo chmod g+rwx test_file              # give write permissions to group

sudo usermod -a -G test {my-user}       # add my user to 'test' group

touch test_file                         # touch the file as my current user

最後一行產生權限錯誤。

我確保我的用戶是“測試”組的一部分(groups {my-user} 證實了這一點)。 test_file組也明確設置為'test',並設置組權限。

為什麼我的用戶不能寫入文件測試文件?


18
2017-07-27 18:32


起源




答案:


將用戶添加到新組時,該組不會應用於當前正在運行的任何進程,只會應用於新進程。您需要註銷然後重新登錄。


28
2017-07-27 18:34



或黑客 su - username 進入你的運行控制台。你沒有必要註銷以這種方式登錄:) - matthias krull


註銷和重新啟動服務器方法對我來說都不起作用。

然而,這種方法對我有用:(參考這個 回答

chmod g+rwxs <parent folder>

4
2018-02-18 07:30



什麼是 +s 部分嗎?謝謝。 - tommy.carstensen
它設置setuid位。這允許文件作為文件的所有者運行。假設您有一個要以root用戶身份運行的文件,無論該人員正在運行該文件,您都要為該文件設置setuid位。 - Julius
關鍵是 x:看起來需要執行權限 touch 上班。 - antoine-sac


你可以使用 newgrp 用於更改用戶當前組ID的命令。從 man newgrp

newgrp命令用於在a期間更改當前組ID          登錄會話。如果是可選的 - 給出了標誌,用戶的環境          將重新初始化,就好像用戶已登錄,否則          當前環境,包括當前工作目錄,仍然存在          不變。


0
2017-07-27 18:54



這也有替換當前組的效果。這並不總是一個好主意。 - Daenyth
如果可以的話,我會貶低這一點。覆蓋群體在未來可能會非常令人沮喪...尤其是同 -R 選項! - Edward


重新啟動計算機以確保在註銷和登錄期間沒有卡住的進程阻止您的用戶和組正確執行。

這些步驟應該是您的組用戶 test 寫權限 test_file

sudo touch test_file 
sudo groupadd test
sudo chown root:test test_file
sudo chmod g+rwx test_file
sudo usermod -a -G test {my-user}

重新啟動計算機或執行用戶的操作系統註銷。終端重啟是不夠的。

touch test_file

用戶可以寫入該文件,因為它是“測試”組的一部分,並且該組具有權限rwx。


0
2017-11-18 23:10



不要求您必須重新啟動計算機。 - Kevin Panko