我怎样才能将 /var/www 的所有子文件夹 chmod 777?

我怎样才能将 /var/www 的所有子文件夹 chmod 777?

我正在运行一个网络服务器和 FTP 服务器,其中/var/www绑定到/home/user/www

我将两个目录都设置为chmod 777(这很好,因为它仅用于测试)。

我可以将文件上传到/home/user/www,但每当我创建一个新目录时,我总是必须chmod 777在该文件夹上运行。

否则,当我尝试浏览它时,我会收到错误消息

您无权访问此服务器上的 /test/。

有没有办法让里面的所有子文件夹都/var/www可以被任何人访问?或者可以自动将他们的权限设置为?每次777都要输入,这很烦人。chmod 777

答案1

这是一种不好的做法,但希望您只是将其用于开发,或者您有其他好的理由。您可以在创建目录时使用以下选项指定权限-m

mkdir -m 777 dirname

或者您可以递归设置权限。

sudo chmod -R 777 /var/www

在使用其中任何一个之前,请认真考虑是否希望您的文件系统如此易于访问。


编辑:正如 Rinzwind 所提到的,这里有一种更好的方法来实现您的目标。

检查哪个组拥有您的/var/www目录并将您的用户添加到该组。

sudo adduser yourusername group

该组大概是www-data

然后您就可以将权限设置为 775 了。

答案2

Unix 中的文件和目录可能有三种类型的权限:读取 ( r)、写入 ( w) 和执行 ( x)。每个权限可能属于onoff适用于以下三类用户:文件或目录所有者;与所有者同属一个组的其他人;以及所有其他人。要更改文件的模式,请使用 chmod 命令。一般格式为 chmod X@Y file1 file2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 

答案3

cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

对于使用不同权限创建所有文件的 ftp,您可能需要查找 ftpd 的 umask,以及该守护进程的启动方式

看看这个网站 https://linuxaria.com/article/linux-shell-understanding-umask-with-examples

答案4

如果您想要从另一个您满意的文件复制权限和/或所有权,可以使用 sudo chmod --reference=path/to/file/to/reference path/to/file/you/want/to/change/permission/to

您也可以对文件所有权执行同样的事情。

相关内容