linux – 我可以使用ACL覆盖我的umask,使在给定目录中创建的所有文件都可读吗?

假设我的umask是0077.

我有一个目录,foo,我想要应用特殊权限.我在foo中创建的所有文件都应该是世界可读的,并且所有目录都应该是世界可读和可执行的.

目前,如果我创建一个文件,它将是0600,目录将是0700:

$cd foo/
$touch file
$mkdir directory
$ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

我希望文件为0644,目录为0755,无论我的umask如何:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

我怎样才能做到这一点?

解决方法

是的,acl可以做到这一点.

>确保使用acl挂载文件系统.要检查这一点,请键入mount.你会看到’acl’列在其他权限中,例如:

/dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)

如果没有使用acl挂载,请打开/ etc / fstab,并将“acl”添加到选项列表中:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>   <options>       <dump>  <pass>
/dev/sda1       /          ext3     noatime,acl 0       1

现在,使用新选项重新安装正在运行的文件系统:

mount -v -o remount /

>安装acl实用程序.在ubuntu / debian上,这是:

sudo apt-get install acl

>你的新朋友是setfacl和getfacl.使用setfacl更改目录的认acl:

setfacl -d -m o:r foo

-d设置认值,-m修改acl,o:r授予“other”读取权限.在目录上设置认值大致相当于在目录上设置setgid,但是它们继承了acl,而不是继承该组的新创建的文件. setgid和acl一起可以很强大,因为您可以为组授予认权限,并为新组创建的文件属于该组,以获得有效的基于组的每个目录的umask.
>检查你的工作:ls -l现在应该显示一个额外的“”,表示除了标准文件权限之外还存在acl.

% ls -la foo/
drwxr--r--+

您可以使用getfacl获取有关acl的详细信息.

% getfacl foo
# file: foo
# owner: you
# group: you
user::rwx
group::r--
other::r--
default:user::rwx
default:group::---
default:other::r--

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...