集团所有权变更 - 陷阱

集团所有权变更 - 陷阱

我是用户user,我的主要组是user.如果我将主要组更改为primary_group,我拥有的所有文件突然都归primary_group.

这出乎我的意料。如果组user拥有一个文件并且我不更改文件所有权,则我不希望组所有权发生更改。

与此相关的其他常见陷阱还有哪些?


已编辑

我使用 更改了主要组usermod -g primary_group user。我检查了一下,这改变了整数标识符,这不仅仅是一个命名问题。

答案1

文件所有权(用户和组)基于数字而不是名字上的

如果您ls -n在文件上运行,那么您将看到代表的数字:

% ls -n $HOME/.profile
-rwx------ 1 500 500 2547 Mar  4 15:18 /home/sweh/.profile

请注意,Uid 为“500”,Gid 为“500”。这些是文件的真正所有者和组所有者。

/etc/passwd这些数字与 和中的数字相匹配/etc/group。这姓名你看到的 fromls是通过查找号码来完成的。

因此,如果您更改组名称,/etc/group那么结果ls将显示新名称。

答案2

GNU coreutils 中的命令usermod -g还将更改用户主目录中文件的 gid,如其中所述联机帮助页:

-g, --gid GROUP
    The group name or number of the user's new initial login group. The
    group must exist.

    Any file from the user's home directory owned by the previous
    primary group of the user will be owned by this new group.

    The group ownership of files outside of the user's home directory
    must be fixed manually.

strace-ing 该usermod -g group user命令表明它只是lchown(2)依次调用每个文件。这个功能是不是存在于其他usermod实现中(包括pw usermod来自 FreeBSD 的实现)。

因此,这是usermod -gLinux 上该命令的一个陷阱——简单地更改用户的主要组不会神奇地更改该用户拥有的所有文件的 gid。

相关内容