我在本地计算机上安装了 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/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
。
答案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>
这将递归遍历所有文件和子目录并为它们添加读取权限。
警告:不要对可执行文件执行此操作!仅对每个人都可见的文件执行此操作。