“chgrp 0”做什么?

“chgrp 0”做什么?

我正在分析一个脚本,但在网上找不到chgrp 0以下行的含义:

find $1 -follow -exec chgrp 0 {}

所以

find $1接受参数,

-follow导致 find 遵循符号链接,

-exec执行命令,

chgrp 0更改组所有权,但是 0 做什么呢?,

{}对于 find 命令找到的所有项目。

如果我有什么不对的地方,请纠正我。

答案1

chgrp 0 file会将文件的组所有权更改file为具有 GID 的组0,在 Linux 中几乎所有情况下都是该root组(在 BSD 中,这几乎总是wheel)。因此,您的find命令将在第一个位置参数 ( ) 提供的路径中搜索$1其中包含的所有文件系统对象,跟踪到其目标的任何符号链接,并使这些对象的组所有者为 GID 0rootwheel)。

答案2

基本上Linux中任何文件/目录的所有权都存储在索引节点。它存储为整数(用户的整数,组的第二个整数)。它仅取决于您的 NSS(例如 /etc/passwd 文件或 ldap)它将在 ls 中显示哪个名称。像系统一样执行操作chgrp root file将获取“root”组的 GID(在我的例子中为 0)并将该 0 写入 inode。你也可以做这样的事情:

# touch testfile
# chgrp 135543 testfile
# ls -l testfile
-rw-r--r--. 1 root 135543 0 Aug 21 18:05 testfile
# groupadd -g 135543 testgroup
# ls -l testfile
-rw-r--r--. 1 root testgroup 0 Aug 21 18:05 testfile

答案3

0是root的UID和GID。因此,当您执行 chgrp 0 时,您正在将文件/目录的组所有权更改为 root。

相关内容