Linux-用户和用户组管理

用户配置文件

  1. 用户信息文件:
  • vim /etc/passwd

        1. 第一字段:用户名称
        2. 第二字段:密码标志
        3. 第三字段:UID(用户ID)  
             - 0: 超级用户  
             - 1-499: 系统用户(伪用户)  
             - 500-65535: 普通用户  
            `# man`passwd` ----查看密码帮助信息  
        4. 第四字段:GID(用户初始组ID)
        5. 第五字段:用户说明  
        6. 第六字段:家目录  
            1. 普通用户:/home/用户名/  
            2. 超级用户:/root/  
        7. 第七字段:登录之后的shell (shell:linux命令的解释器)
    

  1. 影子文件
    (相当于passwd文件的影子,权限为 000)

    • vim /etc/shadow
      1. 第一字段:用户名称

      2. 第二字段:加密密码

        • 加密算法升级为SHA512散列加密算法
          如果密码是“!!”或“*”代表没有密码,不能登录
      3. 第三字段:密码最后一次修改日期

        • 使用1970年1月1日为标准时间,每过一天时间数加1
      4. 第四字段:两次密码修改间隔时间(与第三字段相比)

      5. 第五字段:密码有效期(与第三字段相比)

      6. 第六字段:密码修改到期前的警告天数(与第五字段相比)

      7. 第七字段:密码过期后的宽限天数(与第五字段相比)

        0: 代表密码过期后立即失效
        -1: 代表密码永远不会失效

      8. 第八字段:账号失效时间(要用时间戳表示)

        • 时间日期换算:
          • 用时间戳显示当前时间:# date +%s
          • 把时间戳转换为日期:# date -d "1970-01-01 15556 days"
          • 把时间戳转换为时间:# date -d @1568271453
          • 转换指定日期为时间戳:# date -d '2021-06-19 15:00' +%s
          • 指定日期格式转换:# date -d @1562641547 +"%Y-%m-%d %H:%M:%S"
      9. 第九字段:保留

  2. 组信息文件和组密码文件

  3. vim /etc/group

  4. vim /etc/gshadow

    第一字段:用户名称

    第二字段:组密码

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

    第四字段:组中附加用户


用户配置管理相关文件

a. 用户的家目录:

i. 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是:700 (rwx——)

ii. 超级用户:/root/,所有者和所属组都是root用户,权限是:550 (r-xrx—-)

b. 用户的邮箱目录:

cd /var/spool/mail/用户名/  

c. 用户的模板目录:用于给每一个用户配置一个模板文件

cd /etc/skel/  

示例:[ local@root skel ] # vim warning.txt  
写给每一位用户的一份警告文件模板

用户管理命令

a. 用户添加命令: useradd

  • useradd 命令格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [ root@localhost ~ ] # useradd [ 选项 ] 用户名  

    选项:
    -u UID:手工指定用户的UID

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

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

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

    -G 组名:指定用户的附加组

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

b. 添加默认用户:# useradd eayyoung

1
2
3
4
5
6
7
8
9
10
// 默认用户的基本查询:
- [root@localhost ~] # grep eayyoung /etc/passwd --默认用户信息文件
- [root@localhost ~ ] # grep eayyoung /etc/shadow --默认信息文件
- [root@localhost ~] # grep eayyoung /etc/group --默认用户组信息文件
- [root@localhost ~ ] # grep eayyoung /etc/gshadow --默认组密码
- [root@localhost ~ ] # ls -la /home/ --默认用户家目录
- [root@localhost ~ ] # ls /var/spool/mail/ --默认用户邮件

// 指定选项添加用户:
1) [root@localhost ~] # usreradd -u 550 -G root,bin -d /home/eayyoung -c "he is a lsp" \-s /bin/bash eayyoung

c. 用户默认值文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
i. # vim /etc/default/useradd:
1) GROUP =10 -------默认用户信息文件
2) HOME =/home -------默认家目录
3) INACTIVE =-1 -------默认密码过期天数(shadow 7字段)
4) EXPIRE = -------默认密码失效时间
5) SHELL =/bin/bash -------默认shell
6) SKEL =/etc/skel -------默认模板目录
7) CREATE\_MAIL\_SPOOL =yes -------是否建立邮箱

ii. # vim /etc/login.defs:
8) PASS\_MAX\_DAYS 99999 -------默认密码有效期
9) PASS\_MIN\_DAYS 0 -------密码修改间隔
10) PASS\_MIN\_LEN 5 -------密码最小5位数
11) PASS\_WARN\_AGE 7 -------密码到期警告
12) UID\_MIN 500 -------最小UID范围
13) GID\_MAX 60000 -------最大GID范围
14) ENCRYPT\_METHOD SHA512 -------加密模式

d. 修改用户密码: passwd

  • passqd 命令格式:
1
2
3
4
5
6
7
8
9
10
11
12
1) [ root@localhost ~] # pqsswd [ 选项 ] 用户名
选项:
-S 查询用户密码状态。仅root用户可用

-l 暂时锁定用户,(不能登录)仅root用户可用

-u 解锁用户,仅root用户可用

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

示例:
echo "123" | passwd --stadi team (批量给team组的用户设置密码为123

e. 修改用户信息: usermod —-修改已经存在的用户信息

  • usermod 命令格式:

    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
    [root@localhost~]# usermod [选项] 用户名

    选项:

    -u UID:修改用户的UID号

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

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

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

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


    示例:

    [root@localhost~]# usermod -c "test user" lamp
    #修改用户的说明

    [root@localhost~]# usermod -G root lamp
    #把lamp用户加入root组

    [root@localhost~]# usemod -L lamp
    #锁定用户

    [root@localhost~]# usermod -U 1amp
    #解锁用户

f. 修改用户密码状态: chage

  • chage 命令格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [ root@localhost ~ ] # chage [ 选项 ] 用户名

    选项:
    -l :列出用户的详细密码状态
    -d :日期 修改密码最后一次的更改日期(shadow 3字段)
    -m :天数 两次密码修改间隔(4字段)
    -M :天数 密码有效期(5字段)
    -W :天数 密码过期警告天数(6字段)
    -I :天数 密码过期后宽限天数(7字段)
    -E :日期 账号失效时间(8字段)

    示例:
    [root@localhost~]# chage-d 0 lamp
    #这个命令其实是把密码修改日期归零了(shadow第三字段)
    #这样用户一登陆就要修改密码

    补充: [ root@localhost ~ ] # chage -d 0
    eayyounfg \---此命令是把密码修改日期归0,这样使用户一登录就需要更换密码

g. 删除用户: userdel

  • userdel 命令格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    1) [ root@localhost ~ ] # userdel [ -r ] 用户名

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

    2) 补充手工删除:
    [ local@root ~ ] # vi /etc/passwd

    1) [ local@root ~ ] # vi /etc/shadow
    2) [ local@root ~ ] # vi /etc/group
    3) [ local@root ~ ] # vi /etc/gshadow
    4) [ local@root ~ ] # rm -rf /var/spool/mail/eayyoung
    5) [ local@root ~ ] # rm -rf /home/eayyoung

    // 补充 查看用户的所有ID:# id eayyoung (eayyoung:用户名)

h. 切换用户身份: su

  • 命令格式:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    1) [ root@localhost ~ ] # su [ 选项 ] 用户名

    a) 选项:
    - 只使用”-“ 代表连带用户的环境变量一起切换
    -c 仅执行一次命令,但不切换用户身份

    b) 示例 :
    [ root@localhost ~ ] # su - root
    # 切换到eayyoung 用户

    [ eayyoung@localhost ] # su - root -c "useradd yiyang"
    # 不切换root到用户去执行root的添加用户“yiyang”权限

    c) 补充 :# env (查看当前系统操作的用户信息)

用户组管理命令

a. 添加用户组: groupadd (添加新用户)

1
2
3
4
5
groupadd 命令格式:
[ local@root ~ ] # groupadd [ 选项 ] 组名

选项:
-g --GID 指定组id

b. 修改用户组: groupmod

  • groupmod 命令格式:
1
2
3
4
5
6
7
8
9
[ local@root ~ ] # groupmod [ 选项 ] 组名

选项:
-g --GID 修改组id
-n --name 修改组名

示例 :
[ root@localhost ~ ] # groupmod -n lsp wslsp
# 把组名 lsp 改成 wslsp

c. 删除用户组:groupdel

  • groupmdel 命令格式:
1
[ root@localhost ~ ] # groupdel 组名

d. 把用户添加入组或删除出组: gpasswd(已经存在的用户)

  • groupadd 命令格式:
1
2
3
4
5
[ root@localhost ~ ] # gpasswd [ 选项 ] 组名

选项:
-a 用户名 --把用户加入组
-d 用户名 -- 把用户删除出组