是否可以将包含某些文件的特定目录的权限从 640 更改为在该文件夹中生成的文件,并在生成文件供某些特定用户访问这些文件后将其更改为 644?
环境 - 运行 Oracle 数据库的 RHEL 6
答案1
阅读chmod(1)
手册页。
640
代表的rw-r-----
是:所有者可以读/写(第一个三元组),拥有该文件的组中的用户(第二个三元组)可以读取,其他任何人都不能执行任何操作。
要将其更改为644
(所有人都可以读取,拥有用户可以写入),您可以为其他人添加读取权限:
$ chmod o+w file
或通过以下方式显式设置:
$ chmod 644 file
或者
$ chmod a=r,u+w
也就是说,请确保您是否正在更改目录或文件的权限(从您的问题来看并不清楚)。这里重要的是,从目录中删除可执行权限会使其不可遍历 - 也就是说,那些没有目录可执行权限的人无法更改该目录(也无法读取其中的文件)。
答案2
ACL 正是您在这种情况下所需要的,并且它们在 RHEL 6 中受支持。因此,例如,您将这些文件放入特定目录中:/dir
您希望保留该目录当前拥有的权限,但还希望授予特定组或用户对该目录及其子目录的访问权限,而这些子目录无法访问该文件夹或其内容。例如,如果您想授予组读取权限,则可以运行以下命令:
setfacl -dR -m "g:groupname:rwX" /dir
将-d
acl 设置为默认值,这样当任何新内容添加到此目录中时,它将继承 的 acl /dir
。
用于-R
递归。
bigX
确保该组中的用户可以cd
进入目录,但不会使里面的文件可执行。
然后您可以运行以下命令以确保它已正确应用:
getfacl /dir
这里是手册页为了setfacl
:
答案3
系统如何知道文件已经完全创建?
如果某个进程创建了文件并且您可以控制该进程,那么我建议在最后添加一个步骤来更改文件的权限。
相反,如果您无法控制创建文件的过程,那么最好的选择可能是每隔几分钟运行一次 cron 作业。该作业应该查找一段时间内没有更改的文件(以确保您没有找到仍在写入的文件)以及您想要更改的权限,并且应该更改权限。就像是:
find /the/directory -type f -mmin +5 -perm 0640 -exec chmod 644 '{}' ';'
从 cron 每五分钟运行一次,您应该有一个相对强大的解决方案。
答案4
如果要更改权限,可以使用chmod命令。如果。 Chmod 777 文件名,向用户、组和操作系统上的其他人授予读、写、执行权限