我希望在特定目录中创建的所有文件都自动获得 755 权限,可以吗?

我希望在特定目录中创建的所有文件都自动获得 755 权限,可以吗?

相关文件夹每隔几天就会被覆盖一次,但我希望其内容保留 755 权限。我试过了,chmod g+s dir但无济于事。这可能吗?

答案1

您无法使用 posix 权限模型来实现这一点;根本没有这方面的规定。相关规定(目录上的 setuid 和 setgid)允许将所有权继承到一级,但不允许继承权限。

如果你需要此功能,则应考虑使用 ACL,因为这些可以继承(无论如何在文件创建时),但这需要对权限结构进行一些思考。假设您的系统和文件系统支持 POSIX ACL,您想要在目录上设置的 ACL 将类似于d:u::7,d:g::5,d:o::5(这会使 ACL 对文件所属的 UID 和 GID 进行操作;如果您也需要继承,则使目录 suid 和 sgid)。目录上的默认 ACL 应用于新文件和在其中创建的目录,因此虽然这并不是使文件权限为 0755 的确切方法,但它可能会满足您的需要。

ACL 的学习难度较大,而且它是 POSIX 中较为复杂(且很少使用)的功能之一。请阅读手册页:man 5 aclman 1 setfacl。在了解 ACL 的工作原理之前,请勿尝试将其用于任何用途。

另一件需要考虑的事情是,根据目录内容的写入方式,让写入它们的程序指定权限;这将受 umask 的影响,但这是以您想要的字面方式实现所需权限的唯一方法。许多程序都有您可以为此指定的选项,或者您可以在运行创建文件的程序的 shell 中设置所需的 umask(您可以在不影响系统 umask 的情况下执行此操作)。

答案2

如果你可以使用其他软件,并且不需要子文件夹,则可以在将文件添加到文件夹时触发更改权限的命令(例如 chmod 755),因克龙。您需要安装 incron,将自己添加到允许的用户列表中(通过将自己添加到 /etc/incron.allow )

然后,您可以使用 设置 incrontab 条目incrontab -e,然后添加类似的行/path/to/directory_to_monitor IN_MODIFY chmod 755。如果您想深入了解 incron 的选项,请查看手册页,或者本指南关于 howtoing

它可能不是很优雅(因为它监视文件变化),但设置正确后,应该会自动将文件的权限更改为您想要的。

相关内容