2

我在 Google 上搜索了此信息,但找不到任何详细信息。我正在阅读有关chgrp()的内容,它提到此函数可以更改文件组。

没有关于什么是文件组的解释。我还尝试在参考页面上运行示例以查看输出是否可以帮助我更多地了解该函数,但输出似乎只是数字零。这是示例代码:

$filename = 'stats.txt';
$format = "%s's Group ID @ : %d\n";
printf($format, $filename, filegroup($filename));
chgrp($filename, 10);
clearstatcache(); // do not cache filegroup() results
printf($format, $filename, filegroup($filename));

这是该代码的输出:

stats.txt's Group ID : 0
stats.txt's Group ID : 0
4

1 回答 1

2

在 unix 中,文件所有权基于所有者和组。

这是 linux 机器上的目录列表:

[vagrant@localhost:nginx]$ ls -l
total 8
drwxrwxrwx. 1 vagrant vagrant  136 Feb  5  2016 configs
-rwxrwxrwx. 1 vagrant vagrant 1348 Aug 19 07:34 docker-entrypoint.sh
-rwxrwxrwx. 1 vagrant vagrant  786 Feb  5  2016 Dockerfile

在这种情况下,文件 docker-entrypoint.sh 由名为“vagrant”的用户和名为“vagrant”的组拥有。

然后将权限分配给 3 个单独的组之一:

  • 所有者权限
  • 组权限
  • 其他用户

您专注于 chgrp() 函数,它只是 linux chgrp api/command 的包装器。

可以检查 linux 机器上的组

cat /etc/group

每个条目末尾的数字是组号。您通常可以使用组名称或编号来操作组成员资格,因此在您的示例中,您显然显示的是组编号,但有一些组名称与该组相关联。

[vagrant@localhost:nginx]$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:

windows 和 unix/mac 系统之间有相似之处和不同之处,但它们不是 100% 等效的。这是一篇关于这个主题的好文章

于 2017-08-21T03:32:31.193 回答