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権限がある場合は、新しいグループとしてシェルを実行できます
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を使用して、現在のシェルをgitグループとして実行されているシェルに置き換えることもできます。
exec Sudo -g git /bin/bash
グローバルに、ユーザーのプライマリグループを変更せずに行うことはできません。
ただし、ディレクトリごとに、これはディレクトリのsetgidビットを設定し、そのディレクトリを正しいグループにchown
ingすることで簡単に実現できます。
上記のディレクトリの下に作成されたものはすべて、それを作成したユーザーに関係なく、gidを継承します。