我正在分析一个脚本,但在网上找不到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 0
(root
或wheel
)。
答案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。