问题

问题

我登录在“achille”下,achille 属于 2 个组:

groups achille 
achille: achille users 

我想将文件“tree.test”的组所有者更改为组“users”

ls -l tree.test
-rw-r--r--. 1 achille achille 2512881 Dec  1 11:53 tree.test

我可以完全控制我的主目录:

ls -ld $HOME
drwx------. 15 achille achille 4096 Dec 10 11:51 /home/achille

我尝试:

chown :users tree.test
chown: changing group of 'tree.test': Operation not permitted

我尝试:

chgrp users tree.test
chgrp: changing group of 'tree.test': Operation not permitted

好的,所以我决定将“用户”组作为主要组

usermod 命令可供 achille 使用,所以我使用它(对吗?):

usermod -g users achille

usermod: Permission denied.

usermod: cannot lock /etc/passwd; try again later

我以 root 身份登录来执行此操作(更改主要组)

su - 

password:

然后

usermod -g users achille

并检查一下:

id -gn achille 
users

然后 ctrl + D 重新登录到 achille

该文件最终属于组“用户”,但结果很糟糕,因为我的主目录和其中的所有文件/目录也属于组用户。

我终于找到了一种使用 newgrp 命令的方法(无需以 root 身份登录):

newgrp users

id -gn 

users

touch file0

file0 将把用户作为组所有者

但看起来只要 achille 属于您想要更改的组,newgrp 就可以工作,否则您会收到以下错误消息:

newgrp games 

Password: (what password to put here?)

newgrp: failed to crypt password with previous salt: Invalid argument ????

所以现在我只是想知道(并询问),chgrp,chown,usermod 是否值得保留在非特权用户的工具包中。谢谢大家!

答案1

大概是这个

问题

当您将用户添加到新组时,它只是将一些数据写入磁盘上的配置文件。现有流程没有改变。

如何解决问题。

您可以注销并再次登录,或者使用newgrp添加的新组来创建一个新的 shell 进程(这通过读取文件中的数据进行权限检查,然后在新进程中启动一个新的 shell,并添加新组)添加到组中)。

答案2

我想知道你到底在寻找什么。如果您想要测试 chown/chgrp 操作,您可以使用命名空间从用户空间创建一个chroot监狱,然后在该监狱内启动特权进程,创建新用户和您需要的任何其他内容。

您还可以使用fakechroot为了同样的目的;在同一个问题中提到了这一点。

相关内容