我登录在“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
为了同样的目的;在同一个问题中提到了这一点。