目录或文件夹的访问控制列表和权限

目录或文件夹的访问控制列表和权限

我有用户bala-sftp。每当用户将文件写入文件夹 /balab/settlement/report 时,当前都是

-rw-rw-r-- 1 bala-sftp        sftponly  5295 Oct 18 19:00 settlementreport_switch_20201018.csv

但应该得到许可

-rw-r----- 1 bala-sftp        sftponly  5295 Oct 18 19:00 settlementreport_switch_20201018.csv

我如何通过 setfacl 实现这一点?

答案1

这将确保创建的新文件/balab/settlement/report是组可读的,但不是组可写的。

setfacl -m -d g::r /balb/settlement/report

这是一个实际的例子:

stew ~$ umask 0002                               # New files will be -rw-rw-r-- like yours
stew ~$ cd $(mktemp -d)                          # Going to a new directory
stew /tmp/tmp.JgZyxzKcf8 $ getfacl .             # It has no ACL rules yet
# file: .
# owner: stew
# group: stew
user::rwx
group::---
other::---

stew /tmp/tmp.JgZyxzKcf8 $ touch before          # File to demonstrate pre-ACL rule
stew /tmp/tmp.JgZyxzKcf8 $ setfacl -d -m g::r .  # Set the default acls to group-read-only
stew /tmp/tmp.JgZyxzKcf8 $ touch after           # File to demonstrate post-ACL rule
stew /tmp/tmp.JgZyxzKcf8 $ ls -lr
total 0
-rw-rw-r-- 1 stew stew 0 Nov  2 12:39 before     # Pre-ACL is world readable 
-rw-r----- 1 stew stew 0 Nov  2 12:39 after      # Post-ACL is group readable only

新的可组写文件有点奇怪。如果bala-sftpumask输出是0022(Linux 默认),那么您可能需要删除现有的 ACL。使用 执行此操作setfacl -b /balb/settlement/report。我怀疑bala-sftp是 ,这umask就是0002为什么我umask在测试期间将自己的设置设置为那样。

相关内容