会不会总是有一对相同的 UID 和 GID?

Aka*_*aks 11 linux chown passwd

我必须使用chmod.I更改文件/目录的所有权。我只知道所有者的用户名,但想同时更改默认组名。在这个阶段组名没有决定所以我把相同的用户名

chown -R username:username path_to_dir
Run Code Online (Sandbox Code Playgroud)

命令可能对各种系统/用户运行,所以我担心的是,linux 是否总是有一对 username(user):username(group) 或在某些时候这个默认 group_name 可能会出错。

虽然我已经开始从用户所属的地方找GID

id username | tr '(=)' ':' | awk -F: '{print $3}
Run Code Online (Sandbox Code Playgroud)

但对于知识,我想知道。到目前为止,/etc/passwd /etc/groups除了少数用户(如“shutdown、halt、sync、opeartor”)外,所有用户也已在组中列出。

编辑 1: id -gn username 也是不错的选择

Kar*_*son 20

不能保证 groupname =username会存在。

最常见的情况是系统管理员在 Linux 上使用的是在系统本地创建一个新用户,没有明确指定组,这意味着默认情况下会创建与用户名相同的组,并分配用户具有新创建的组的默认 GID。

这并不意味着另一个系统管理员将遵循此过程,并且如果您将其他命名服务(如 NIS 或 LDAP)加入到组合中,则分配为默认的组可能与组名与用户名相同的新 GID 不同。

所以你不应该依赖 username=groupname 的事实


ste*_*ver 11

尽管现代 Linux 系统中经常使用用户私有组习惯用法,但 *nix 实际上并不要求每个用户都有一个唯一的主组,并且多个用户帐户很可能共享一个公共主组,例如users或staff。

即使在强制执行 UPG 习惯用法的情况下,特定 UPG 的数字 GID 应该等于所有者的 UID 也没有特别的理由,尽管大多数帐户创建工具会尝试按顺序分配 UID 和 GID,如果它们是可用的。如果用户和/或组需要在多个系统中保持一致(例如为了容纳预先存在的 NFS 共享),则 ID 很容易失步。


Era*_*iel 6

正如 Ramesh 所指出的,默认情况下,UID 和 GID 对于普通用户是相同的。然而,情况并非总是如此,因此您不能做出这样的假设,因为这可能会对您的系统造成严重破坏。将文件/文件夹权限分配给错误的组有点麻烦,不是吗?

所以,简短的回答:不,UID 并不总是等于 GID。尽管如此,/etc/passwd在同一行中同时包含默认组的 UID 和 GID,因此提取它们相当容易。