文件夹内的文件更改其权限

文件夹内的文件更改其权限

我正在努力解决以下问题。我已阅读以下指南:在 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 setfaclmaskACL 部分应自动更新以包含写访问权限。 (使用更严格的 POSIX 系统,您必须添加d:m:rwxACL 规范以显式调整 ACL 掩码。)

大写的 X 表示“执行权限,但仅限于目录,也适用于已经具有某人执行权限的文件”。

如果目录(以及您在其中创建的任何新文件)在此修改后具有您想要的权限,您可以考虑添加选项-R以递归地对/var/www/pgcluu/stats.

相关内容