AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 52579
Accepted
Ankur
Ankur
Asked: 2009-08-11 23:37:32 +0800 CST2009-08-11 23:37:32 +0800 CST 2009-08-11 23:37:32 +0800 CST

Unix 设置整个文件夹的权限

  • 772

这是一个菜鸟问题。

我在一个名为图像的文件夹中 - 我的网站上都没有显示。我相信权限设置不正确。

我该怎么做才能正确设置它们以便它们出现。我要给予什么许可,我该怎么做,我要先上一级吗?我可以一次性设置它们吗?

谢谢。

unix permissions
  • 7 7 个回答
  • 1325 Views

7 个回答

  • Voted
  1. Best Answer
    Kyle Brandt
    2009-08-12T03:50:27+08:002009-08-12T03:50:27+08:00

    我会推荐 find 命令来设置权限:

    为了使所有目录都可以被所有人搜索和读取(请参阅此链接以获取 Unix 目录权限,权限与文件具有不同的含义):

    sudo bash -c "find /var/www/root/images -type d -print0 | xargs -0 chmod oga+rx"
    

    对于文件:

    sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod oga+r"
    

    并确保组中的任何人都不能写任何东西:

    sudo bash -c "find /var/www/root/images -type f -print0 | xargs -0 chmod a-w"
    

    我之所以设置所有者、组和所有人的权限是因为即使所有人都具有读取权限,如果所有者没有,则所有者将无法读取文件。

    当与目录一起使用时,执行权限“x”通常被称为“搜索”权限。您还需要从上面有关目录权限的链接中搜索直到根目录的所有目录的权限:

    在许多常见情况下都需要搜索权限。考虑命令“cat /home/user/foo”。该命令显然需要对文件 foo 的读取权限。但是除非你对 /、/home 和 /home/user 目录有搜索权限,否则 cat 无法定位 foo 的 inode,因此无法读取它!您需要每个祖先目录的搜索权限才能访问任何文件(或目录)的 inode,并且您无法读取文件,除非您可以访问它的 inode。

    因此,在我的示例中,您还需要对 /var、/var/www、/var/www/root 等具有搜索 (+x) 权限。


    不要使用 a+rX,很抱歉将其放在帖子中,但我需要对不知道如何在评论中使用它们的标签进行编码。以下不仅会影响目录,如果用户已经具有执行权限,它也会影响文件。

     chmod -R a+rX images
    

    例子:

    [kbrandt@kbrandt-opadmin: ~/scrap/X] touch XnotOnlyDirectories     
    [kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l                         
    total 0
    -rw-rw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
    [kbrandt@kbrandt-opadmin: ~/scrap/X] chmod u+x XnotOnlyDirectories
    [kbrandt@kbrandt-opadmin: ~/scrap/X] ls -l                         
    total 0
    -rwxrw-r-- 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
    [kbrandt@kbrandt-opadmin: ~/scrap/X] cd ..                         
    [kbrandt@kbrandt-opadmin: ~/scrap] chmod -R a+rX X                 
    [kbrandt@kbrandt-opadmin: ~/scrap] ls -l X                         
    total 0
    -rwxrwxr-x 1 kbrandt kbrandt 0 2009-08-11 06:29 XnotOnlyDirectories
    

    从 chmod 手册页:

    仅当文件是目录或已对某些用户具有执行权限时才执行/搜索(X)


    关于 Apache:
    我知道没有明确的正确方法,您可以使用我设置的权限并以用户 nobody 身份运行 Apache,或者您可以使用 apache 的组或用户,例如“apache”或'www 数据'。请参阅此链接。如果走无人路线,请确保无人拥有正确的用户 ID:

    [kbrandt@kbrandt-opadmin: ~/scrap] id nobody                       
    uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
    
    • 4
  2. hayalci
    2009-08-12T01:08:35+08:002009-08-12T01:08:35+08:00

    使用以下命令

     chmod -R a+rX images
    

    -R:使命令递归运行,遍历其下的所有目录。

    a+rX:使每个人都可以读取文件,并且每个人都可以“进入”目录。大写的 X 仅授予目录执行权限,而不授予常规文件。(编辑:除非文件已经对某些用户具有执行权限)

    images:文件夹的名称,你可以给出一个完整的路径,比如/home/user/public_html/images

    chown顺便说一句,除非您是 root(编辑:或 chown 二进制 suid root) ,否则您无法创建文件

    • 2
  3. Chathuranga Chandrasekara
    2009-08-11T23:43:06+08:002009-08-11T23:43:06+08:00

    使用带有 -R 参数的 chmod 命令以递归方式执行操作。man chmod 命令将向您显示帮助。

    • 1
  4. olefebvre
    2009-08-11T23:48:25+08:002009-08-11T23:48:25+08:00

    不要忘记将文件添加到正确的网站所有者帐户/组。例如,如果您使用 root 帐户复制它,则网络服务器很可能无法访问这些文件。使用 chmod 将图像文件权限设置为 644。

    使用 -R te 递归子目录。

    • 1
  5. kmarsh
    2009-08-12T04:14:53+08:002009-08-12T04:14:53+08:00

    (我将尝试解释为什么,而不仅仅是如何)

    您有两个问题需要处理:所有权和权限。

    有两种所有权:用户和组。良好的 Web 管理使 Web 服务器归“无人”(或同等)所有,而它显示的文件则归 Web 管理员所有。组所有权,并且是 web 管理组,如果超过一个人,或者只是 web 管理员用户的默认组。

    共有三种权限:用户、组和世界。ls -l命令中的每个 RWX先给出用户的读、写和执行权限,然后是组,然后是世界。

    如果您要向所有人和任何人提供图片,则设置对您的图像目录的世界读取访问权限,并且图像本身将解决您的问题,而无需担心所有权。如果图像仅限于登录成员,则应关闭 world r/w/x(在ls -l中显示为---)

    至少,网络管理员用户应该对图像或 rwx 具有读/写权限。(锁定的托管网站也有例外,但我觉得这里不是这种情况)。

    完成后,您的所有权权限应如下所示:

    chmod 774 *.jpg
    rwxrwxr--   webadmin  webgroup   # Allow web admin and group to modify, everyone to view
    
    
    chmod 744 *.jpg
    rwxr--r--   webadmin  webgroup   # Allow only web admin to modify, everyone to view
    
    chmod 740 *.jpg
    rwxr-----   webadmin  webgroup   # Allow only web admin to modify, only him and webgroup to view, this means web server must be in webgroup.
    
    chmod 740 *.jpg
    chgrp nobody *.jpg
    rwxr-----   webadmin nobody      # If apache user is nobody/nobody, this is better
    
    • 1
  6. David Rickman
    2009-08-11T23:52:56+08:002009-08-11T23:52:56+08:00

    您可能想查看 chown 而不是 chmod。Chown ==更改应该使用的 OWN ership 以及为服务提供服务的用户授予权限的文件。httpd 通常在大多数现代 Linux 发行版上的www-data或httpd用户和组下运行。

    • 0
  7. Mark
    2009-08-12T00:41:43+08:002009-08-12T00:41:43+08:00

    您没有提及您是否定期将文件添加到此文件夹。

    我发现如果经常添加一个文件夹,那么将组粘性位设置到该文件夹​​会不假思索地纠正问题。

    例如,将组所有权设置为 webserver 组和对文件夹的组读取/粘性权限意味着新文件被设置到该组并且可读。如果有一个团队管理文件夹,那么组写入也有帮助。

    将文件移动到文件夹时并不总是有效。

    • 0

相关问题

  • Windows 有符号链接吗?

  • 控制 UNIX 目录内容用户组所有权

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何将 VAR 从子 shell 导出到父 shell?

  • 查找文件大小(以 MB 为单位)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve