文章目录
{ .ImgAlt }}

假如你正在尝试解决你的网络服务器上的权限问题,并且发现网上的信息提示,说,你需要对网页目录递归执行chmod 777命令。在做这件事情之前,确保你能够理解chmod -R 777在做什么,并且为什么你永远不要将权限设置为 777

本文讲解了基本的 Linux 权限模型,并且这些权限的数字是什么意思?

一、理解 Linux 文件权限

在 Linux 中,对文件的访问权限由操作系统使用权限,属性和归属来控制。理解 Linux 文件系统权限模型允许你严格限制文件和文件夹的访问权限,仅仅允许授权用户和 进程可以访问,确保你的系统更安全。

每个文件都被一个用户和用户组所拥有,并且给三类不同的用户设置了权限:

  • 文件所有者
  • 文件所有者归属的用户组
  • 其他人(所有人)

有三种不同的文件权限,可以应用给每一个用户类别,并且允许你指定哪一个用户被允许读取文件,写文件和执行文件。同样的权限属性,应用到文件和文件夹上有不同的意思:

  • 读权限
    • 文件可读。例如,当设置读权限的时候,用户可以使用一个文件编辑器来打开文件。
    • 文件夹内容可以被查看。用户可以使用ls命令来列出文件夹下的文件。
  • 写权限
    • 文件可以被修改
    • 文件夹内容可以被修改。用户可以创建新文件,删除已经存在的文件,移动文件,重命名文件…等
  • 执行权限
    • 文件可以被执行
    • 文件夹可以通过cd命令切换进去

使用ls命令可以查看文件权限。示例如下:

ls -l filename.txt
-rw-r--r-- 12 linuxize users 12.0K Apr  8 20:51 filename.txt
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

第一个字符显示文件类型。它可以是正常的文件(-),文件夹(d),一个链接(l),或者其他任何类型的文件。

后面九个字符表示文件权限,每三个字符一组。第一组显示用户所有者的权限,第二个显示文件所有者归属的用户组的权限,最后一组显示每一个其他人的权限。

二、权限数字

文件权限可以使用数字或者字符格式。在本文中,我们集中讲讲数字格式。

权限数字由三个或者四个数字组成,取值从0到7。

当设置三组数字时,第一组数字表示文件所有者的权限,第二组是文件归属用户组的,最后一组是其他人的。

读,写,执行权限由下面的数字取值:

  • r (读) = 4
  • w (写) = 2
  • x (执行) = 1
  • 无权限 = 0

指定用户类别的这个数字权限可以是权限的取值之和。

每个权限的数字可以是4,2,1之和,以及 0:

  • 0 (0+0+0) – 无权限
  • 1 (0+0+1) – 仅仅执行权限
  • 2 (0+2+0) – 仅仅写权限
  • 3 (0+2+1) – 写和执行权限
  • 4 (4+0+0) – 仅仅读权限
  • 5 (4+0+1) – 读和执行权限
  • 6 (4+2+0) – 读写权限
  • 7 (4+2+1) – 读写和执行权限

例如,如果权限数字被设置为750,它意味着文件所有者拥有读写和执行权限,文件归属用户组拥有读和执行权限,其他用户没有权限:

  • 文件所有者: rwx=4+2+1=7
  • 文件归属用户组: r-x=4+0+1=5
  • 其他人: r-x=0+0+0=0

当4个数字被使用时,意思如下:

  • setuid=4
  • setgid=2
  • sticky=1
  • no changes = 0

下面一组三个数字也是同样的意义。如果第一个数字是0,可以忽略,权限取后面的3个数字。数字模式0755755是一样的。

想要以数字形式,查看文件权限,使用stat命令:

腾讯云学生服务器_学生机_云服务器优惠套餐-云+校园 - 腾讯云
stat -c "%a" filename
644

三、永远不要使用 777

设置 777 权限意味着文件或者文件夹可以被所有用户读写,执行,这可能导致巨大的安全风险。

例如,如果你将/var/www文件夹下的文件和子目录递归设置为777,任何用户都将可以创建,删除或者修改文件夹中的文件。

如果你在你的文件服务器中遇到权限问题,千万不要递归设置它们的权限文件777,修改它们的归属为运行应用的用户,并且设置文件的权限为644,文件夹的权限为755

文件归属可以使用chown命令来修改,文件夹权限可以使用chmod来修改。

比如说你在你的服务器上以用户 “linuxize”运行一个 PHP 应用。想要设置正确的权限,运行:

chown -R linuxize: /var/www
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

仅仅 root,文件所有者,或者有 sudo 权限的用户可以修改文件权限。使用chmod时,需要格外小心,特别是递归修改权限的时候。

四、总结

如果你正在管理一个 Linux 系统,了解 Linux 权限如何运作是非常重要的。

你永远不要对文件和文件夹设置777(rwxrwxrwx)权限。777意味着所有人都可以对那些文件做任何事情。




如果你有任何疑问,请通过以下方式联系我们:

微信:

微信群: 加上面的微信,备注微信群

QQ: 3217680847

QQ 群: 82695646 雪梦科技交流群

原文 :https://linuxize.com/post/what-does-chmod-777-mean/

    版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。知识共享许可协议
腾讯云:新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。

相关推荐