• 07-Linux基本权限


    1. 权限基本概述

    1.1 什么是权限?
    权限: 操作系统对用户能够执行的功能所设立的限制, 主要用于约束用户能对系统所做的操作, 
    以及内容访问的范围, 或者说, 权限是指某个特定的用户具有特定的系统资源使用权力.
    
    • 1
    • 2
    1.2 为什么要有权限?
    因为系统中不可能只存在一个root用户, 一定会存在多个用户, 为了保护每个登陆用户的隐私和工作环境, 所以就有了权限.
    
    • 1
    1.3 权限与用户之间的关系?
    在Linux系统中, 针对文件定义了三种身份,
    分别是属主(owner)、属组(group)、其他人(others), 
    每一种身份又对应三种权限, 分别是可读(readable)、可写(writable)、可执行(excutable).
    
    • 1
    • 2
    • 3

    img

    用户对文件资源, 有三种角色, 一个用户访问文件流程如下:
    
    1. 判断用户是否为文件所有者, 如果是, 则按所有者的权限进行访问  
    2. 判断用户是否为文件所有组成员, 如果是, 则按组的权限进行访问  
    3. 如果不是所有者, 也不是该文件所属组, 则按匿名权限进行访问
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1.4 权限中的rwx分别代表什么含义?
    使用ls -l查看一个文件的详细属性时, 能看到每个文件都有一个9位基本权限位, 
    比如: rwxr-xr-x 其中每三位字符为一组, 分别表示属主权限位, 属组权限位, 匿名权限位.  
    linux中基本权限位则是使用这9位字符来表示, 主要控制文件属主(User)、属组(Group)、其他用户(Other)
    
    • 1
    • 2
    • 3
    字母含义对应权限
    r(read)读取权限4
    w(write)写入权限2
    x(execute)执行权限1
    -(没有权限)没有权限0
    PS: 如果权限位不可读、不可写、不可执行, 则全部使用-作为占位符表示.
    
    • 1
    文件示例: rwxrw-r– alice hr file1.txt  
    
    Q1: alice对file1文件拥有什么权限?  
        alice是文件的属主对应rwx, 拥有文件读写执行权限.
        
    Q2: jack  file1.txt 文件有什么权限? 前提:jack 属于 hr   
        jack 属于 hr, hr属组对应rw-, 拥有文件的读写权限.
        
    Q3: tom  file1.txt 文件有什么权限?
        tom没有前题条件输入其他用户对应-r–, 对文件只有读的权限.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2. 权限设置方法

    Linux下使用chmod命令来变更权限, root用户可以变更所有文件的权限, 而普通用户仅能变更属于自己的文件.
    选项:  -R递归修改  
    
    • 1
    • 2
    2.1 文件设置权限方式1
    字母缩写含义:
    a = all
    u = user
    g = group
    o = other
    
    运算符含义:
    = 设置权限 a=rwx 为所有用户设置读写执行权限
    + 添加权限 g+x   为属组设置添加执行权限
    - 删除权限 g-x   为属组设置删除执行权限
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
     # 创建文件  
    [root@kid ~]# touch file  
    # 给所有人添加读写执行权限
    [root@kid ~]# chmod a=rwx file     
    # 取消所有的权限
    [root@kid ~]# chmod a=-rwx file       
    # 属主读写执行, 属组读写, 其他人无权限 
    [root@kid ~]# chmod u=rwx, g=rw, o=- file    
    # 属主属组读写执行, 其他人读权限
    [root@kid ~]# chmod ug=rwx, o=r file           
    [root@kid ~]# ll file  
    -rwxrw-r-- 1 root root 0 Apr 13 03:29 file  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    2.2 文件设置权限方式2
    number
    
    • 1
    # 创建文件
    [root@kid ~]# touch file  
    # 属主读写执行  属组其他人可读
    [root@kid ~]# chmod 644 file  
    # 属主读写执行 属组其他人没有权限
    [root@kid ~]# chmod 600 file  
    [root@kid ~]# ll file  
    -rw------- 1 root root 0 Apr 13 03:29 file  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    2.3 目录设置权限
    # 针对目录设定权限  
    [root@kid ~]# mkdir dir  
    # 修改目录允许所有人访问  
    [root@kid ~]# chmod 777 dir/    
    # 修改目录及子目录权限 
    [root@kid ~]# chmod -R 755 dir/  
    [root@kid ~]# ll -d dir/  
    drwxr-xr-x 2 root root 6 Apr 13 03:34 dir/  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    针对 hr 部门的访问目录/home/hr 设置权限, 要求如下:  
    1. root 用户和 hr 组的员工可以读、写、执行  
    2. 其他用户没有任何权限
    
    • 1
    • 2
    • 3
    # 创建hr用户(会自动创建/home/hr目录)
    [root@kid ~]# groupadd hr  
    # 设置用户, 并设置分组
    [root@kid ~]# useradd hr01 -G hr  
    [root@kid ~]# useradd hr02 -G hr  
    
    # 设置权限 
    [root@kid ~]# chmod 770 /home/hr  
    [root@kid ~]# ll -d /home/hr  
    drwxrwx--- 2 root hr 6 Apr 13 03:26 /home/hr  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3. 文件权限与目录权限

    在Linux中权限对文件和对目录的影响是有不同区别的.
    
    • 1
    权限对文件的影响对目录的影响
    读取权限(r)具有读取阅读文件内容权限具有浏览目录及子目录
    写入权限(w)具有新增、修改文件内容的权限具有增加和删除目录内文件 具有增加和删除目录内文件(需要x权限, 单独w屁都没有)
    执行权限(x)具有执行文件的权限具有访问目录的内容(取决于目录中文件权限)
    3.1 文件权限
    # 1.新建文件, 并添加内容至文件中
    [root@kid ~]# echo "date" > filename  
    # 默认文件其他用户仅有读权限 
    [root@kid ~]# ll filename 
    -rw-r--r--. 1 root root 5 Aug 31 15:19 filename
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 2.切换为普通用户  
    [root@kid ~]#  su - qq 
    s/1
    
    # 3.普通用户查看root下的文件, 提示没有权限
    [qq@kid /]$ cat  /root/filename 
    cat: /root/filename: Permission denied
    
    # 切换到根目录
    [qq@kid ~]$ cd /
    
    # 普通用户对root目录没有任何权限
    [qq@kid /]$ ll
    ...
    dr-xr-x---.   2 root root  180 Aug 31 15:19 root
    ...
    
    # 提供 访问目录的内容 权限
    [qq@kid /]$ su - root
    Password: 
    [root@kid ~]# chmod o=x /root
    
    
    # 切换为普通用户
    [root@kid ~]#  su - qq 
    # 查看文件内容
    [qq@kid ~]$ cat /root/filename
    date
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    # 4.使用root增加文件的可执行权限(x)  
    [root@kid ~]# chmod o+x /root/filename  
    [root@kid ~]# ll /root/filename  
    -rw-r--r-x. 1 root root 5 Aug 31 15:19 /root/filename
    
      
    # 5.测试x权限是否真的能执行该文件  
    [root@kid ~]# /root/filename  
    # 普通非脚本文件执行就显示当前时间
    Wed Aug 31 16:01:39 CST 2022 
    
    # 如果普通用户需要执行文件, 需要配合r权限
    # 删除r权限
    [root@kid ~]# chmod o-r /root/filename 
    [root@kid ~]# ll /root/filename 
    -rw-r----x. 1 root root 5 Aug 31 15:19 /root/filename
    [root@kid ~]# su - qq
    # 再次执行文件, 提示没有权限
    [qq@kid ~]$ /root/filename
    bash: /root/filename: Permission denied
      
    # 6.增加w执行权限  
    [root@kid ~]# chmod o+w /root/filename  
    [root@kid ~]# ll /root/filename  
    -rw-r--rwx 1 root root 5 Jan 24 08:24 /root/filename  
      
    # 7.测试编辑权限  
    [kid@kid ~]$ vim /root/filename 
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    PS: 总结rwx对文件的影响  
    读取权限(r)具有读取阅读文件内容权限  
    1. 只能使用查看类命令cat、head、tail、less、more
    
    写入权限(w)具有新增、修改文件内容的权限  
    1. 使用vim编辑会提示权限拒绝,  但可强制保存, 会覆盖文件的所有内容  
    2. 使用echo命令重定向的方式可以往文件内写入数据, >>可以进行追加  
    3. 不能删除文件, 因为删除文件看的不是文件的属性, 需要看上级目录是否有w的权限
    
    执行权限(x)具有执行文件的权限  
    1. 执行权限对文本文件没有实际的用处  
    2. 如果普通用户需要执行文件, 需要配合r权限
    
    
    文件r权限,  只给用户查看, 无其他操作  
    文件rw权限,  可以查看和编辑文件内容  
    文件rx权限,  允许查看和执行文件、但不能修改文件
    文件rwx权限,  能读, 能写, 能执行, 但不能删除, 因为删除需要看上级目录的权限有没有w权限
    文件的x权限小心给予, 文件通常设定的权限是644
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    3.2 目录权限
    创建目录, 并在该目录下创建文件, 匿名用户对目录没有w权限, 所有对文件有777权限   
    
    • 1
    #  创建目录
    [root@kid ~]# mkdir ./dirname  
    
    # 查看权限
    [root@kid ~]# ll
    ...
    drwxr-xr-x. 2 root root    6 Aug 31 16:21 dirname
    ..
    
    # dirname目录下创建文件
    [root@kid ~]# echo "test" >> ./dirname/filename  
    [root@kid ~]# chmod 777 ./dirname/filename  
    
    [root@kid ~]# ll dirname/
    -rwxrwxrwx. 1 root root 5 Aug 31 16:23 filename
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    # 普通用户验证权限, 能正常查看 
    [kid@kid ~]$ cat ./dirname/filename  
    test  
    [kid@kid ~]$ rm -f /dirname/filename  
    # 某些老版本可能无法删除[linux7我测试是没有问题的] 
    rm: cannot remove ‘/dirname/filename’: Permission denied  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    PS: 总结rwx对目录的影响  
    读取权限(r), 如果目录只有r权限: 仅仅只能浏览目录内的文件名, 无其他操作权限
    	1. 可以使用ls命令浏览目录及子目录,  但同时也会出现权限提示 
    	2. 使用ls -l命令浏览目录及子目录, 文件属性会带问号, 并且只能看到文件名  
    
    写入权限(w), 如果目录只有w权限: 什么权限都没有...
    执行权限(x), 如果目录只有x权限: 只能进入目录, 不能进行浏览、复制、移动、删除的操作
    
    目录rx权限,  允许浏览目录内文件以及子目录、 不允许创建、删除文件和目录  
    目录wx权限,  能进入目录, 能删除内容, 能写入内容, 但就是无法使用ls cat这样的命令
    目录rw权限,  能看, 能写, 但无法进入目录
    * 目录的 w权限小心给予,  通常目录设定的权限是755  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4. 属主属组设置

    变更文件属主和属组的意义?  
    比如:
    A出售房子dir进行变现, 将房子dir过户给B, 过户成功房字dir就属于B, 
    那么此时房子dir的拥有者就属于属于B而不再属于A.  
    
    • 1
    • 2
    • 3
    • 4

    img

    在Linux中如何变更一个文件或者一个资源的属主和属组呢, 可以使用chown、chgrp命令实现.  
    chown能设置属主和属组, chgrp仅能设置属组.
    
    • 1
    • 2
    4.1 测试环境
    # 准备环境, 创建文件和目录  
    [root@kid ~]# mkdir dir && touch dir/file
    
    # 创建用户q1
    [root@kid ~]# useradd q1
    uid=1009(q1) gid=1017(q1) groups=1017(q1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.2 chowm命令
    设置属主和属组命令: 
    chown [属主].[属组] 参数
    仅设置属主 chown [属组.] 参数
    设置属主 chown [属组] 参数 或chown [.属组] 
    
    -R:递归修改  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 仅修改属主
    # 修改属主为q1
    [root@kid ~]# chown q1. dir
    [root@kid ~]# ll
    drwxr-xr-x. 2 q1   root     18 Sep  1 16:58 dir
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2. 仅修改属组
    # 修改属组为q1 (.可以省略)
    [root@kid ~]# chown .q1 dir/  
    [root@kid ~]# ll
    drwxr-xr-x. 2 q1   q1     18 Sep  1 16:58 dir
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3. 修改属主与属组
    # 递归修改目录及目录下的所有文件属主和属组  
    [root@kid ~]# chown -R root.root dir
    [root@kid ~]# ll
    drwxr-xr-x. 2 root root   18 Sep  1 16:58 dir
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4.3 chgrp命令
    设置属组命令: chgrp [属组] 参数
    -R:递归修改  
    
    • 1
    • 2
    # 递归修改目录及目录下的所有文件属组 
    [root@kid ~]# chgrp -R q1 dir
    [root@kid ~]# ll
    drwxr-xr-x. 2 root q1     18 Sep  1 16:58 dir
    ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    C++ 运算符重载详解
    Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!
    tiup update
    基于JAVA的网上图书商城参考【数据库设计、源码、开题报告】
    杰发科技AC7840——CAN通信简介(6)_监听模式
    SpringClouldAlibaba 之 Sentinel流控规则同步到nacos(并重新生成镜像)
    AWS】在EC2上创建root用户,并使用root用户登录
    Hexagon_V65_Programmers_Reference_Manual(23)
    TCP/IP笔记
    【个人笔记本】本地化部署详细流程 LLaMA中文模型:Chinese-LLaMA-Alpaca-2
  • 原文地址:https://blog.csdn.net/qq_46137324/article/details/126647817