我如何chmod 777 / var / www的所有子文件夹?


54

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

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

我可以将文件上传到/home/user/www,但是无论何时创建新目录,我都必须chmod 777在该文件夹上运行。

否则,当我尝试浏览它时,出现错误信息

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

有没有办法让/var/www任何人都可以访问其中的所有子文件夹?还是可以将其权限自动设置为777chmod 777每次都要键入很烦人。


12
只需将其留在此处,请考虑不要在Web服务器上使用777。一个更好的问题是:“如何在不使用777权限的情况下使我的Web服务器正常工作?”
Marco Ceppi

12
抱歉,这是一种不好的做法,我拒绝回答这个问题:)希望eveyone同意:)
Rinzwind 2013年

Answers:


89

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

mkdir -m 777 dirname

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

sudo chmod -R 777 /var/www

在使用这两种方法中的任何一种之前,请真正考虑是否要使文件系统具有这种可访问性。


编辑:正如Rinzwind提到的,这里是完成您想要的更好的方法。

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

sudo adduser yourusername group

该小组可能是www-data

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


4
这可以满足您的要求,但请先阅读此内容/ var / www为什么不具有chmod 777。这是真的不推荐的做法。
沃伦·希尔

8
请不要以不良做法帮助他人。我希望您能说明如何做到:将其用户添加到www-data或apache组中;)
Rinzwind 2013年

4
教育是第一位的。帮助人们搞砸机器不是Linux的方法。所以我强烈不同意你的看法。
Rinzwind 2013年

2
询问者确实说这仅用于测试。我绝对可以理解,希望您的开发方面易于访问,以便您可以更快地工作。我要给他带来疑问的好处,就是他不够愚蠢,无法在生产服务器上做到这一点。
2013年

1
@ dan08有更好的测试方法,包括使用主目录。参见askubuntu.com/questions/46331/…kimbriggs.com/computers/computer-notes/linux-notes/…。有实现这些目标的安全方法;)
Panther

7

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

公共服务声明:


永远不要使用chmod 777来解决问题


  • 如果您运行任何对公众可用的服务,尤其是Web应用程序(例如PHP),则是一个重大的安全风险。

    操作系统的安全模型假定许多服务(例如Web服务器)以降低的特权运行,以防止它们能够修改文件。在文件上设置777会破坏此设计。

    远程用户可以写入或上传文件,然后诱使服务器(或系统上的其他进程)读取或执行文件。脚本或软件可能存在允许这样做的缺陷。如果存在可写世界的目录,很难以任何一种方式来锁定这种情况。

  • 用于某些系统目录(/ usr,/ etc,/ var等)中,它可能会以令人惊讶的方式破坏系统。

    一些基本系统文件需要特殊权限(例如setuid / setgid权限)才能运行。例如,sudo。避免更改由系统本身设置的目录和文件的任何文件许可权。

  • 无法撤消它并找回所有旧权限。

    也就是说,如果您之前拥有的文件和文件夹具有各种不同的权限,则无法返回到这些特定权限-只能将它们全部更改为同一事物,这可能会丢失特定文件所需的任何特定权限设置。

  • 总有一种更合适的方式来实现您想要的目标。

在这种情况下,您似乎只希望Web服务器能够读取目录。授予世界可写的权限比您需要做的更多。

跟踪为什么Web服务器无法读取该目录(提示:可能是因为您的主目录不能被世界读取。世界可读性比世界可写性要安全得多-将主目录设置为755或将www目录移到您家外的某个地方,例如/ var / www或/ srv)。



0

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

您也可以对文件所有权执行相同的操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.