Linux

執行另一個組的命令

  • July 24, 2012

在 Linux 中,我有以下內容id

uid=1005(username) gid=1005(username) groups=1005(username),33(www-data),1002(git)

我想將我的有效 gid 更改為,git以便我創建的所有內容都屬於gid組。例如touch testfileowner=username group=git

如何?

您可以使用newgrp 命令更改目前組 :

~$ id
uid=1000(bas) gid=1000(bas) groups=1000(bas),24(cdrom)
~$ newgrp - cdrom
~$ id
uid=1000(bas) gid=24(cdrom) groups=1000(bas),24(cdrom)
~$ touch foo && ls -l foo
-rw-r--r-- 1 bas cdrom 0 Jul 24 13:58 foo

組可以被鎖定或有密碼。有關更多詳細資訊,請參見手冊頁。

man newgrp

如果您有合適的 sudo 權限,您可以將 shell 作為新組執行

username    ALL=(:git) /bin/bash

這允許使用者名執行/bin/bashusername:git

id
uid=1005(test) gid=1005(test) groups=1005(test)

touch testfile
ls -l testfile
-rw-rw-r-- 1 test test 0 Jul 24 11:19 testfile

sudo -g git /bin/bash
id
uid=1005(test) gid=1003(git) groups=1005(test)
rm testfile
touch testfile
-rw-r--r-- 1 test git 0 Jul 24 11:21 testfile

您甚至可以使用 exec 將目前的 shell 替換為作為 git 組執行的 shell

exec sudo -g git /bin/bash

引用自:https://serverfault.com/questions/410577