假设我的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--
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。