Linux 权限

1. Linux 构成

  • Linux 操作系统,从广义和狭义上讲有两种解释方式:

    • 广义:Linux 系统内核

    • 狭义:Linux 内核 + Linux 外壳和对应的配套程序

  • Linux 程序的执行过程:

    1. 将用户输入的指令,解释传递给内核

    2. 内核执行命令,得到结果,把结果通过外壳传递给用户

      结果的传递依赖命令行解释器

      命令行解释器接收到指令之后,会创建子进程以执行命令,父进程则继续进行命令行获取

      shell 是对命令行解释器的统称,细分到各个发行版有 bashsh

  • 为什么用户不和系统内核直接交互?

    • 直接和系统内核交互,过于复杂,外壳负责对命令进行解释

    • 当用户发出不合理请求时,由外壳进行拦截以保护操作系统

2. Linux 权限

  • Linux 具体的用户:

    • root - 超级管理员,拥有几乎所有的权限

    • 普通用户,受权限约束

      普通账户提权命令:

      • su 单纯的账号切换

      • su - 让 root 账号重新登陆

      普通账户执行 root 指令:sudo <命令>

      这里输入密码要输入自己账号的密码,输入完成后数分钟不用再输入密码。

      root 账户退出命令:CTRL+D

      root 账户变成任何普通用户:su <用户名>

  • 权限:一件事情是否允许被你做

    命令能否执行,与两个方面有关:

    • 用户 -> 角色:用户是否具有权限

      用户具有三个身份(角色):拥有者,所属组和其他:

      • 拥有者:创建者

      • 所属组:

        • 一个组里可以有很多人,用组长的名字来对组进行命名

        • 特殊情况下,一个组里可以只有一个人

        为什么要有所属组?

        • 进行权限细分,使得用户可以更好的管理文件,以防文件机密泄露

      • 其他:该文件不属于其他人

        不是拥有者,不是所属组,就是 other

    • 事物属性:文件是否拥有读(r),写(w),执行(x)权限

      命令 ll 查看的文件属性,第一列的 10 个字符意思:

      • 第一个字符,代表文件类型

        Linux 文件类型分类:

        • 不同于 Windows,Linux 区分文件类型与文件后缀无关,和文件是否具有可执行权限有关。

        • 后缀的作用:给人看的,同时软件要对后缀名进行识别。

        • - 代表普通文件:源代码,可执行程序,库等、

        • d 代表目录文件

        • c 代表字符设备文件:显示器,键盘 - 以字符为单位输出/输入

        • b 代表块设备文件:硬盘分区

        • l 代表链接文件:快捷方式

        • p 代表管道文件:进程间通信

      • 第 2 ~ 4 个字符,代表该文件身份为拥有者的权限

      • 第 5 ~ 7 个字符,代表该文件身份为所属组的权限

      • 第 8 ~ 10 个字符,代表该文件身份为其他的权限

  • 更改文件的权限:chmod <身份1> <操作><权限> [<身份2> ...] 文件名

    身份:所有人 a,拥有者 u,所属组 g,其他 o

    操作:+ / -

    权限:读(r),写(w),执行(x)

    只有文件的拥有者可以改变该文件的权限,root 不受此限制。

    文件的身份组匹配时,只匹配一次,这意味着一个用户如果同时是文件的拥有者和所属组,所属组的权限对他不起作用。

  • 更改文件的权限还有一种方法:chmod 数字 文件名

    数字:用三个二进制位代表一个用户的 r w x 权限,比如 111 代表该用户同时拥有三种权限

    111 转换成真值是 7,所以三个真值就分别代表三种用户的权限

    • 777 三种用户都具有三个权限

    • 664 other 没有执行权限

    • ...

    为什么目录的默认权限是 775 而普通文件的默认权限是 664 ?

    • 目录的起始权限是 777,普通文件的起始权限是 666

    • 权限掩码:umask [新掩码] 查看/修改,显示一个四位的八进制数字:

      • 第一个 0,代表八进制的前缀

      • 第 n 个 0,代表 拥有者(1)/所属组(2)/other(3) 创建文件时起始权限要去掉对应数字,例如 umask = 002,那么目录文件的默认权限就是 777 - 002 = 775

      • 如果该用户的起始权限没有,但是根据 umask 要被减掉,那么不会借位。

        例如, 664 -> 110 110 100

        umask = 003 -> 000 000 011


        相减得 664 -> 110 110 100,umask 减去的权限被忽略。

        所以 umask 也可以理解为,把 umask 二进制位为 1 的对应的用户权限二进制位清 0。

        对应算法:先把 umask 按位取反,再和起始权限按位与,最终得到结果。

        任何数和 1 与等于本身,和 0 与都等于 0。

  • 更改文件的所有者:chown 新所有者 文件名

    然而需要别人同意。

    • 方法一:sudo 提升权限

    • 方法二:su 切换成 root 用户,再给别人

  • 更改文件的所属组:chgrp 新所属组 文件名

    方法同上。

  • 同时更改文件的拥有者和所属组:chown 新所有者:新所属组 文件名

    目录文件是否可以进入,取决于角色是否具有目录的 x 权限。

    目录中的文件是否可以 ls,取决于角色是否具有目录的 r 权限。

    查看文件属性的权限,属于该文件所属的目录而不属于该文件。

    目录中的文件是否可以 touch/mkdir/rm,取决于角色是否具有目录的 w 权限。

    如果我已经取消了这个文件 other 的 r w 权限,但是有人直接把文件删除了,怎么办?

    • 一般情况下不可能发生,因为别人没有权限进入你的家目录。

    • 但是如果是一个合作场景,大家都在 root 创建的共享目录下工作,所有人都必须有 r w x 权限,此时更改文件的权限不能阻止别人删除你的文件。

    • 所以操作系统新增了权限 - 粘滞位:

  • chmod +t 目录名 给目录添加粘滞位,添加后在该目录内只有文件的拥有者可以删除自己的文件,其他人不能删除。

    当然 root 也可以删除。

  • file 文件/路径名 辨识文件类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值