use*_*034 75 permissions apache2 chmod
我正在运行一个网络服务器和 FTP 服务器,其中/var/www绑定到/home/user/www.
我将两个目录都设置为chmod 777(这很好,因为它仅用于测试)。
我可以将文件上传到/home/user/www,但是每当我创建一个新目录时,我总是必须chmod 777在该文件夹上运行。
否则,当我尝试浏览它时,会收到错误消息
您无权访问此服务器上的 /test/。
有没有办法让/var/www任何人都可以访问里面的所有子文件夹?或者他们的权限可以自动设置为777?chmod 777每次都要打字很烦。
Dan*_*Dan 118
这是不好的做法,但希望您只是将其用于开发,或者您有另一个很好的理由。您可以在使用以下-m选项创建目录时指定权限:
mkdir -m 777 dirname
Run Code Online (Sandbox Code Playgroud)
或者您可以递归设置权限。
sudo chmod -R 777 /var/www
Run Code Online (Sandbox Code Playgroud)
在使用其中任何一个之前,请认真考虑您是否希望您的文件系统如此易于访问。
编辑:正如 Rinzwind 所提到的,这是完成您想要的更好的方法。
检查哪个组拥有您的/var/www目录并将您的用户添加到该组。
sudo adduser yourusername group
Run Code Online (Sandbox Code Playgroud)
群大概是www-data。
然后你就可以将你的权限设置为 775。
小智 11
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
Run Code Online (Sandbox Code Playgroud)
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;
Run Code Online (Sandbox Code Playgroud)
对于创建具有不同权限的所有文件的 ftp,您可能需要查找 ftpd 的 umask,该守护进程是如何启动的
看看这个网站 https://linuxaria.com/article/linux-shell-understanding-umask-with-examples
公共服务声明:
如果您运行任何对公众可用的服务,尤其是 Web 应用程序(例如 PHP),就会存在安全风险。
操作系统的安全模型假设许多服务(例如您的 Web 服务器)以降低的权限运行,以防止它们能够修改文件。在文件上设置 777 会破坏安全设计。
远程用户可以写入或上传文件,然后诱使服务器(或系统上的某些其他进程)读取或执行它们。脚本或软件可能存在允许这样做的缺陷。如果存在全球可写的目录,很难确保您已经锁定了可能发生的每一种方式。
在某些系统目录(/usr、/etc、/var 等)中使用时,它会以令人惊讶的方式破坏您的系统。
一些必要的系统文件需要特殊权限,例如 setuid/setgid 权限才能运行。例如,sudo。避免更改系统本身设置的目录和文件的任何文件权限。
无法撤消它并取回所有旧权限。
也就是说,如果您之前拥有具有各种不同权限的文件和文件夹,则无法返回到这些特定权限 - 只能将它们全部更改为相同的内容,这可能会丢失特定文件所需的任何特定权限设置。
总有一种更合适的方式来实现您想要实现的目标。
默认设置 Ubuntu(和其他操作系统)使用以非特权用户身份运行 Web 服务器并使网站文件世界可读是一个合理的安全选择,为了一致性,除非必要,否则不应更改。因此,为了确保非特权服务器进程可以读取您的网站文件,它们需要是全球可读的。
给予世界可写的许可远比你需要做的要多。
在追查 Web 服务器进程无法读取您的文件的原因时,请记住,不仅文件本身需要是全局可读的(例如,644),它们的父目录还应该是全局可读和可遍历的(例如,755)。将您的主目录设置为 755 之类的内容,或者如果您不希望您的主目录世界可读,请将您的 www 目录移动到您家之外的某个地方,例如 /var/www 或 /srv)。
关于使文件可写的注意事项:
有时,您需要您的 Web 服务器能够写入某些文件。要实现这一点,请确保您只允许对要为其授予该权限的特定文件的写权限,并且最好使用组所有权和组写位来授予该权限,使它们成为全球可写的。
| 归档时间: |
|
| 查看次数: |
1281234 次 |
| 最近记录: |