Linux
執行另一個組的命令
在 Linux 中,我有以下內容
id
:uid=1005(username) gid=1005(username) groups=1005(username),33(www-data),1002(git)
我想將我的有效 gid 更改為,
git
以便我創建的所有內容都屬於gid
組。例如touch testfile
給owner=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/bash
為username: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