Linux基础07 用户管理, 用户相关命令(创建, 修改, 删除), 用户创建配置文件, 命令提示符问题, 查看用户登录, 设置用户密码(设置随机复杂密码)

一.用户管理
1.什么用户?
用户指的是能够正常登录Linux或windows系统

2.用户的作用?
1)系统中的进程,都是由用户来运行的
2)管理文件的权限
3)进程能否访问到文件,和用户有关

3.和用户相关的文件
/etc/passwd
[root@oldboyedu opt]# cat /etc/passwd

用户名称 密码占位符(密码在/etc/shadow) 用户uid 用户gid 注释信息 用户家目录 用户登录shell(sbin/nologin不能登录,sbin/shutdown登录就关机)
root:   x:                         0:      0:     root:   /root:   /bin/bash

/etc/shadow

[root@zls ~]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::

[root@zls ~]# tail -1 /etc/shadow
zls1:!!:16312:0:99999:7:::

// /etc/shadow由 ':' 为分割符, 分为9个字段,每个字段的具体含义如下:
字段名称 注释说明
1.用户登陆名 //用户的账号名称
2.加密后的密码 //用户密码,这是加密过的口令(未设密码时为!!, *)
3.最近一次密码更改时间 //从1970年到最近一次更改密码时间之间过了多少天
4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
8.账户到期时间 //从1970年起,账户在这个日期前可使用,到期后失效。
9.标志 //保留


4.用户的分类(约定)
0:一定是超级管理员
1-200:是系统用户,系统自建
201-999:是系统用户,咱们创建 # 创建为useradd -r
1000+:普通用户 # 也可以起系统, 只是约定一般不这样

注意: 在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户


二.用户的相关命令

1)创建用户
    useradd  # useradd和adduser一样,adduser是useradd的软连接(centos7中才有)
   # useradd 用户名 # 创建用户(创建用户就有用户名对应的组,不用groupadd特别创建一个组)
-u:指定uid -g:指定组(必须是已存在的组)(组名或者是gid) -s:指定用户登录的shell -c:加注释 -M:不创建家目录 -d:指定家目录 -G:指定附加组 -r:指定系统用户,并且不创建家目录 (该参数没什么用处) # useradd -r mysql -u 203 #创建系统用户, 通过-u指定创建用户id # useradd zls101 -u 366 -g od #通过-g加入od组, -g后面也可以写组id(gid) # useradd php -u 1114 -g od -s /sbin/nologin #创建无法登陆的用户,通过指定shell(既然不能登录,那么家目录也没用) # useradd elk -u 1115 -g od -s /sbin/nologin -c 'elk start service' -M #-c添加注释, -M不添加家目录(不能登录没有意义) # useradd egon -d /opt/egg #指定家目录地址 查看用户的命令
  id:查看当前用户
  id username # 查看其它用户信息
设置用户密码 passwd
  # passwd 用户名 # 设置用户密码
创建组 groupadd  
  # groupadd 组名称 # 创建组
# 创建zls用户,指定UID5001,基本组students 附加组sa,dba 注释信息:one newB user, 登陆的shell:
/bin/bash   groupadd student   groupadd sa   groupadd dba   useradd zls -u 5001 -g student -G sa,dba -c 'one newB user' -s /bin/bash 2)修改用户 usermod '-u' 修改用户的UID '-g' 修改用户所属的基本组GID '-G' 修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组 '-a' 追加更多的附加组, 必须和-G使用: -aG 追加附加组 '-m' 家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置 '-d' 指定用户的家目录新位置 '-c' 修改用户的注释信息 '-s' 更改用户使用的shell '-l' 更改用户登录名 '-L' 锁定用户 '-U' 解锁用户 # usermod ldc -s /sbin/nologin #修改ldc用户为不可登录 # usermod zls -G od #把zls用户的附加组改为od # usermod zls -aG od,dba #把zls用户的附加组添加od, dba # usermod zls1 -d /opt/zls1 -m #家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置 # usermod ldc -L(使用后,ldc登陆着还能用,断开再连接无论输如任何密码都无法登录) 3)删除用户 userdel -r:删除用户并删除家目录 # userdel -r egon #删除egon用户同时删除其家目录

