用户和用户组的管理

前言:

        root用户 ——> 整个系统的超级管理员

        超级用户可以有权限管理整个系统,包括系统网络、配置、软件…

        在Linux中root并非是系统超级管理员;而是UID为0的用户才是超级管理员,只是root的UID刚好为0

        在Linux中每个用户都会被分配一个UID(类似人的身份证),将其称为用户的身份标识符。所以人根据用户名来确定用户,而系统根据UID来确定用户

        根据用户与UID的分配关系,我们将用户分为两类:

                一类是系统用户: 0 – 999

                二类是普通用户: 1000 – 60000

        根据系统的使用用途来分,也将其分为两类:

                一类普通用户: 通常指的是这一类用户由使用者来进行创建

                一类服务用户: 通常由系统进行定义,或者服务来负责创建

1.用户存在的意义

         在Linux系统中为什么要有用户???

        因为不同的服务使用不同的用户来管理更加安全;并且使用多用户,能够让系统的运行效率更高;并且有利于系统的权限分配和管理

2.用户存储的位置

        /etc/passwd 的文件中,在该文件中记录了UID和用户名的映射关系

                                root:x:0:0:root:/root:/bin/bash

        root: 用户名

        x: 密码占位符;如果有x则用户登录时需要验证密码,如果没有x则不需要验证(x不是真正的密码,仅仅只是验证密码)

        第三位0: 指的是用户的UID

        第四位0:指的是用户的GID(GID指的是组的ID)

        第五位root:用户的描述信息

        第六位/root: 指的是用户的家目录(也就是用户登录系统后所在的位置)

        第七位/bin/bash:指的是用户的登录shell(指的是用户登录操作系统后运行的第一个程序,称为shell程序) ,如果shell是/bin/bash 表示该用户可以正常登录系统,且与系统交互;如果shell是/sbin/nologin 则表示该用户不能登录操作系统,也无法与系统交互;如果用户不能登录操作系统,不代表用户不能使用;该用户可以用作服务的运行用户,专门用来运行和管理服务

3.组的信息

        在Linux系统中,每一个用户都必须要有一个组

        组的出现是为了更好的管理用户,因此可以将组看成是用户的集合;如果对一个组分配权限,则组内的所有用户都会继承这个权限;通过用户组可以简化对用户的管理在系统中,组被分成两类:

        一类是私有(属)组: 在用户创建的时候,一并指定的组称为私有组;每个用户都必须要有一个私有组;且只能有一个私有组

        一类是公共(附加)组: 将用户加入到其他组,则其他组成为该用户附加组,用户可以没有附加组

4.GID与组名的映射关系

        /etc/group中记录GID和组的映射关系

                                root:x:0:zhangsan

        root: 表示组的名称

        x: 表示组的密码占位符(组也是可以设置密码,且可以登录的)

        0: 表示组的ID也就是GID

        zhangsan:表示组内的用户

  • 为什么在组内找不到用户???

        因为系统在创建用户时,如果没有指定用户的私有组;则创建用户时系统会以用户的名字作为组名创建一个组,并且将该用户加入到组内,让该组成为用户的私有组,如果一个组是用户的私有组,则组内不会出现该用户

5.创建用户

        useradd 创建用户

        -u 指定用户的UID

        -g 指定用户的私有组

        -c 指定用户的描述信息

        -G 指定用户的附加组

        -d 指定用户的家目录(这个目录最好不要事先创建)

        -s 指定用户的shell程序 可以通过su - zhangsan –s /bin/bash 临时给用户指定一个shell进行登录

  • 问题:

a.如果两个相同的用户名使用不同的UID能否正常使用?

        两个相同的用户名,可以使用两个不同的UID,但是没有意义;是因为用户的条目会发生覆盖

b.张三和李四能够使用同一个UID

        张三和李四可以使用同一个UID,相当于系统中一个用户有两个别名,实际上两者是同一个用户,人根据用户名来区别用户,系统根据UID来识别用户,如果两个用户的UID一致,则系统将两个用户作用同一个用户

c./etc/passwd 中UID的产生时将passwd文件中最大的UID+1 ,来生成新的UID

        UID不能随意的分配——> 涉及到权限

        因此系统中服务的保留UID,是不会被分配出去的;在分配UID时,使用passwd文件中最大的UID+1来进行分配,因此在创建用户指定UID时,要考虑UID的大小;因为所指定UID前面的范围将会被系统保留;举例: 创建一个用户zhangsan,将其UID设置为3000,则默认创建用户从3001开始分配UID,导致3000以前的UID全部被保留,无论是否使用

3.修改用户和删除用户

        useradd 创建用户

        usermod 修改用户

        userdel 删除用户

        usermod用法:

        usermod -l ituser00 ituser7 修改用户名

        usermod -u 2060 ituser00 修改用户的UID

        usermod -g zhaoliu ituser00 修改用户私有组

        usermod -G user1 ituser00 修改的用户的附加组

        usermod -c "test user" ituser00 修改用户的描述信息

        usermod -md /wuhan ituser00 -m 移动家目录 -d 指定路径 修改用户的家目录

        usermod -s /bin/bash ituser00 修改用户的登录shell

