2009-08-24 110 views

回答

8

newgrp(1)

+0

我是該組的成員,那麼爲什麼它要求我輸入密碼?它不喜歡我的密碼! – Michael 2013-02-12 04:25:15

+0

另外,如果我運行「newgrp 」作爲根(例如使用sudo在其中運行帶有newgrp的腳本),它會將我轉儲到根shell中。 – Michael 2013-02-12 04:28:39

+0

這不是newgrp應該使用的。如果您忘記在腳本之外使用newgrp,會發生什麼情況?腳本如何處理newgrp創建的新shell。 @ mark40的回答比較好。 – noel 2013-05-20 12:53:57

156

有幾個方法可以做到這一點:

  1. 您可以通過設置setgid標記的更改特定 目錄中創建的所有文件默認組目錄(chmod g+s _dir_)。 然後使用 目錄組(使用chgrp <group> <dir>設置)創建目錄中的新文件。這適用於在目錄中創建文件的任何程序 。

    注意,這是自動繼承新的子目錄(如 的Linux 3.10的),但是,如果子目錄已經存在,這種變化 不會應用到他們(使用的是-R標誌)。

  2. 如果沒有設置setgid標誌,那麼默認組將被設置爲當前創建進程的 組標識。雖然這可以使用命令newgrp 命令來設置,但它會創建一個在shell 腳本中難以使用的新shell。如果要使用更改的組執行特定命令(或一組命令) ,請使用命令sg <group> <command>

    sg不是POSIX標準命令,但可在Linux上使用。

+5

只是一個小紙條。如果你嘗試在一個具有y組的目錄下運行'chmod g + s _dir_',並且你在用戶x下運行命令,並且用戶x不是組y的成員,它就不會工作。你必須以root身份運行它。 – LEDfan 2016-04-13 07:12:34