第七讲 用户和用户组管理

第七讲 用户和用户组管理

一、用户配置文件-用户信息文件

  1.1 用户配置文件

    1.1.1 用户信息文件 /etc/passwd

      1)用户管理简介:

        越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范

        在Linux中主要是通过用户配置文件来查看和修改用户信息

      2)/etc/passwd

        第1字段:用户名称

        第2字段:密码标志(密码存放在/etc/shadow文件中)密文加密。

              此文件只有root可以浏览 "x"代表有密码

        第3字段:UID(用户ID)

          0:超级用户

          1-499:系统用户(伪用户)

          500-65535:普通用户

          在Linux中如果要想让一个普通用户变成管理员,则需要把UID改成0即可。

        第4字段:GID(用户初始组ID)

        第5字段:用户说明

        第6字段:家目录

          普通用户:/home/用户名/

          超级用户:/root/

        第7字段:登录之后的Shell

      3)初始组和附加组

        初始组:就是指用户一登录就拥有这个用户组的相关权限,每个用户的初始组只能有一个

            一般就是和这个用户的用户名相同的组名作为这个用户的初始组

        附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个

      4)Shell是什么

        Shell是Linux的命令解释器

        在/etc/passwd中,除了标准Shell是/bin/bash之外,还可以写入/sbin/nologin

    1.1.2 影子文件 /etc/shadow

      1)影子文件 /etc/shadow

        第1字段:用户名

        第2字段:加密密码

          加密算法升级为SHA512散列加密算法

          如果密码位是"!!"或"*"代表没有密码,不能登录

        第3字段:密码最后一次修改日期

          使用1970年1月1日作为标准时间,每过一天时间戳就加1

        第4字段:两次密码的修改间隔时间(和第3字段相比)

        第5字段:密码有效期(和第3字段相比)

        第6字段:密码修改到期前的警告天数(和第5字段相比)

        第7字段:密码过期后的宽限天数(和第5字段相比)

          0:代表密码过期后立即失效

          -1:代表密码永远不会失效

        第8字段:账号失效时间

          要用时间戳表示

        第9字段:保留

      2)时间戳换算

        把时间戳换算为日期 date -d "1970-01-01 16066 days"

        把日期换算为时间戳:echo $(($(date --date="2022/04/20"+%s)/d86400+1))

    1.1.3 组信息文件 /etc/group和组密码文件 /etc/gshadow

      1)组信息文件 /etc/group

        第1字段:组名

        第2字段:组密码标志

        第3字段:GID

        第4字段:组中附加用户

      2)组密码文件 /etc/gshadow

        第1字段:组名

        第2字段:组密码

        第3字段:组管理员用户名

        第4字段:组中附加用户

  1.2 用户管理相关文件

    1.2.1用户的家目录

      1)普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700

      2)超级用户:/root/,所有者和所属组都是root用户,权限是550

    1.2.2 用户的邮箱

      /var/spool/mail/用户名/

    1.2.3 用户模板目录

      /etc/skel

  1.3 用户管理命令

    1.3.1 用户添加命令 useradd

      1)useradd [选项] 用户名

      选项:

        -u UID     手工指定用户的UID号

        -d 家目录      手工指定用户的家目录

        -c 用户说明   手工指定用户的说明

        -g 组名    手工指定用户的初始组

        -G 组名    指定用户的附加组(多个组之间用","号分隔)

        -s shell     手工指定用户的登录shell。默认是/bin/bash

      2)添加默认用户 useradd sc

        添加了如下的配置信息

          grep sc /etc/passwd

          grep sc /etc/shadow

          grep sc /etc/group

          grep sc /etc/gshadow

          ll -d /home/lamp/

          ll /var/spool/mail/lamp  

      3)指定选项添加用户 

        useradd -u 666 -G root,bin -c "test user" -d /testuser -s /bin/bash testuser 

        从左网友依次表示创建 UID=666,加入到root和bin附加组中,说明性文字为"test user"

        根目录下创建该用户的家目录为testuser,shell脚本为/bin/bash,用户名为testuser

      4)用户默认值文件

        /etc/default/useradd

          GROUP=100               #用户默认组

          HOME=/home              #用户家目录

          INACTIVE=-1               #密码过期宽限天数(shadow文件第7字段)

          EXPIRE=                #密码失效时间(shadow文件第8字段)

          SHELL=/bin/bash          #默认shell

          SKEL=/etc/skel        #模板目录

          CREATE_MAIL_SPOOL=yes  #是否建立邮箱

        /etc/login.defs

          PASS_MAX_DAYS 99999    #密码有效期(shadow文件第5字段)

          PASS_MIN_DAYS 0       #密码修改间隔(shadow文件第4字段)

          PASS_MIN_LEN 5      #密码最小5为(PAM)

          PASS_WARN_AGE 7        #密码到期警告(shadow文件第6字段)

          UID_MIN 500           #最小和最大UID范围

          GID_MAX 60000

          ENCRYPT_METHOD SHA512    #加密模式     

    1.3.2 修改用户密码 passwd

      1)命令格式:passwd [选项] 用户名

         选项:

          -S    查询用户密码的密码状态(shadow文件中的相关参数)。仅root用户可用

                 例如:password -S testuser

                       testuser PS 2022-04-22 0 99999 7 -1

                       #用户名、密码设定时间、密码修改间隔天数、

                                #密码有效期、警告时间、密码不失效

          -l     暂时锁定用户。仅root用户可用(给shadow的密码串前面加了"!!")

          -u       解锁用户。仅root用户可用(shadow的密码串前去掉"!!")

          --stdiin    可以通过管道符输出的数据作为用户的密码

          例如:echo "123" | passwd --stdin testuser (shell编程)

             这样操作,密码为明文,需要用户手动改

    1.3.3 修改用户信息 usermod

      命令格式:usermod [选项] 用户名

        选项:

          -u UID       修改用户的UID号

          -c 用户说明  修改用户的说明信息

          -G 组名      修改用户的附加组

          -L:      临时锁定用户(Lock)

          -U:      解除用户锁定(Unlock)

      修改用户密码状态 chage

        命令格式:chage [选项] 用户名

          选项:

            -l         列出用户的详细密码状态

            -d 日期        修改密码最后一次更改日期(shadow第3字段)

            -m 天数    两次密码修改间隔(shadow第4字段)

            -M 天数    密码有效期(shadow第5字段)

            -W 天数    密码过期前警告天数(shadow第6字段)

            -I 天数      密码过期后宽限天数(shadow第7字段)

            -E 日期     账号失效时间(shadow第8字段)

         范例:(以下命令最常用)

          chage -d 0 testuser 此命令表示将密码修改日期归0了,这样用户一登录就要修改密码

    1.3.4 删除用户 userdel

      命令格式:userdel [-r] 用户名

        选项:

             -r  删选用户的同时删除用户家目录

      手工删除用户:

        vi /etc/passwd

        vi /etc/shadow

        vi /etc/group

        vi /etc/gshadow

        rm -rf /var/spool/mail/testuser

        rm -rf /home/testuser

      2)查看用户ID

        命令格式:id 用户名

      3)切换用户身份 su

        命令格式:su [选项] 用户名

          选项:

            - :选项只能使用"-"代表连带用户的环境变量一起切换(必须加)

              范例:su - root

            -c:仅执行一次命令,而不切换用户身份

              范例:su - root -c "useradd testuser"

                 #表示不切换成root,但是执行useradd命令添加testuser用户

   1.4 用户组管理命令

      1.4.1 添加用户组

        命令格式:groupadd [选项] 组名

          选项;

            -g GID    指定组ID

      1.4.2 修改用户组(不建议改)

        命令格式:groupmod [选项] 组名

          选项:

            -g GID    修改组ID

            -n 新组名  修改组名

        范例:groupmod -n testgroup group1 #把组名group1更改为testgroup

      1.4.3 删除用户组

        命令格式:groupdel 组名

        注意:删除组时,如果组中存在初始用户时,不可删除,有附加用户时不影响

      1.4.4 把用户添加入组或从组中删除

        命令格式:gpasswd [选项] 组名

          选项:

            -a 用户名  把用户加入组

            -d 用户名      把用户从组中删除

posted @ 2022-04-20 23:53  flash-bird  阅读(61)  评论(0)    收藏  举报