如何递归更改文件和目录的权限?
我使用apache / php / mysql在我的本地计算机上安装了ubuntu。
我现在在/ var / www有一个目录 – 在其中我有几个正在进行的项目。 我也使用opensource(drupal,magento,sugarcrm)。
我面临的问题是更改终端的文件权限。 有时我需要更改整个文件夹及其后续子文件夹和文件的权限。 我必须单独改变使用
sudo chmod 777 foldername
我怎么能递归地做到这一点。
另外,为什么我必须总是这样做777 ,我尝试755用于文件夹, 644用于文件,但这不起作用。
只需添加-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/www
文件的所有权:sudo chown -R www-data:www-data /var/www
- 更改umask,因此Apache新创建的文件也授予对组的写入权限。 将
umask 007
添加到/etc/apache2/envvars
。 - 授予自己(技术上,组
www-data
)写权限:sudo chmod -R g+w /var/www
。
暴力破解:
sudo find foldername -exec chmod a+rwx {} ";"
什么不起作用? 更加详细一些!
sudo find foldername -type d -exec chmod 755 {} ";" sudo find foldername -type f -exec chmod 644 {} ";"
任何事情都不需要777。 最糟糕的情况是,您需要将某些文件和目录的所有者更改为“www-data”用户。
sudo find /var/www -type d -print0 | xargs -0 chmod 755 sudo find /var/www -type f -print0 | xargs -0 chmod 644 sudo find /var/www/some/subset -print0 | xargs -0 chown www-data:www-data
如果您正在使用Lekensteyn的组成员身份方法,请分别将755更改为775和644至664,然后强制组粘性:
sudo find /var/www/some/subset -type d -print0 | xargs -0 chmod g+s
您可以更改Nautilus上的子文件夹和文件。 如下图所示。 为了在按钮上设置权限,您可以在Ubuntu Tweak上启用该选项。
如果你想让你的所有文件都可以被世界读取(例如,它只是一组静态的HTML文件/图像),那么使用这个命令:
chmod -R a+r
这将以递归方式遍历所有文件和子目录,并为它们添加读取权限。
警告 :不要对执行的代码执行此操作! 只有每个人都应该看到的文件。