• Linux实操篇-组管理和权限管理



    1 Linux 组基本介绍

    在 Linux 中的每个用户必须属于一个组,不能独立于组外。
    在Linux 中每个文件有所有者、所在组、其他组的概念。

    1. 所有者
    2. 所在组
    3. 其他组
    4. 改变用户所在的组

    在这里插入图片描述

    2 文件/目录 所有者

    一般为文件的创建者,谁创建了该文件,就自然的成为了该文件的所有者。

    2.1 查看文件的所有者

    • 指令:ls -ahl
    • 应用实例:

    在这里插入图片描述

    2.2 修改文件所有者【change own】

    • 指令:chown 用户名 文件名
    • 应用实例:
      • 要求:使用 root 创建一个文件 apple.txt ,然后将其所有者修改成 tom
      • chown tom apple.txt

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

    3 组的创建

    • 基本指令:groupadd 组名
    • 应用实例:
      • 创建一个组 monster
      • groupadd monster
      • 创建一个用户 fox ,并放入到 monster 组中
      • useradd -g monster fox

    在这里插入图片描述

    4 文件/目录 所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

    4.1 查看文件/目录 所在组

    • 基本指令:ls -ahl
    • 应用实例:
      • 使用 fox 创建一个文件,看看这个文件属于哪个组

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

    4.2 修改文件所在的组

    • 基本指令:chgrp 组名 文件名

    • 应用实例:
      使用root用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit 组

      • 先创建 fruit 组 => groupadd fruit
      • 使用root登录,创建文件 => touch orange.txt
      • 看看当前这个文件属于哪个组 -> root组
      • 修改文件所在组 => chgrp fruit orange.txt

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

    5 其他组

    除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

    6 改变用户所在组

    在添加用户时,可以指定将该用户添加到哪个组中,同样的用 root 的管理权限也可以改变某个用户所在的组

    • 指令:
    1. usermod -g 新组名 用户名 改变用户所在组
    2. usermod -d 目录名 用户名 改变该用户登录的初始目录,特别说明:用户需要有进入到新目录的权限
    • 应用实例:
      将 swk 这个用户从原来所在组,修改到 huaguoshan 组

    在这里插入图片描述

    7 权限的基本介绍

    ls -l 中显示的内容如下:=> 视频链接

    -rw-r--r--.  1 tom   root             0 6月  24 17:28 apple.txt
    
    • 1

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

    0-9位说明

    • 第 0 位确定文件类型 (d, -, l, c, b)
      • l 是链接,相当于Windows的快捷方式
      • d 是目录,相当于Windows的文件夹
      • c 是字符设备文件,鼠标,键盘
      • b 是块设备,比如硬盘
      • - 表示普通文件
    • 第 1-3 位确定所有者 (该文件的所有者) 拥有该文件的权限
    • 第 4-6 位确定所属组 (同用户组的) 拥有该文件的权限
    • 第 7-9 位确定其他用户拥有该文件的权限

    8 rwx权限详解,难点

    8.1 rwx作用到文件

    1. r:代表可读(read)可以读取,查看
    2. w:代表可写(write)可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
    3. x:代表可执行(execute)可以被执行

    8.2 rwx作用到目录

    1. 【r】代表可读(read)可以读取,ls 查看目录内容
    2. 【w】代表可写(write)可以修改,对目录的内 创建+删除+重命名目录
    3. 【x】代表可执行(execute)可以进入该目录

    9 文件及目录权限实际案例

    ls -l 中显示的内容如下:

    -rw-r--r--.  1 tom   root             7 6月  25 10:01 apple.txt
    
    • 1

    在这里插入图片描述

    • 10 个字符确定不同用户能对文件干什么

      • 第 1 个字符代表文件类型:- l b c d
      • 其余字符每 3 个一组(r w x)
      • 第一组 :文件拥有者的权限是读、写不能执行
      • 第二组:与文件拥有者同一组的用户的权限是读,不能写和执行
      • 第三组:不与文件拥有者同组的其他用户的权限是读,不能写和执行
    • 可用数字表示:

      • r=4 ,w=2 ,x=1
      • 因此:rwx = 4+2+1 = 7
    • 其他说明:

      • 1 :文件:硬连接数;目录:子目录数
      • tom :文件所有者
      • root :文件所在组
      • 7 :文件大小(字节)如果是文件夹,显示 4096 字节
      • 6月 25 10:01 :最后的修改日期
      • apple.txt :文件名

    10 修改权限 -chmod

    • 基本说明:通过 chmod指令,可以修改文件或目录的权限

    10.1 第一种方式:+、-、= 变更权限

    u:所有者 g:所在组 o:其他组 a:所有人(u、g、o 的总和) 
    
    • 1

    (1)chmod u=rwx,g=rx,o=x 文件名/目录名
    (2)chmod o+w 文件名。目录名
    (3)chmod a-x 文件/目录名

    • 案例演示
      • 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其他组执行权限
        ==> chmod u=rwx,g=rx,o=x abc
      • 给abc文件的所有者除去执行的权限,增加组写的权限
        ==> chmod u-x,g+w abc
      • 给abc文件的所有用户添加读的权限
        ==> chmod a+r abc

    10.2 第二种方式:通过数字变更权限

    r=4 w=2 x=1   rwx=4+2+1=7
    
    • 1
    • chmod u=rwx,g=rx,o=x 文件名/目录名
    • 相当于 => chmod 751 文件名/目录名
    • 案例演示:要求:将 /home/abc.txt 文件的权限修改成 rwxr-xr-x ,使用给数字的方式实现 => chmod 755 /home/abc.txt

    11 修改文件所有者-chown

    • 基本介绍:
    1. chown newowner 文件/目录 改变所有者
    2. chown newowner:newgroup 文件/目录 改变所有者和所在组
    3. -R 如果是目录,则使其下所有子文件或目录递归生效
    • 案例演示:
      • 请将 /home/abc.txt 文件的所有者修改成 tom
        ==> chown tom /home/abc.txt
      • 请将 /home/kkk 目录下所有文件和目录的所有者都修改成 tom
        ==> chown -R tom /home/kkk

    12 修改文件/目录所在组-chgrp

    • 基本介绍: chgrp newgroup 文件/目录 改变文件所在组

    • 案例演示:

    1. 请将 /home/abc.txt 文件的所在组修改成 shaolin (少林)
      => groupadd shaolin --先创建组
      => chgrp shaolin /home/abc.txt
    2. 请将 /home/kkk 目录下所有的文件和目录的所在组都修改成 shaolin (少林)
      => chgrp -R shaolin /home/kkk

    13 最佳实践-警察和土匪游戏

    • 基本介绍:

      • 现在有两个组:police,bandit
      • 目前有四个用户:
      • 警察:jack,jerry
      • 土匪:abcd,xyzw
    • 游戏演示:

    1. 创建组
      => groupadd police; groupadd bandit
    2. 创建用户
      => useradd -g police jack ; useradd -g police jerry
      => useradd -g bandit abcd ; useradd -g bandit xyzw
    3. jack 创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限
      => 首先jack登录;vim jack.txtchmod 640 jack.txt
    4. jack 修改该文件,让其他组可以读,本组人可以读写
      => chmod 644 jack.txt 或者 chmod o+r,g+w jack.txt
    5. abcd 投靠警察,看看是否可以读写
      => usermod -g police abcd—这条指令需要root用户执行
    6. 测试看看 abcd是否可以读写,xyzw是否可以读写。小结论:如果需要对目录内的文件进行操作,需要先对该目录有相应权限

    14 课堂练习

    1. 建立两个组:神仙(sx),妖怪(yg)
    2. 建立四个用户 (唐僧,悟空,八戒,沙僧)
    3. 设置密码
    4. 把悟空,八戒放入妖怪组,唐僧,沙僧 在神仙组
    5. 用悟空建立一个文件(monkey.java 该文件要输出 i am monkey)
    6. 给八戒一个可以 读、写 的权限
    7. 八戒修改 monkey.java,加入一句话(i am pig)
    8. 唐僧 沙僧 对该文件没有权限
    9. 把 沙僧 放入妖怪组
    10. 让沙僧 修改 该monkey.java文件,加入一句话(“我是沙僧,我是妖怪!”)
    11. 对文件夹 rwx 的细节讨论和测试
      ==> 点击查看视频
      (1)x:表示是否有权限进入该目录,(如执行 cd指令)
      (2)r:表示是否可以将目录的内容显示处理 (如执行 ls指令)
      (3)w:表示是否有权限在该目录 创建或者删除 文件 (如执行 touch指令)

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

    15 课堂练习2,完成如下操作

    1. 用 root 登录,建立用户 mycentos,自己设置密码
    2. 用 mycentos 登录,在主目录下建立目录 test/t11/t1
    3. 在 t1 中建立一个文本文件 aa ,用 vi 编辑其内容为 ls -al
    4. 改变 aa 的权限为可执行文件【可以将当前日期追加到一个文件】,运行该文件
    5. 删除新建立的目录 test/t11/t1
    6. 删除用户 mycentos 及其主目录的内容
    7. 将 Linux 设置成进入图形界面
    8. 重新启动 Linux 或关机
  • 相关阅读:
    Kubernetes基本概念
    Spring Data MongoTemplate insert 插入数据报duplicate key的问题
    为什么加上<log4j2.version>配置就可以更新log4j2的版本?
    STM32 从0开始移植FreeRTOS
    【Linux】userdel 命令使用
    docker 容器镜像无法重定向日志标准输出到指定文件排错
    Spring AOP快速入门----XML方式和注解方式
    卷积架构的进一步挖掘:ConvNeXt,RepLKNet,HRNet
    【Java】抽象类案例
    react是否支持给标签设置自定义的属性,比如给video标签设置webkit-playsinline?
  • 原文地址:https://blog.csdn.net/weixin_60766221/article/details/125448905