我有一个目录,里面的文件和文件夹不断被添加和删除,我设置的权限也不断变化。如何才能永久保留特定路径上的权限,以便无论文件夹中发生什么,该文件夹内的所有文件和文件夹都将递归遵循设置的权限。
我设置的权限如下:
sudo chmod 755 -R /var/www/uploads
sudo chown www-data:www-data -R /var/www/uploads
当我编写代码来删除文件时,我不确定 php/apache 使用了哪个用户组,我猜这就是它无法做到这一点的原因。
答案1
您是否研究过使用umask
命令来设置目录的权限掩码?umask 及其在 Linux 上的工作原理。我相信正确使用umask
应该chmod
可以解决这个问题。
答案2
您可以尝试使用 ACL这里. 特别是默认 ACL:
“目录可以配备一种特殊的 ACL——默认 ACL。默认 ACL 定义了此目录下的所有对象在创建时继承的访问权限。默认 ACL 不仅影响文件,还影响子目录。”
答案3
您正在与系统抗争。您可能会找到一种隐蔽的方法来阻止权限更改,但这可能会导致各种错误,其中一些错误可能是致命的。它还可能导致应用程序预期的安全措施设置不正确。
您应该将注意力转移到权限混乱的原因上。您需要关注的主要工具是 Web 服务器进程和用户的 umask 设置,并且根据您使用的权限架构,您可能会使用目录粘性位(即chmod g+s
)。如果创建目录的用户属于该组,则目录粘性位会导致新文件和文件夹继承父目录的组。
如果没有关于预期权限架构和意外更改的更多详细信息,就很难说更多。
但请注意,您可能不想让您的文件chmod 755
。它们更可能希望设置为 644。例如
find /var/www/uploads -type d -print0 | xargs -0 chmod 2755
find /var/www/uploads -type f -print0 | xargs -0 chmod 644