三.用户创建配置文件

    useradd创建用户时,系统会以/etc/login.defs、/etc/defaults/useradd两个配置文件作为参照物
    1./etc/login.defs
    (grep -vE '^#|^$' /etc/login.defs)
    #用户的邮件目录
    MAIL_DIR        /var/spool/mail
    
    #密码的最大天数
    PASS_MAX_DAYS    99999
    #密码最小使用天数
    PASS_MIN_DAYS    0
    #密码最小长度
    PASS_MIN_LEN    5
    #剩多少天警告
    PASS_WARN_AGE    7
    #普通用户最小uid
    UID_MIN                  1000
    #普通用户最大uid
    UID_MAX                 60000
    #系统用户最小uid
    SYS_UID_MIN               201
    #系统用户最大uid
    SYS_UID_MAX               999
    #普通用户最小gid
    GID_MIN                  1000
    #普通用户最大gid
    GID_MAX                 60000
    #系统用户最小gid
    SYS_GID_MIN               201
    #系统用户最大gid
    SYS_GID_MAX               999
    #是否创建家目录(如果改为false,即使创建用户-d指定家目录地址也没用)
    CREATE_HOME    yes
    #创建家目录的权限(目录权限为777-077=700
    UMASK           077
    #创建用户的同时 创建组,删除用户的同时,删除组
    USERGROUPS_ENAB yes
    #密码的 加密算法
    ENCRYPT_METHOD SHA512

    
    2./etc/default/useradd
    #依赖于/etc/login.defs的USERGRUUPS_ENAB参数,如果为no,则在此处控制(从100开始创建组)
    GROUP=100
    #普通用户家目录
    HOME=/home
    #是否启用账号过期停权  -1表示不启用
    INACTIVE=-1
    #账号的终止日期 不设置表示不启用
    EXPIRE=
    #默认登录shell
    SHELL=/bin/bash
    #用户的家目录 环境变量(如果用户家目录环境变量没了, 命令提示符错误, 可以从这里拷)
    SKEL=/etc/skel
    #创建邮件
    CREATE_MAIL_SPOOL=yes

企业级故障案例:

# 在当前用户的家目录下,想要删除所有文件,执行了如下命令
[root@db04 ~]# rm -fr .*
# 结果再次登录时,命令提示符不对了
-bash-4.1#
# 解决方法
-bash-4.1# cp /etc/skel/.bash* .
# 再次登录 即可恢复
[root@db04 ~]#

四.查看用户登录

    whoami:查看当前登录的用户
    
    who
    [root@oldboyedu ~]# who
    登录的用户    终端设备    登录时间          登录的IP
    oldboy1     pts/0      2019-06-27 18:01  (192.168.15.132)
    root        pts/1      2019-06-27 18:01  (10.0.0.1)

    w
    [root@oldboyedu ~]# w
    系统时间    服务器运行时间(重启重算)  当前登录的用户数    CPU的负载:    1分钟   5分钟   15分钟(按核数计算)
    18:14:51   up 0 min,            1 user,          load average: 0.75,  0.19,  0.06
    10:13:35   up 249 days,  2:09,   1 user,          load average:  5.61,  2.03,  0.76

    用户    终端设备    连接的IP      登录时间    空闲   CPU使用率
    USER     TTY      FROM         LOGIN@    IDLE   JCPU   PCPU  WHAT
    root     pts/0    10.0.0.1     18:14     3.00s  0.02s  0.00s w

# 查看当前用户终端设备    
    tty    (通过ps杀死对应的终端设备,该终端就关了)

五.设置用户密码(用户没密码无法登录)

    passwd
    --stdin : 非交互设置密码
    [root@oldboyedu ~]# passwd             修改当前用户的密码(普通用户只能改自己)
    [root@oldboyedu ~]# passwd qiudao01        修改指定用户的密码(root)
    
    #普通用户(无法修改指定用户密码)
    [oldboy1@oldboyedu ~]$ passwd oldboy1
    passwd: Only root can specify a user name.
    
    修改自己的 还得是输入旧密码  密码要符合 密码的复杂性
    [oldboy1@oldboyedu ~]$ passwd 
    
    需要注意:
    1.普通用户只能更改自己的密码(密码必须满足8位字符)
    2.管理员用户能更改任何人的密码(密码长度无限制)
    
    非交互设置密码
    [root@oldboyedu ~]# echo 123 |passwd --stdin(标准输入) 用户名
    [root@oldboyedu ~]# echo 123 |passwd --stdin ldc
    
    设置随机密码
    echo $RANDOM :生成随机数
    md5sum:给随机数再加密
    cut -c 1-10 : 取前10个字符
    tee:将原本输出的内容保存到文件中  # -a参数  写入不会覆盖
    # 生成随机数加密剪切,存入文件并设置密码给ldc1用户
    [root@localhost ~]echo $RANDOM|md5sum|cut -c 1-10|tee pass.txt|passwd --stdin ldc1

设置随机复杂密码(扩展)

# 安装
yum install -y expect mkpasswd -l:密码长度 -d:数字 -c:小写字母 -C:大写字母 -s:特殊字符 [root@localhost ~]# mkpasswd -l 20 -d 2 -c 2 -C 2 -s 14 [root@localhost ~]# mkpasswd -l 20 -d 2 -c 2 -C 2 -s 14|tee pass.txt|passwd --stdin ldc1
原文地址:https://www.cnblogs.com/ludingchao/p/15690288.html