如何递归更改文件和目录的权限?

如何递归更改文件和目录的权限?

我在本地计算机上安装了 ubuntu,其中有 apache / php / mysql。

我现在在 /var/www 有一个目录 - 里面有几个正在进行的项目。我还使用开源软件(drupal、magento、sugarcrm)。

我面临的问题是使用终端更改文件权限。有时我需要更改整个文件夹及其后续子文件夹和文件的权限。我必须使用

sudo chmod 777 foldername

我怎样才能递归地做到这一点。

为什么我总是要这样做777, 我试过755对于文件夹和644对于文件,但那是行不通的。

答案1

只需添加-R递归更改文件权限的选项即可。例如,递归添加所有者和组的读写权限foldername

chmod -R ug+rw foldername

权限将类似于 664 或 775。

将权限设置为 777极力劝阻。您会在 Apache 或编辑器中收到有关权限的错误,因为 Apache 在您之外的用户 ( www-data) 下运行。

如果您想要写入/var/www,请将自己添加到www-data组并相应地设置 umask + 权限。

  • 将您自己添加到www-data群组:sudo adduser $USER www-data
  • 更改文件的所有权/var/wwwsudo chown -R www-data:www-data /var/www
  • 更改 umask,这样 Apache 新创建的文件也授予该组写入权限。添加umask 007/etc/apache2/envvars
  • 授予您自己(从技术上讲,是组www-data)写入权限:sudo chmod -R g+w /var/www

答案2

暴力破解:

sudo find foldername -exec chmod a+rwx {} ";"

什么不起作用?说得更具体一些!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"

答案3

您可以在 Nautilus 上更改子文件夹和文件。如下图所示。为了获得按钮的权限,您可以在 Ubuntu Tweak 上启用该选项。

在此处输入图片描述

答案4

如果您希望所有文件都能被全世界读取(即,它只是一组静态的 HTML 文件/图像),那么请使用以下命令:

chmod -R a+r <base directory>

这将递归遍历所有文件和子目录并为它们添加读取权限。

警告:不要对可执行文件执行此操作!仅对每个人都可见的文件执行此操作。

相关内容