我正在努力解决以下问题。我已阅读以下指南:在 Linux 上获取新文件继承组权限 然而,这对我没有帮助。
(pgcluu是一个postgresql集群监控程序)
我在用Debian server
我有一个文件夹 /var/www/pgcluu
在该文件夹内我有
stats
reports
文件夹。我已将stats
文件夹权限和所有权更改为 postgres。
chmod -R postgres:postgres /var/www/pgcluu
(所以完整文件夹是 postgres 的所有者)
另一方面,pgCluu 正在收集数据并在stats
文件夹内生成文件。看起来像。
/var/www/pgcluu/stat/2018/04/04/09
基本上在文件夹/year/month/day/hour/
内hour
我有类似的文件
-rw-r-----+ 1 postgres postgres 44 Apr 4 10:20 pg_stat_connections.csv
-rw-r-----+ 1 postgres postgres 940 Apr 4 10:20 pg_stat_database_conflicts.csv
-rw-r-----+ 1 postgres postgres 2479 Apr 4 10:20 pg_stat_database.csv
-rw-r-----+ 1 postgres postgres 1 Apr 4 10:20 pg_stat_replication.csv
-rw-r-----+ 1 postgres postgres 0 Apr 4 10:20 pg_stat_statements.csv
-rw-r-----+ 1 postgres postgres 88 Apr 4 10:20 postgresql.auto.conf
-rw-r-----+ 1 postgres postgres 21425 Apr 4 10:20 postgresql.conf
-rw-r-----+ 1 postgres postgres 70009 Apr 4 10:20 sysinfo.txt
这只是一个例子,还有很多文件。
这些文件每分钟生成一次pgcluu_collectd
(您可以更改它),但它们需要重写,因此需要有rw- rw- ---
权限才能执行此操作。 (所有者和组必须对文件具有读写权限)每次我自己更改它时,pgcluu_collectd 都会rw- r-- ---
再次使文件具有权限。
因此,是否有办法让文件继承文件夹的权限/var/www/pgcluu/stats
root@p12: getfacl /var/www/pgcluu/stats/
# file: var/www/pgcluu/stats/
# owner: postgres
# group: postgres
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:group::r-x
default:group:postgres:r-x
default:mask::r-x
default:other::---
并在文件上
root@p12:getfacl /var/www/pgcluu/stats/2018/04/04/10/pg_hba.conf
# file: var/www/pgcluu/stats/2018/04/04/10/pg_hba.conf
# owner: postgres
# group: postgres
user::rw-
group::r-x #effective:r--
group:postgres:r-x #effective:r--
mask::r--
other::---
答案1
getfacl
该目录的输出对此进行了解释。第四行:
# flags: -s-
表示该目录已setgid
设置位,因此其中生成的所有文件都将获得该目录所具有的相同组。新的子目录将继承组和位setgid
。这与 ACL 完全无关;这只是一个基本的chmod 2755
。
在清单的末尾,有几行标有关键字default
:
default:user::rwx
default:group::r-x
default:group:postgres:r-x
default:mask::r-x
default:other::---
这些更详细地指定任何新文件或子目录将获得的权限。在这种情况下,它会向标准 POSIX 组所有者强制执行 rx 组权限,并为该postgres
组添加显式 rx 权限,无论创建者是否属于该组。如果您需要文件具有组写访问权限,则需要更改这些文件。
尝试这个:
setfacl -m g::rwX,d:g::rwX,d:g:postgres:rwX /var/www/pgcluu/stats
对于 Linux setfacl
,mask
ACL 部分应自动更新以包含写访问权限。 (使用更严格的 POSIX 系统,您必须添加d:m:rwx
ACL 规范以显式调整 ACL 掩码。)
大写的 X 表示“执行权限,但仅限于目录,也适用于已经具有某人执行权限的文件”。
如果目录(以及您在其中创建的任何新文件)在此修改后具有您想要的权限,您可以考虑添加选项-R
以递归地对/var/www/pgcluu/stats
.