• 1.3 Linux目录操作


    零、学习目标

    1. 用户账号管理
    2. Linux用户操作
    3. Linux用户组操作

    一、导入新课

    • Linux是多用户操作系统,因此用户账号管理十分重要,本次课程我们要学习用户与用户组操作。

    二、新课讲解

    在这里插入图片描述

    (一)用户账号管理

    • 理解用户身份与用户组的概念,有助于Linux多任务环境变得更容易管理。可参看《鸟哥的Linux私房菜》第260页,5.1 使用者和群组
      在这里插入图片描述

    1、用户与用户组文件

    • 在Linux系统当中,默认情况下所有用户信息保存在/etc/passwd文件内(包括root用户),用户密码信息保存在/etc/shadow文件内;所有用户组信息保存在/etc/group文件内,用户组密码信息保存在/etc/gshadow文件内。这四个文件非常重要,不要轻易做变动。
    文件作用
    /etc/passwd用户帐户信息
    /etc/shadow帐户密码信息
    /etc/group组帐户信息
    /etc/gshadow组密码信息
    /etc/login.defs设置用户帐号限制的文件,但配置对root用户无效

    2、用户账号管理工作

    • 增、删、改用户
    • 更改用户所属用户组
    • 管理用户的口令
    • 增、删、改用户组

    (二)用户操作

    • 以root用户登录虚拟机
      在这里插入图片描述

    1、切换用户

    • 由root用户切换到普通用户,无须输入密码,但是由普通用户切换到root用户或其它用户,就需要输入密码。
    (1)语法格式
    • su <用户名>
    (2)切换到普通用户
    • 我们在安装CentOS时,创建普通用户 - howard
    • 执行命令:su howard,切换到howard普通用户
      在这里插入图片描述
    • 现在就是howard普通用户操作环境了,提示符由#变成$符号
    (3)切换到root用户
    • 现在有两种方式切换到root用户,一个是执行exit命令,一个是执行su root
    • 执行命令:su root,需要输入密码
      在这里插入图片描述
    • 现在的情况是root ⟹ \Longrightarrow howard ⟹ \Longrightarrow root,因此我们可以执行两次exit命令,返回到最开始的root用户环境。
      在这里插入图片描述
    (4)查看环境变量
    • 执行命令:env,查看环境变量
      在这里插入图片描述

    • 切换到howard普通用户,再查看环境变量
      在这里插入图片描述

    • 退出howard用户
      在这里插入图片描述

    2、查看用户

    (1)查看全部用户
    • 执行命令:cat /etc/passwd
      在这里插入图片描述
    • /etc/passwd文件是Linux中的重要系统文件之一,主要作用是存储系统用户的信息。文件中的每一行表示一个用户信息,有多少行就表示多少个用户信息。仔细观察其中的一行,可以清晰地看出,各内容之间通过“:”号划分成了多个字段,共7部分,这7部分分别定义了用户的不同属性。
    • 以passwd文件中howard一行为例介绍各个字段作用
    howard:x:1000:1000:howard:/home/howard:/bin/bash
    用户名称:用户密码:用户UID:用户组GID:用户说明:用户家目录:shell解释器
    (2)系统内置用户与新增用户
    • 用户id1000以前的都是系统内置用户,包括不能登录的伪用户(/sbin/nologin)。

    • root用户的用户id是0,bin用户的用户id是1,daemon用户的用户id是2……

    • 执行命令:cat /etc/passwd | head -3
      在这里插入图片描述

    • 说明:|管道命令,加上head -3,表示显示前3条记录

    • 新增用户的id必然大于或等于1000

    • howard用户的用户id是1000,不是系统内置用户,而是新增用户
      在这里插入图片描述

    • 说明:|是管道命令,加上tail -3,表示显示末尾3条记录

    (3)查看不能登录的伪用户
    • 执行命令:cat /etc/passwd | grep nologin
      在这里插入图片描述
    • |是 管道命令,grep是抓取命令 (可使用通配符*),合在一起就是抓取前一个命令的结果中满足条件的信息。
      在这里插入图片描述
    (4)查看指定某个用户信息
    • 执行命令:cat /etc/passwd | grep howard
      在这里插入图片描述

    3、添加用户

    (1)语法格式
    • useradd [选项] 用户名
    (2)选项说明
    参数说明
    -g主组(group)
    -G附加组(Group)
    -d主目录(directory)
    -s指定用户登录后使用的shell,默认值是/bin/bash
    -c注释(comment)
    -u用户ID(user)
    -p密码(password)

    在这里插入图片描述

    (3)注意事项
    • 添加用户,不设置主组,会默认创建同名的主组。
    • 增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件/etc/shadow/etc/group等。
    (4)案例演示
    任务:创建用户mike
    • 创建用户mike,主目录为/home/mike,用户id为1010,密码为12345,注释my workmate

    • 执行命令:useradd -d /home/mike -u 1010 -p 12345 -c 'my workmate' mike
      在这里插入图片描述

    • 在四个文件中查看刚才创建的新用户信息
      在这里插入图片描述

    • 查看mike用户的主目录
      在这里插入图片描述

    4、修改用户

    • 创建用户帐户后,在一些需要更改现有用户属性的场景中,例如更改用户的主目录、登录名、登录shell、密码到期日期等,在这种情况下使用usermod命令。
    (1)语法格式
    • usermod [选项] 用户名
    • 说明:mod是单词modify的前三个字母
    (2)选项说明
    参数说明
    -a–append ##把用户追加到某些组中,仅与-G选项一起使用
    -c–comment ##修改/etc/passwd文件第五段comment
    -d–home ##修改用户的家目录通常和-m选项一起使用
    -e–expiredate ##指定用户帐号禁用的日期,格式YY-MM-DD
    -f–inactive ##用户密码过期多少天后采用就禁用该帐号,0表示密码已过期就禁用帐号,-1表示禁用此功能,默认值是-1
    -g–gid ##修改用户的gid,改组一定存在
    -G–groups ##把用户追加到某些组中,仅与-a选项一起使用
    -l–login ##修改用户的登录名称
    -L–lock ##锁定用户的密码
    -m–move-home ##修改用户的家目录通常和-d选项一起使用
    -s–shell ##修改用户的shell
    -u–uid ##修改用户的uid,该uid必须唯一
    -U–unlock ##解锁用户的密码
    (3)案例演示
    任务:修改用户mike
    • 修改用户mike,主目录改为/home/dear-mike,密码改为903213,注释改为my friend

    • 执行命令:usermod -m -d /home/dear-mike -p 903213 -c 'my friend' mike (注意一定要加-m,否则主目录名不会被修改)
      在这里插入图片描述

    • /etc/passwdetc/shadow文件里查看更改后的用户信息
      在这里插入图片描述

    • 可以看到,mike用户的主目录、注释和密码都被修改了。

    • 查看mike用户的主目录
      在这里插入图片描述

    5、删除用户

    (1)语法格式
    • userdel [选项] 用户名
    • 说明:del是单词delete的前三个字母
    (2)选项说明
    选项说明
    -f(forcible) 强制删除用户,即使用户当前已登录
    -r(recursive) 删除用户的同时,删除与用户相关的所有文件
    (3)案例演示
    任务:强制彻底删除用户mike
    • 执行命令:userdel -rf mike
      在这里插入图片描述

    • 查看是否还有mike用户
      在这里插入图片描述

    • 可以看到,四个文件里都没有mike的踪迹,该用户被彻底删除了。

    • 再次执行删除mike的命令,会提示用户“mike”不存在。
      在这里插入图片描述

    • 因为是彻底删除,mike用户的主目录也被删除掉了的,/home目录里没有dear-mike目录
      在这里插入图片描述

    • 为了后面操作需要,创建mike用户,执行命令:useradd -d /home/mike -u 1010 -p 903213 -c 'my friend' mike
      在这里插入图片描述

    (三)用户组操作

    1、增删改用户组

    操作语法格式
    添加用户组groupadd -g 用户组id 用户组名
    修改用户组groupmod -g 用户组id 用户组名
    删除用户组groupdel 用户组名

    2、用户组里增删改用户

    操作语法格式
    用户组里添加用户useradd -G 用户组 用户名
    用户组里修改用户usermod -G 用户组 用户名
    usermod -a -G 用户组 用户名
    用户组里删除用户gpasswd -d 用户名 用户组

    3、简单说明

    • 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改,实际上就是对/etc/group文件的更新。

    4、案例演示

    • 我们在安装CentOS时创建了一个普通用户howard(看看你当时创建的普通用户名),前面我们又利用命令创建了一个普通用户mike
      在这里插入图片描述
    任务1、创建用户组并添加用户
    • 创建一个用户组lzy,组id是666
      在这里插入图片描述

    • 将已有用户mike添加到该用户组
      在这里插入图片描述

    • 添加用户alice,密码123456,主目录/home/alice,加入lzy
      在这里插入图片描述

    • 查看组lzy的情况,目前该组有两个用户:mike和alice
      在这里插入图片描述

    • 查看/home目录下的三个用户目录
      在这里插入图片描述

    任务2、建一个新用户组,用户实现组迁移
    • 创建一个组luzhou,组编号777
      在这里插入图片描述
    • 将用户mikelzy组迁移到luzhou
      在这里插入图片描述
    • 查看两个用户组里的用户情况,用户alice在lzy用户组里,用户mike在luzhou用户组里
      在这里插入图片描述
    任务3:创建新用户,同时加入两个组
    • 创建一个用户smith,密码111111,加入lzy组和luzhou
      在这里插入图片描述
    • 查看用户smith的情况,lzy与luzhou两个组里都有smith,正所谓脚踏两只船。
      在这里插入图片描述
    • 说明:用户smith属于一个主组smith,另外还属于两个附加组lzy和luzhou
    • 问题:为什么smith的用户id是1012
    • 回答:创建mike用户时,设置了用户id - 1010,然后创建alice时,没有设置用户id,那就自动编号1011,最后创建smith时,也没有设置用户id,那也是自动编号1012
      在这里插入图片描述
    任务4、已有用户同时加入另一个组
    • lzy组的alice同时加入luzhou组,注意有两个选项参数:-a -G(说明:a - append)
      在这里插入图片描述
    • 查看alice用户的情况,在lzy与luzhou两个组里都有她的踪迹
      在这里插入图片描述
    • 说明:用户alice属于一个主组alice,另外还属于两个附加组lzy和luzhou
    任务5、从组里移除用户
    • 让用户mikeluzhou组里移除,执行命令:gpasswd -d mike luzhou (说明:d - delete)
      在这里插入图片描述
    • 查看用户组luzhou,看还有没有mike用户
      在这里插入图片描述
    • 从组里删除一个不存在的用户
      在这里插入图片描述
    任务6、删除用户组
    • 删除luzhou用户组,执行命令:groupdel luzhou
      在这里插入图片描述
    • 删除用户组luzhou,并不会连带删除里面的用户smithalice
      在这里插入图片描述
    • 为了后续章节的需要,再次创建luzhou用户组
      在这里插入图片描述

    三、归纳总结

    • 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。

    Linux命令结构

    • 命令动词 + [选项参数] + 操作对象,按这个结构分析我们前面学习的Linux用户和用户组操作命令

    1、只有命令动词的情况

    • 查看当前目录详情,其实相当于执行命令:ll ..代表当前目录)
      在这里插入图片描述

    2、只有命令动词和选项参数的情况

    • 执行命令:ls -a(说明:a - all)
      在这里插入图片描述

    3、只有命令动词和操作对象的情况

    • 执行命令:ll /home,查看指定目录下的内容
      在这里插入图片描述

    4、包含命令动词、选项参数和操作对象的情况

    • 执行命令:ls -a /etc/sysconfig
      在这里插入图片描述

    四、上机操作

    • 形式:单独完成
    • 题目:进行用户与用户组操作
    • 要求:按照讲课笔记完成用户和用户组操作中的给定任务,记录操作过程,发一篇CSDN博文
  • 相关阅读:
    深蓝激光slam理论与实践-第一节笔记
    Powershell 一键安装 virtio_qemu_agent
    java 字符串只保留数字、字母、中文
    Leetcode 137. 只出现一次的数字 II
    Pikachu靶场-SQL注入-搜索型注入过关步骤
    利用hutool树结构工具-TreeUtil显示多级菜单树状结构
    计算机毕业设计(附源码)python疫情管理系统
    JSP param动作
    Python 爬虫实战之爬拼多多商品并做数据分析
    Getx在Controller里添加TabController的处理
  • 原文地址:https://blog.csdn.net/howard2005/article/details/133699450