首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否为Linux目录下新建的文件和子目录设置默认权限?

是否为Linux目录下新建的文件和子目录设置默认权限?
EN

Stack Overflow用户
提问于 2009-02-24 05:33:59
回答 5查看 226.9K关注 0票数 103

我有一堆长期运行的脚本和应用程序,它们将输出结果存储在一个由几个用户共享的目录中。我想要一种方法来确保在这个共享目录下创建的每个文件和目录都自动具有u=rwxg=rwxo=r权限。

我知道我可以在我的各种脚本中使用umask 006,但我不喜欢这种方法,因为许多用户编写自己的脚本,可能会忘记自己设置umask。

我真的只希望文件系统将新创建的文件和目录设置为具有特定权限(如果它们位于某个文件夹中)。这有可能吗?

ACL :我认为可以用POSIX ACLs来完成,使用默认的功能,但目前我还不能理解。如果有人能解释如何使用默认ACL,它可能会很好地回答这个问题。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-24 05:37:27

要获得正确的所有权,可以使用以下命令在目录上设置组setuid位

代码语言:javascript
复制
chmod g+rwxs dirname

这将确保在目录中创建的文件归组所有。然后,您应该确保每个人都使用umask 002或007或类似的特性运行-这就是为什么Debian和许多其他linux系统在默认情况下都配置了每个用户组。

如果用户的umask太强,我不知道有什么方法可以强制执行您想要的权限。

票数 78
EN

Stack Overflow用户

发布于 2011-07-01 23:36:20

下面是如何使用默认ACL来实现这一点,至少在Linux下是这样。

首先,您可能需要在文件系统上启用ACL支持。如果您使用的是ext4,则它已经启用。需要使用acl选项挂载其他文件系统(例如,ext3)。在这种情况下,将该选项添加到您的/etc/fstab。例如,如果目录位于根文件系统上:

代码语言:javascript
复制
/dev/mapper/qz-root   /    ext3    errors=remount-ro,acl   0  1

然后重新挂载它:

代码语言:javascript
复制
mount -oremount /

现在,使用以下命令设置默认ACL:

代码语言:javascript
复制
setfacl -dm u::rwx,g::rwx,o::r /shared/directory

/shared/directory中的所有新文件现在都应该获得所需的权限。当然,这也取决于创建文件的应用程序。例如,大多数文件从一开始就不能由任何人执行(取决于open(2)或creat(2)调用的模式参数),就像使用umask时一样。一些实用程序,如cptarrsync将尝试保留源文件的权限,如果源文件不是组可写的,则会屏蔽您的默认访问控制列表。

希望这能有所帮助!

票数 58
EN

Stack Overflow用户

发布于 2009-02-24 10:01:40

它看起来很丑陋,但是您可以使用setfacl命令来实现您想要的效果。

在Solaris计算机上,我有一个包含用户和组的acls的文件。不幸的是,你必须列出所有的用户(至少我找不到其他方法让它工作):

代码语言:javascript
复制
user::rwx
user:user_a:rwx
user:user_b:rwx
...
group::rwx
mask:rwx
other:r-x
default:user:user_a:rwx
default:user:user_b:rwx
....
default:group::rwx
default:user::rwx
default:mask:rwx
default:other:r-x

将文件命名为acl.lst,并填写您的真实用户名,而不是user_X。

现在,您可以通过发出以下命令在目录上设置这些acls:

代码语言:javascript
复制
setfacl -f acl.lst /your/dir/here
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/580584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档