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

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

我正在设置一个环境,其中我为我的服务器上的几个用户提供 SSH 访问权限。他们都是受信任的,但我想将他们限制在文件系统的某个部分中。我按如下方式创建用户:

adduser username -ingroup groupname

效果很好。当我以其中一个用户的身份登录时,我可以这样做并获得所有正确答案:

$id -r -u -n
username
$id -r -g -n
groupname

groupname我通过执行以下操作将我自己的用户帐户的主要组切换为:

$usermod myuser groupname

然后我注销并重新登录。现在我希望组能够访问的文件位于此处:

$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

权限是设计使然,组成员无法更改文件/文件夹,/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

我需要确保 vim、touch 等创建的文件具有正确的组。我知道newgrp()这些setgid位。这些是不是我正在寻找什么。这对我创建的新用户来说很好,但对我的用户却不起作用。我不确定发生了什么,但现在它工作正常。我只是把这个问题留在这里,供未来的修补者参考。

答案1

我猜你想要的行为是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

相关内容