PHP 中的文件组(使用 chgrp() 更改)是什么?

What are file groups (changed using chgrp()) in PHP?

我在 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

在 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% 等效。这是 good article on this topic.