删除用户要理解用户在系统中生成了哪些文件 ???

        "userdel 用户名"仅仅只是在/etc/passwd和 /etc/group 中删除了UID和GID的映射关系,没有删除用户的文件(该用户的文件指的是用户创建时生成的文件,而并非用户在系统创建的数据文件)

创建用户时一并被创建出来的文件有哪些?

        a.创建用户时 UID和用户名的映射关系写入到/etc/passwd 文件中

        b.创建用户时 GID和组名的映射关系写入到/etc/group文件中

        c.创建用户时 用户的密码写入/etc/shadow 文件中

        d.创建用户时 用户组的密码写入到 /etc/gshadow 文件中

        e.创建用户时 用户的家目录默认保存到/home目录下且使用用户名作为目录名

        f.创建用户时 用户的邮箱将被创建在/var/spool/mail目录下以用户名作为文件名当使用userdel 用户名,删除用户时,仅删除了 a – d 生成的内容,并没有删除用户的家目录和用户的邮箱文件

        userdel -r 干净的删除用户,也就是连同用户的邮箱和家目录一起删除(也就会将家目录下用户的文件也将被删除)

4.用户组管理

        创建组: groupadd

                        groupadd –g 1010 cloud         在创建组时一并指定组的GID

        修改组: groupmod

                        groupmod –n rhce cloud         修改组的名称

                        groupmod -g 1020 rhce            修改组的GID

        删除组: groupdel

        如果删除的组是某个用户的私有组,则该组不能被删除

        如果删除的组是某个用户的附加组,则该组可以删除

        给组设置密码: 使用gpasswd 给组设置密码,通过newgrp 切换到组

                        e.g. gpasswd it / newgrp it

组还可以设置管理员:

                        gpasswd -A 用户名 组名

        如果一个用户是这个组的管理员用户,那么该用户可以不在这个组内,依然可以管理这个组

                        gpasswd –a 用户名 组名         向组内添加用户

                        gpasswd –d 用户名 组名         从组中移除用户

root用户对组的管理:

        groupmems root用户对组的管理工具

                        groupmems –g 组名 -a 用户名         向组内添加用户

                        groupmems –g 组名 -d 用户名         删除组内的用户

                        groupmems –g 组名 -p                     清空组内的所有用户,如果该组是某个用户的私有组,则该用户不会从组内移除

5.用户和组的密码文件

        组的密码文件:/etc/gshadow

                it:$6$Bsv6hiAI8IOa8BB2$rCHkqC4mwhLylHSmUedNPZqihBOIujA0SGnhSck6CLMT8YsXTe4MsJmASqZdGlnJZHOQHzGFzNkwYWz.0rg/M/:zhangsan:lisi,wangwu

        it: 表示的组的名称

        $6$: 表示的是组的密码(是使用hash512 加密算法生成的密文)

        zhangsan: 表示的是组的管理员

        lisi: 表示的是组内的成员

        用户的密码文件: /etc/shadow                 root:$6$i168d5rQIz7MRkM7$Dsr2uCExXK/9jaqAkTV2q6YOklsALbhBWzOJlCXu.7B62gn5afGrL5SBlOL5tKYOJoeonV3rddU6/YzDVcXNv/:19609:0:99999:7:2: 20090:

        root: 表示用户名

        $6$: 表示用户的密码(其中$6$两个$之间的数字代表的是加密的类型)

        $6 表示使用hash512加密

        $1 表示使用md5加密

        $5 表示使用hash256加密

        !! 表示该用户从来没有设置过密码

        Linux锁定用户,就是利用密码锁定用户

        19609: 表示上一次修改密码的时间(指的是从1970-01-01 经过了19609天是那一年那一月那一日) date +%F -d "1970-01-01 19609days"

        0: 表示的是 密码的最短有效期,也就是密码最少可以用几天 (如果为0则没有限制)

        99999: 表示的是 密码的最长有效期 (如果为99999 则一直有效)

        7: 表示的是 密码到期前的警告天数 也就是在密码即将到期的前七天向用户发送告警信息

        2:表示的是 账号的锁定天数,如果密码到期后两天内没有改就会被锁定

        20090:表示的是 账号的失效时间,也就是到这一天,账号不可用 这一天是从1970-01-01经过了20090天数后的一个具体的日期

用户的策略文件:

        /etc/login.defs 文件中定义用户的默认值

6.案例: 手工创建用户的文件,并且正常使用进行测试

   要求: 整个创建用户的过程,不使用与用户相关的命令

        用户名:rhce09

        密码:helloUID:1090

        GID: 1099

        私有组的名称:redhat

        登录的shell:/bin/bash

        openssl passwd -6 redhat 生成 redhat的hash512的密文

        -6 hash512 -5 hash256 -1 md5 加密类型

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值