我正在运行一个网络服务器和 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
)。每个权限可能属于on
或off
适用于以下三类用户:文件或目录所有者;与所有者同属一个组的其他人;以及所有其他人。要更改文件的模式,请使用 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
您也可以对文件所有权执行同样的事情。