更改用户的主要组 - 在该组中创建新文件

Huc*_*kle 6 permissions users

我正在设置一个环境,在该环境中我在我的服务器上为多个用户提供 SSH 访问权限。它们都是受信任的,但我想将它们集中到文件系统的一部分中。我像这样创建了用户:

adduser username -ingroup groupname
Run Code Online (Sandbox Code Playgroud)

效果很好。当我以其中之一的身份登录时,我可以执行此操作并获得所有正确答案:

$id -r -u -n
username
$id -r -g -n
groupname
Run Code Online (Sandbox Code Playgroud)

groupname通过这样做将我自己的用户帐户的主要组切换到:

$usermod myuser groupname
Run Code Online (Sandbox Code Playgroud)

然后我注销并重新登录。现在我希望该组能够访问的文件在这里:

$ls -l / | grep groupname
drwxr-xr-x  3 root     groupname    4.0K 2012-03-26 20:20 groupfiles
$cd /groupfiles
$ls -l 
drwxrwxr-x  2 root groupname    4.0K 2012-03-26 20:32 project
Run Code Online (Sandbox Code Playgroud)

权限是设计的,组成员不能更改下的文件/文件夹,/groupfiles但他们可以添加、编辑和删除下/groupfiles/project

我遇到的问题是,当我这样做时,我得到了错误的组:

$touch test
$ls -l test
-rw-rw-r-- 1 myuser myuser 0 2012-03-26 20:58 test
$id -r -g -n
groupname
Run Code Online (Sandbox Code Playgroud)

我需要这样做,以便 vim、touch 等创建的文件具有正确的组。我知道newgrp()setgid位。这些不是我要找的。这适用于我创建的新用户,但不适用于我的用户。我不确定发生了什么,但它现在工作正常。我只是把这个问题留在这里给未来的修补匠。

Pan*_*her 12

我猜你想要的行为是sudo usermod -g groupname myuser.

注意:该命令会更改 $HOME 中所有文件的组所有权,但不会更改 home 之外的所有文件。您可能希望将它们改回chgrp -R myuser $HOME

然后,您需要注销并重新登录以使更改生效。

如果您不想更改您的 'myuser' 主要组,那么 newgrp 是您要走的路。

sudo usermod -g admin bodhi

ssh localhost

touch file

newgrp bodhi
touch file2

ls -l file file2
-rw-r--r-- 1 bodhi admin 0 2012-03-26 19:28 file
-rw-r--r-- 1 bodhi bodhi 0 2012-03-26 19:29 file2
Run Code Online (Sandbox Code Playgroud)