详解Linux权限

1. 权限的概念

Linux有两类用户:超级用户、普通用户

  1. 超级用户可以在Linux中做任何事情,不会受任何限制。
  2. 普通用户只能做有限的事。
  3. 超级用户的命令提示符为‘#’,普通用户的,命令提示符为‘$’。
  4. 超级用户只能有一个,而普通用户可以有多个。

1.1 切换用户身份

普通用户切换成超级用户: su( 空格)- 或者 su,然后输入root的密码。

su -和su的区别是前者是以root的身份重新登入一次,而后面只是用户身份切换成root,以前面的方式切换,目录会回到根目录,而后面的方式切换还是当前目录。

在这里插入图片描述
在这里插入图片描述

超级用户回退到普通用户:exit或者快捷键ctrl+d

在这里插入图片描述

超级用户切换成普通用户:su+用户名,不用输入密码。

在这里插入图片描述

普通用户切换到普通用户:su+用户名,需要输入其他用户的密码。

总结:root可以随意切换成任意普通用户,普通用户切换成root需要root的密码,普通用户的切换需要对方的密码,所以root很重要。

1.2 权限的提升

有时候我们不想切换成root,但是执行的命令需要root级别的权限,这时我们需要在命令前面加上sudo,并且输入自己的密码
在这里插入图片描述
但是可能同学会有疑问,既然只需要输入自己的密码就可以以root的权限执行命令,那么root的密码有什么意义?
在默认情况下,大多数是不能这样执行命令的,会报错
在这里插入图片描述
这是因为在Linux中有一个用户信息列表的配置文件sudoers(属于root),如果用户在这个配置文件中则可以执行sudo命令,不在的话就会报上述的错误,只有root才能将用户添加到白名单。
在这里插入图片描述

2. 权限管理

2.1 文件访问者的分类

  1. 文件和目录的拥有者:u——User
  2. 文件和目录的所属组:g——Group
  3. 其他用户:o——Other

在Linux中由具体的人(root/普通用户)担任上述角色。
在这里插入图片描述

为什么没有其他用户呢?因为其他用户不能确定,访问该文件的只要不是拥有者或者所属组就是other,可以有多个。

2.2 文件类型和权限访问

一个文件有什么权限属性呢?很明显只有r(是否可读)、w(是否可写)、x(是否可执行)。
在这里插入图片描述

  1. 文件类型
    Linux不通过文件后缀来区分文件类型。但是只是Linux系统不关心,但是一些工具,如gcc还是需要后缀的,所以我们尽量要使用正确的后缀来区分文件类型。

d:文件夹
-:普通文件:文本、源代码、视频、图片、可执行等
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

  1. 基本权限
  1. 读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  4. “—”表示不具有该项权限

2.3 文件权限值的表示方式

在这里插入图片描述
八进制表示
在这里插入图片描述

2.4 文件访问权限设置

可以使用chmod命令更改角色对应权限(user-u、group-g、other-o、a-所有用户)。只有文件的拥有者或者root可以改。

  1. 取消权限权:chmod(角色,多个角色以逗号连接)-(r/w/x,可以都写)文件名
    在这里插入图片描述

  2. 增加权限权:chmod(角色,多个角色以逗号连接)+(r/w/x,可以都写)文件名
    在这里插入图片描述

  3. 以三位八进制的形式修改权限(按照二进制和八进制的转换关系,rwx的权重分别为4、2、1,-代表没有)
    在这里插入图片描述

  4. 修改文件的拥有者、所属组

chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名
chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组

注:不能改文件的其他用户,该命令需要root权限。

  1. 权限匹配按照拥有者、所属组、其他用户的顺序一次匹配,只匹配一次
    在这里插入图片描述
  2. root用户为所欲为,权限对它没有用
    在这里插入图片描述

3.umask掩码

因为普通文件可执行程序很少,所以系统默认创建的普通文件的权限是666(起始权限),目录的话大部分都是要给人进入的,所以系统默认创建的目录的权限是777(起始权限),但实际上却不是这个值。
在这里插入图片描述
这是为什么呢?这是因为默认权限还受到umask掩码的影响。

umask指令查看掩码:一共四位数,我们只关心后三位数,第一位表示八进制。
在这里插入图片描述
如何计算默认权限呢?从起始权限中去掉umask中出现的权限(mask & (~umask))。
在这里插入图片描述

umask可以修改吗?使用umask +(自定义数据)就就可以完成。
在这里插入图片描述

4. 目录的权限

4.1 目录的权限

上面的权限所对的都是文件类型,现在我们来看一看目录的权限。

  1. 可执行权限(x):进入一个目录(cd)
    在这里插入图片描述
  2. 可读权限(r):对目录里的文件的属性进行查看的权利(ls -l)
    在这里插入图片描述
  3. 可写权利(w):在目录里创建、删除、修改文件名字的权利(touch、mkdir、mv)
    在这里插入图片描述

4.2 粘滞位

从上面目录权限中,我们可以发现一个问题,只要一个用户对一个目录有w权利,就可以删除目录里所有的文件,有些文件的拥有者可能是其他人,这样是不合理的,我创建的文件凭什么被你删除?所以Linux为了解决这个问题,引入了粘滞位的概念。当然正常情况下,别人是进不到你的目录中写文件的。

我们先了解粘滞位的应用的场景,一台服务器有很多人使用,每个人在机器上都会有一个家目录,在家目录里可以实现自己想要的操作,但是有时候我们需要一个公共路径来完成一些操作,协同来开发,所以Linux系统创建了一个名为tmp的公共路径。
在这里插入图片描述

在公共路径上才可能会发生上面的情况,可以不经过别人的允许,把别人的文件删除的情况,所以粘滞位起到了作用,有人会疑惑直接把tmp目录的w权限的去掉不就行了,这是不合理的,因为去掉了就新建不了自己的文件了。所以粘滞位起到的作用是给目录的other用户设置一个权限t,具有x的功能,同时也作出了限定:目录里的文件只有root和文件的拥有者可以删除。
注:粘滞位只能对目录使用
如何设置粘滞位呢?
chmod t (目录名)

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值