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

Nik*_*hil 85 permissions

我在本地计算机上安装了 ubuntu,使用 apache/php/mysql。

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

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

sudo chmod 777 foldername
Run Code Online (Sandbox Code Playgroud)

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

另外为什么我必须总是这样做777,我尝试了755文件夹和644文件,但这不起作用。

Lek*_*eyn 114

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

chmod -R ug+rw foldername
Run Code Online (Sandbox Code Playgroud)

权限将类似于 664 或 775。

强烈建议不要将权限设置为 777 。您会在 Apache 或您的编辑器中收到有关权限的错误,因为 apache 在www-data与您不同的用户 ( )下运行。

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

  • 将自己添加到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.


use*_*own 30

蛮力:

sudo find foldername -exec chmod a+rwx {} ";"
Run Code Online (Sandbox Code Playgroud)

什么不起作用?更加详细一些!

sudo find foldername -type d -exec chmod 755 {} ";"
sudo find foldername -type f -exec chmod 644 {} ";"
Run Code Online (Sandbox Code Playgroud)

  • ...并将其替换为 . (5认同)