• 【Linux】- 权限管理


    root用户就是上帝
    权限就是用来限制普通用户的,权限对root用户没有用。

    1、Shell命令以及运行原理

    为什么会有Shell外壳?

    • 因为我们一般人是看不懂操作系统内部结构的,而且直接在操作系统上操作很容易发生错误
      Shell外壳就像一个翻译官

    在这里插入图片描述

    如果直接让用户与操作系统内核沟通,那么用户就必须熟悉操作系统,这样学习成本太高也不安全,所以 Linux 设立 shell 作为媒介中间人给操作系统传达用户的指令。
    shell 的定义就是命令行解释器

    • 用于将使用者的命令翻译给操作系统核心处理
    • 再将核心的处理结果翻译给用户。

    对比Windows ,我们操作windows 不是直接操作Windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。

    Shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。

    2、权限

    2.1用户

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

    • 超级用户:(只有一个)可以再linux系统下做任何事情,不受权限约束
    • 普通用户:(可以有多个)在linux下做有限的事情。

    超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
    命令: su [用户名]
    功能:切换用户。
    例如

    • 要从root用户切换到普通用户user,则使用 su user,是不需要密码的
    • 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码
      在这里插入图片描述
      想再切回去,就直接Ctrl + d / logout 也就是退出。
      在这里插入图片描述
    • 要从普通用户user1切换到另一个普通用户user2,则使用 su user2,是需要输入user2用户的密码

    2.2 对角色和文件操作

    不是 VIP 就不能看会员电影,是对角色进行约束。
    书是不能吃的,有些事物是不具备某些属性的。

    权限描述的就是人和事物属性的关系

    • 文件访问者的就是人
    • 文件类型及访问权限就是事物属性

    2.3 Linux下文件的权限

    Linux下的"人"可以分为:

    • 拥有者:文件属于谁
    • 所属组:文件属于哪一个组
    • other: 不属于上面的任何一种

    在这里插入图片描述

    在这里插入图片描述

    第一个字符代表文件的类型

    • “d” 代表文件夹
    • “-” 代表普通文件
    • “p” 代表管道文件
    • “c” 代表硬件字符设备(如:键盘显示器)
    • “b” 代表硬件块设备(如:磁盘设备)
    • “s” 表示管道文件
    • “l” 代表软链接文件(像Windows系统中的桌面快捷文件)

    在Linux下,不以文件后缀来区分文件类型(你可以使用给自己看,在系统层面没有意义)。

    文件属性的剩下九列,三三为一组,分别代表的是文件拥有者所属组其他人对文件的权限。
    基本权限

    • 读权限(r) :对于文件,具有读取文件内容的权限;对于目录,具有浏览目录的权限。
    • 写权限(w) :对于文件,具有修改文件内容的权限;对于目录,具有删除、移动目录内文件的权限。
    • 可执行权限(x):对于文件,具有执行文件的权限;对于目录,该用户具有进入目录的权限。
    • "-"表示不具有该项权限

    2.4权限的表示

    2.4.1 字符表示法

    Linux表示说明Linux表示说明
    r--只读-w-只写
    --x可执行rw-可读可写
    r-x可读可执行-wx可写可执行
    rwx可读可写可执行---无任何权限

    2.4.2 8进制数字表示法

    由于权限字符的位置是固定的,去掉首位,三三为一组,位置确定,有无权限可以用1和0 表示,所以权限也可以用二进制或八进制表示

    权限符号二进制八进制
    r1004
    w0102
    x0011
    r--1004
    -w-0102
    --x0011
    rw-1106
    r-x1015
    rwx1117
    -wx0113
    ---0000

    3 修改权限

    修改文件的权限分为两种,一是修改文件的读写执行属性,二是修改文件的拥有者和所属组

    3.1修改文件的读写执行属性

    • chmod

    功能: 设置文件的访问权限
    格式: chmod [参数] 权限 文件名
    常用选项

    • R -> 递归修改目录文件的权限
      说明:只有文件的拥有者root才可以改变文件的权限

    3.1.1 用户表示符 +/- 权限字符

    • +:向权限范围增加权限代号所表示的权限
    • -:向权限范围取消权限代号所表示的权限
    • =:向权限范围赋予权限代号所表示的权限
    • 用户符号
      • u:拥有者
      • g:拥有者同组用
      • o:其它用户
      • a:所有用户

    将test文件所有人的全部权限都去掉

    [test@VM-8-15-centos ~]$ ll 
    drwxrwxr-x 2 test test 4096 Aug 31 21:28 test 
    [test@VM-8-15-centos ~]$ chmod u-r test
    [test@VM-8-15-centos ~]$ chmod u-w test 
    [test@VM-8-15-centos ~]$ chmod u-x test 
    [test@VM-8-15-centos ~]$ chmod g-r test 
    [test@VM-8-15-centos ~]$ chmod g-w test 
    [test@VM-8-15-centos ~]$ chmod g-x test
    [test@VM-8-15-centos ~]$ chmod o-r test 
    [test@VM-8-15-centos ~]$ chmod o-x test 
    [test@VM-8-15-centos ~]$ ll 
    d--------- 2 test test 4096 Aug 31 21:28 test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    将test文件所有人的权限都去掉

    [test@VM-8-15-centos ~]$ chmod u+rwx,g+rwx,o+rwx test  
    [test@VM-8-15-centos ~]$ ll 
    drwxrwxrwx 2 test test 4096 Aug 31 21:28 test 
    
    • 1
    • 2
    • 3

    或者

    [test@VM-8-15-centos ~]$ ll
    drwxrwxrwx 2 test test 4096 Aug 31 21:28 test
    [test@VM-8-15-centos ~]$ chmod a-rwx test  #所有用户的全部权限都去掉
    [test@VM-8-15-centos ~]$ ll
    d--------- 2 test test 4096 Aug 31 21:28 test
    [test@VM-8-15-centos ~]$ chmod a+rwx test #将所有用户的全部权限都加上
    [test@VM-8-15-centos ~]$ ll
    drwxrwxrwx 2 test test 4096 Aug 31 21:28 test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.1.2 八进制方案修改权限

    在前面已经说过,八进制数字也能够表示访问者的权限,两种方式都是等价的
    实例:

    [test@VM-8-15-centos ~]$ chmod 777 test  #所有用户的全部权限都加上
    [test@VM-8-15-centos ~]$ ll
    drwxrwxrwx 2 test test 4096 Aug 31 21:28 test
    [test@VM-8-15-centos ~]$ chmod 000 test #所有用户的全部权限都去掉
    [test@VM-8-15-centos ~]$ ll
    d--------- 2 test test 4096 Aug 31 21:28 test
    [test@VM-8-15-centos ~]$ chmod 666 test  #所有用户的读写权限都加上
    [test@VM-8-15-centos ~]$ ll
    drw-rw-rw- 2 test test 4096 Aug 31 21:28 test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.2 修改文件的拥有者和所属组

    • chown

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

    • -R 递归修改文件或目录的所属组

    实例

    bak.txt文件给 dxl 用户

    [test@VM-8-15-centos ~]$ chown dxl bak.txt
    chown: changing ownership of ‘bak.txt’: Operation not permitted
    
    • 1
    • 2

    因为testdxl 这两个都是普通用户,所以不能直接修改
    我们换成root用户,强制修改文件拥有者

    [test@VM-8-15-centos ~]$ su            #切换成root
    Password: 
    [root@VM-8-15-centos test]# whoami
    root
    [root@VM-8-15-centos test]# chown dxl bak.txt  #修改文件的拥有者
    [root@VM-8-15-centos test]# ll
    --w-rw-r-- 1 dxl  test   11 Aug 27 17:23 bak.txt
    [root@VM-8-15-centos test]# chgrp dxl bak.txt  #修改文件的所属组
    [root@VM-8-15-centos test]# ll
    --w-rw-r-- 1 dxl  dxl    11 Aug 27 17:23 bak.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    把文件的拥有者和所属组改回来

    [test@VM-8-15-centos ~]$ ll
    --w-rw-r-- 1 dxl  dxl    11 Aug 27 17:23 bak.txt
    [test@VM-8-15-centos ~]$ su
    Password: 
    [root@VM-8-15-centos test]# chown test:test bak.txt
    [root@VM-8-15-centos test]# ll
    --w-rw-r-- 1 test test   11 Aug 27 17:23 bak.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • sudo

    功能:短暂提升到 root 权限,使后面的语句以root的身份执行,一般10-15分钟内有效
    格式:sudo 语句
    只需要输入你的普通用户的密码即可
    想要执行sudo语句,该用户必须在root的信任列表里

    • 添加到信任列表

    root用户下,命令行输入

    vim /etc/sudoers
    
    • 1

    然后往下面找,找到一个%wheel ALL=(ALL) ALL就可。
    在这里插入图片描述
    插入你的用户,强制保存并提出,你的用户就添加到了信任列表。

    问:为什么在Linux里面没有命令把人改成other呢?
    :因为other是不确定的,不具体的;把拥有者和所属组改了以后other也就改了。所以不需要命令来修改other。

    3.3目录权限

    3.3.1 目录权限的理解

    可读权限 r: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
    可写权限 w: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
    可执行权限 x: 如果目录没有可执行权限, 则无法cd到目录中

    在这里插入图片描述
    有人就要问了:这个用户在文件的所属组中,为什么进不去了呢?
    因为权限只会被认定一次,首先判定你是不是文件拥有者。如果是,那么就会认定你是拥有者,不会去再判定你是不是所属组了;如果你不是拥有者,才会去看你是不是所属组。

    3.3.2 权限掩码 umask

    在Linux中默认:

    • 一个目录被创建,起始权限是:777
    • 一个普通文件被创建,起始权限是:666

    但是我们新创建的目录和文件权限也不是 777 和 666 啊
    在这里插入图片描述
    这是因为创建文件或目录时还要受权限掩码umask的影响

    • umask

    功能: 查看或修改文件掩码
    格式: umask 权限值
    说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限

    [test@VM-8-15-centos test1]$ umask  # 普通用户默认为0002
    0002
    
    • 1
    • 2
    [root@VM-8-15-centos ~]# umask  #超级用户默认掩码值为0022
    0022
    
    • 1
    • 2

    凡是在umask中出现的权限,都不应该在最终权限中出现 – 不是减法
    最终权限 = 起始权限 & ~umask
    在这里插入图片描述

    umask还可以修改,但只是在本次登录有效

    [test@VM-8-15-centos test1]$ umask 0777
    [test@VM-8-15-centos test1]$ touch file
    [test@VM-8-15-centos test1]$ mkdir dir
    [test@VM-8-15-centos test1]$ ll
    d--------- 2 test test 4096 Sep 10 16:40 dir
    ---------- 1 test test    0 Sep 10 16:40 file
    [test@VM-8-15-centos test1]$ umask
    0777
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3.4 粘滞位

    如果在一个团队中,要在一个用户目录下工作,但是创建的目录可以被其他用户删除,不论该用户是否具有文件的写权限。
    在这里插入图片描述
    可以删除不能写的文件(我虽然不能往文件里写内容,但是我可以删文件)
    这是不合理的,我创建的一个文件,别人不能写入内容竟然可以删掉。

    针对这样的问题Linux引入了粘滞位
    允许other在目录下创建文件,所以目录对other要有w权限,只允许other删除自己的文件,不能删除公共的目录,所以需要对目录增加限制,加粘滞位。

    首先:粘滞位是针对目录的,对文件无效。
    设置方法:chmod +t 目录
    在这里插入图片描述
    在这里插入图片描述

    当一个目录被设置为粘滞位,则该目录下的文件只能由:
    一:root 用户删除。
    二:该目录的所有者删除。
    三:该文件的所有者删除。

    误区
    在这里插入图片描述
    这里,我 root 创建了一个目录,然后设置了一个粘滞位的选项,其他用户还能把这个目录删了
    这是因为目录里面没有创建文件

    如果说你root用户,创建了一个目录,然后设置了一个粘滞位的选项,并且root用户你在当前这个目录下创建了你自己的一个文件,然后其他的普通用户不能删除掉这个目录的,要不然就说存在了上面所说的情况,文件我干不了,我直接把目录给他干掉,那这个粘滞位的一个意义,就不存在了。

  • 相关阅读:
    SQL Developer不显示左侧数据库连接目录怎么处理
    Unity网络通信与数据存储(一)
    Python基础(二)
    基于C语言实现的自动打乱九宫格并且还原
    java即时高校信息发布系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    软件工程毕业设计课题(82)微信小程序毕业设计PHP共享停车位小程序系统设计与实现
    golang设计模式——设计原则
    centos7编译安装qt4遇到的问题
    【最强最全车牌识别算法】支持13种中文车牌识别的云端API部署(可直接获取源码使用)
    YOLOV7训练TT100K交通标识符数据集
  • 原文地址:https://blog.csdn.net/qq_54880517/article/details/126628648