我刚刚升级了我的开发机器,并转移了我正在开发的网站。但是,权限似乎没有正确转移。 dev 机器是运行 Apache 的 Linux 机器,其中所有文件夹和子文件夹都设置为 755,所有文件和所有子文件夹中的文件都设置为 644。
而不是我必须运行命令:
修改 755
修改644
有没有一种更快的方法来执行此操作,而不必单独执行每个文件和文件夹?
答案1
对于文件:
find -type f -exec chmod 0644 {} \;
对于目录:
find -type d -exec chmod 0755 {} \;
答案2
如果问题是不是每个人都可以读取这些文件:
chmod -R a+rX /var/www
(注意大写X
,这意味着只有至少一个用户可执行的目录和文件才可执行)。
如果问题是文件可由所有者以外的用户写入:
chmod -R go-w /var/www
如果问题是文件是可执行的,并且您不想有任何可执行文件:chmod -R a-x
则不会这样做,因为目录需要保持可执行状态(目录的执行权限控制您是否可以访问其中的文件)。你需要更有辨别力。在 zsh 中,您可以运行chmod a-x /var/www/**/*(.)
,使用**/
语法递归到子目录和.
全局限定符仅匹配常规文件。在任何 shell 中,您可以使用find
:
find /var/www -type f -exec chmod a-x {} +