Linux
為一個命令修改組
我想執行一個命令,並且我希望它使用我所屬的特定組名執行,但這不是我的預設組。所以創建的所有文件都屬於該組。有這個命令嗎?
之後有
chgrp
修復它。然後我發現
newgrp
(為每個登錄會話更改我的預設主 GID),但這會創建一個子外殼。因此,onelinernewgroup <groupname> && cmd
不起作用。並且外殼需要稍後關閉。這兩種方法看起來都容易出錯。
該命令
sg
可用於此目的。引用
man sg
sg [-] [group [-c ] command]
該
sg
命令的工作方式類似於newgrp
但接受命令。該命令將使用/bin/sh
shell 執行。對於您可能執行的大多數 shellsg
,您需要將多字命令括在引號中。newgrp
和之間的另一個區別sg
是,某些 shell 會進行newgrp
特殊處理,將自己替換為newgrp
創建的 shell 的新實例。不會發生這種情況sg
,因此在退出sg
命令後,您將返回到之前的組 ID。如果要更改腳本中多個命令的 GID
bash
,請將腳本一分為二,然後呼叫第二個腳本,sg
或者讓腳本呼叫自身,sg
並使用一些參數來避免無休止的遞歸。在 Python 中,可能還有其他使用
setgit
系統呼叫的方法。