写点什么

让你 10 分钟就能看懂 Linux 文件权限(超级详细、超级简单!!!)

  • 2022 年 8 月 01 日
  • 本文字数:2051 字

    阅读完需:约 7 分钟

让你10分钟就能看懂Linux文件权限(超级详细、超级简单!!!)

引言

如果你遇到了修复 web 服务器的文件权限问题,在网上搜索后,有大佬告诉你需要递归地 chmod 777 你的 web 目录!


在这样做之前,你很有必要了解 chmod -R 777 到底做了什么?


为什么你永远不应该将权限设置为 777?


本文解释基本的 Linux 权限模型以及与权限对应的数字的含义



文件权限

在 Linux 中,对文件的访问由操作系统使用文件权限属性所有权进行控制。


通过了解 Linux 文件系统权限模型,可以将对文件和目录的访问限制为仅由授权用户和进程访问,从而使系统更加安全。


每个文件由特定用户和组拥有,并为三种不同类别的用户分配权限访问权



一、不同类别

  • 文件所有者

  • 群组成员

  • 其他人(其他所有人)


有三种文件权限类型适用于每个用户类,并允许指定允许哪些用户读取文件、写入文件或执行文件

二、相同的权限属性适用于含义不同的文件和目录

读权限
  • 该文件是可读的。例如,设置读取权限后,用户可以在文本编辑器中打开文件

  • 可以查看目录的内容。用户可以使用 ls 命令列出目录中的文件

写权限
  • 可以更改或修改该文件

  • 可以更改目录的内容。用户可以创建新文件、删除现有文件、移动文件、重命名文件等

执行权限
  • 可以执行该文件

  • 可以使用 cd 命令进入该目录

可以使用 ls 命令查看文件权限

例:


[root@localhost ~]# ls -l test.txt
复制代码


输出内容如下:


-rw-r--r--. 1 root root 465 Dec 22 17:46 fstab
复制代码

三、详细权限参数含义

第一个字符显示文件类型

它可以是常规文件(-)、目录(D)、符号链接(L)或任何其他特殊类型的文件


接下来的 9 个字符表示文件权限

三个三元组,每个三个字符。


第一个三元组显示所有者权限


第二个三元组显示组权限


最后一个三元组显示所有其他权限

四、权限数字:


文件权限可以用数字或符号格式表示。


在本文中,我们将重点介绍数字格式。


权限可以由三位或四位数字组成,范围从 0 到 7。


当使用 3 位数字时,第一位代表文件所有者的权限,第二位代表文件组的权限,最后一位代表所有其他用户的权限。

写入、读取和执行权限具有以下数字值
  • 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。

  • 其他:---=0+0+0=0

当权限使用 4 位数字时,第一个数字的含义如下
  • setuid = 4

  • setgid = 2

  • sticky = 1

  • no changes = 0


接下来的三位数的含义与使用三位数时相同。


如果第一位数字为 0,则可以省略,模式可以用 3 位数字表示,例如 0755 与 755 相同。

要以数字(八进制)表示法查看文件的权限,请使用 stat 命令:
[root@localhost ~]# stat -c "%a" test.txt755
复制代码


输出数字:755

注意:永远不要 chmod 777 对文件或目录设置 777 权限意味着它将对所有用户都是可读、可写和可执行的,并且可能会带来巨大的安全风险

五、例如

如果你以递归方式将 /var/www 目录下所有文件和子目录的权限更改为 777


则系统上的任何用户都可以创建删除修改该目录中的文件。


如果你的 Web 服务器遇到权限问题,请将文件的所有权更改为运行应用程序的用户,并将文件的权限设置为 644,将目录的权限设置为 755,而不是递归地将权限设置为 777

六、chmod 和 chown

1、使用 chmod 命令更改权限



创建一个文件,查询其权限,分别用两种方式修改权限后再次查看(chmod)


[root@localhost ~]# touch xxgc.txt[root@localhost ~]# ll xxgc.txt -rw-r--r--. 1 root root 0 Dec 22 19:03 xxgc.txt[root@localhost ~]# chmod a+x xxgc.txt [root@localhost ~]# ll xxgc.txt -rwxr-xr-x. 1 root root 0 Dec 22 19:03 xxgc.txt[root@localhost ~]# [root@localhost ~]# chmod 777 xxgc.txt [root@localhost ~]# ll xxgc.txt -rwxrwxrwx. 1 root root 0 Dec 22 19:03 xxgc.txt[root@localhost ~]# 
复制代码


2、使用 chown 命令更改文件所有权



将刚刚的 xxgc.txt 文件的所有者和所有组都改为 edc(chown)


[root@localhost ~]# ll xxgc.txt -rwxrwxrwx. 1 root root 0 Dec 22 19:03 xxgc.txt[root@localhost ~]# chown edc:edc xxgc.txt [root@localhost ~]# ll xxgc.txt -rwxrwxrwx. 1 edc edc 0 Dec 22 19:03 xxgc.txt[root@localhost ~]# 
复制代码


假设您的服务器上有一个 PHP 应用程序以用户“harry”身份运行


要设置要运行的正确权限,请执行以下操作


[root@localhost ~]# chown -R harry: /var/www/[root@localhost ~]# find /var/www/ -type d -exec chmod 755 {} \;[root@localhost ~]# find /var/www/ -type f -exec chmod 644 {} \;[root@localhost ~]# 
复制代码

七、注意

只有 root 用户文件所有者或具有 sudo 权限的用户才能更改文件的权限


使用 chmod 时要格外小心,特别是在递归更改权限的时候

八、最后

如果你管理的是 Linux 系统,了解 Linux 权限是如何工作的非常重要


永远不要设置 777(rwx rwx rwx)权限、文件和目录权限


777 意味着任何人都可以对这些文件做任何事情

发布于: 刚刚阅读数: 3
用户头像

🏅️ InfoQ 专家博主 2022.03.08 加入

CSDN:飞向星的客机

评论

发布
暂无评论
让你10分钟就能看懂Linux文件权限(超级详细、超级简单!!!)_Linux_飞向星的客机_InfoQ写作社区