Linux 权限的理解

Posted 正义的伙伴啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 权限的理解相关的知识,希望对你有一定的参考价值。

Linux 权限的理解

用户的概念

Linux下有两种用户:普通用户 和 超级用户(root)

  • 超级用户:不受文件权限的限制,可以做任何事情
  • 普通用户:在Linux下做有限的事情

超级用户命令提示符是“#” ,普通用户的命令提示符是“$”

如何快速切换用户?
命令: su 用户名

如果切换成root用户还可以写成: su -

然后会让你输入用户的密码,这里输入的密码是不会显示的 ,输入完按一下回车就行了

权限的决定因素

文件的权限由两个决定因素: 角色文件属性

文件访问者的分类(角色)

  • 文件和目录的拥有者: u – user
  • 文件和目录所属的组: g – group
  • 其他用户:o – other

由于Linux是一个多人多任务的环境,所以一个项目是由多个人共同完成,所以这里的group就起到至关重要的作用。例如:你和你的组在共同完成一个任务,你希望你完成的文件被组员看到,而不被非组员的任何人看到,那你只需要对g 和 o设置权限即可。

文件的属性

  • r:代表文件可读
  • w:代表文件可修改
  • x:代表文件可执行
  • -:代表没有相应权限位上的权限

对于每一个角色都要规定文件的属性:所以我们把【rwx】作为一组,如果没有相应的权限就用 - 代替
例如:该文件只可以读 就表示为:【r–】
由于一个文件要面向三个角色,所以就有三组!

文件类型和访问权限

首先创建一个文件:

然后我们用 指令 ls -al查看一下这个文件的详细信息

这里的每一个符号都代表一个意义

  1. 文件类型:
    d:文件夹
    -:普通文件
    l:软连接
    b:块设备文件
    p: 管道文件
    c: 字符设备文件
    s: 套接口文件
  2. 接下来就是user,group,other的权限,三组一共九位
  3. 链接数:表示有多少个文件名连接到此节点,
  4. 文件的拥有者:也就是哪个用户创建的这个文件
  5. 文件所在的用户组:也就是文件所属的用户组
  6. 文件的大小:单位:bytes(字节)
  7. 文件创建或最近修改的时间:也可以用ls -l --full-time 文件名来查看
  8. 最后一个是文件名

文件权限的表示方法

符号类型

符号类型也就是前面所讲的 【rwx】表示方法:

表示说明
r w x可 读、写、执行
- - -不可读、不可写、不可执行
-wx可写、可执行
r-x可读、可执行
rw-可读、可写
- - x可执行
r- -可读
-w-可写

数字类型

我们用二进制位来表示,如果在该位上有权限则为1,否则为0
例如:rwx 就为 111

表示二进制八进制说明
r w x1117可 读、写、执行
- - -0000不可读、不可写、不可执行
-wx0113可写、可执行
r-x1015可读、可执行
rw-1106可读、可写
- - x0011可执行
r- -1004可读
-w-0102可写

文件权限的修改方法

修改文件属性:chmod

数字类型修改

指令:chmod 八进制 文件名

例如我们想要把 一个文件名为 test 的文件 的权限修改成 rwx rwx rwx
就需要输入:chmod 777 test

符号类型修改


例如:

如果想要把所有角色的权限修改成 rwx,则需要输入指令:chmod a=rwx test

修改文件的所属组:chgrp

指令: chgrp 新的用户组 老的用户组
但是注意: 要修改成的用户组一定要存在!

修改文件的所属者:chown

指令:chown 新用户名 文件名

但是注意: 要修改成的用户一定要存在!

目录的权限

目录权限也十分重要,前面讲过ls -al打印出来的文件信息的第一位是文件的类型,那么目录文件的开头第一个字母一定是d

那我们就要重新认识一下在目录文件下的文件的属性:

  • r:表示具有读取目录结构列表的权限,所以当你拥有r权限时,你可以用指令ls查看目录里面文件的信息
  • w:可以改动目录里面的文件,包括以下操作:
    - 建立新的文件和目录
    - 删除已经存在的文件和目录(不论文件的权限是什么)
    - 将目录中的文件改名
    - 移动该目录中的文件的位置
  • x:代表用户是否能进入目录

这里要重点理解x权限,如果每有x权限,就无法进入目录,也就无法读取、修改目录里面的内容,也就是每有x权限即使拥有rw权限也没有什么用

还有一个重点就是关于文件删除的问题:
不知道大家有没有发现,一个文件是否可以被删除,不是取决于文件的权限,而是取决于该文件所在目录对用户的权限,如果目录有w权限(当然肯定要有x权限),该用户就可以删除该目录里面的任何文件,所以目录的权限一般设置为r-x

但是root用户想删谁删谁,想进哪个目录进哪个目录,不管权限啥的😅😅😅😅😅😅


这种连用户自己创建的文件都进不去的,root照样能进去😅😅😅😅😅😅,还能写入读取

注意这里还有一种特殊的目录权限设置 -wx

这里虽然无法读取目录里文件名,但是可以对文件进行操作,就像一个盲盒一样虽然你看不见,但是你知道里面的东西,并可以对立面的东西修改

粘滞位

那如何让用户拥有目录w、x权限但是又不允许删除特点文件呢?
这里就要用到粘滞位:
指令:chmod +t 目录的路径

我们用root用户创建了一个目录dir

并在目录里创建了两个文件

对kksk使用粘滞位:

这是设置粘滞位之后,我们发现kksk的other权限的x的位置变成t

这里我们切成普通用户:

并执行删除命令,结果发现无法删除:

那么kksk只能由

  1. root超级用户删除
  2. kksk文件的拥有者删除
  3. 该目录的所有者删除

总结

以后再Linux操作系统下如果再遇到“permission denied ”的报错大概率是文件的权限出了问题,检查的时候可以从两个方面出发:文件的权限文件所在目录的权限
其次 一定要注意目录的x权限所代表的意义!

以上是关于Linux 权限的理解的主要内容,如果未能解决你的问题,请参考以下文章

Linux 权限的理解

linux基础-常见指令及权限理解

< Linux入门 > shell运行原理及Linux权限的理解

Linux下的常见指令以及权限理解(下)

金蝶handler中 collection 代码片段理解

Linux权限的理解