day15 用户管理


目录
  • day15 用户管理
    • 用户创建相关的文件
    • 用户的密码管理
    • 随机密码生成
    • awk命令基础语法
    • 练习题
    • 思维导图

day15 用户管理


用户创建相关的文件

/etc/login.defs

# 过滤 /etc/login.defs 有效行
 ? 16:56:18 root@localhost.localdomain,10.0.0.158:/srv # grep -i '^[a-z]' /etc/login.defs 

 ? 16:58:01 root@localhost.localdomain,10.0.0.158:/srv # grep -Ev '^#|^$' /etc/login.defs 
 # 创建用户时,默认邮件文件位置
MAIL_DIR	/var/spool/mail
# 创建用户时密码最大使用天数
PASS_MAX_DAYS	99999
# 创建用户时密码最小使用天数(0代表没有限制)
PASS_MIN_DAYS	0
# 密码最短5位数
PASS_MIN_LEN	5
# 密码过期前7天提示修改密码
PASS_WARN_AGE	7
# 普通用户,最小uid是1000
UID_MIN                  1000
# 普通用户,最大uid是60000
UID_MAX                 60000
# 系统用户,最小uid是201
SYS_UID_MIN               201
# 系统用户,最大uid是999
SYS_UID_MAX               999
# 普通用户,最小Gid是1000
GID_MIN                  1000
# 普通用户,最大Gid是60000
GID_MAX                 60000
# 系统用户,最小Gid是999
SYS_GID_MIN               201
# 系统用户,最大Gid是999
SYS_GID_MAX               999
# 默认创建用户家目录
CREATE_HOME	yes
# 用户创建目录的权限
UMASK           077
# 创建用户时如果不用-g指定组,那么会默认创建出该用户同名的组
USERGROUPS_ENAB yes
# 用户的密码加密方式 SHA512
ENCRYPT_METHOD SHA512

----------------------------------------------------------------------------

# 权限了解
r:读           4
w:写			 2
x:执行	     1
-:没有权限	    0

目录默认创建权限:0777 - umask
文件默认创建权限:0666 - umask

如果当前用户UID大于199 并且用户的用户名和用户的组名相同               那么
if [ $UID-gt199 ] && [ "`/usr/bin/id -gn`"="`/usr/bin/id -un`" ]; then   
   umask是002  
   umask 002
# 否则
 else  
   umask是022  
   umask 022
fi


 ? 17:21:33 root@localhost.localdomain,10.0.0.158:/srv # cat /etc/default/useradd
# 如果login.defs文件中的USERGROUPS_ENAB yes是no,该行配置才会生效
# 如果创建用户不创建同名组,默认会将该用户加入GID为100的系统组中(users)
GROUP=100
# 指定用户的家目录
HOME=/home
# 用户账户停权 -1 永不过期
INACTIVE=-1
# 账号终止时间的设置,不设置不终止
EXPIRE=
# 用户默认登录的shell
SHELL=/bin/bash
# 该目录下存放的是,用户的环境变量初始配置文件
SKEL=/etc/skel
# 创建用户的同时,创建该用户的邮箱文件
CREATE_MAIL_SPOOL=yes

# 用户创建的流程
1.执行useradd+用户名
2.查看执行命令是否有选项
3.读取/etc/login.defs文件
4.读取/etc/default/useradd文件
5.如果没有-M则创建家目录
6.根据配置文件中的SKEL=/etc/skel 将skel下面的环境变量文件拷贝到家目录下
7.用户信息记录到/etc/passwd文件中
8.用户密码信息记录到/etc/shadow文件中
9.用户组信息记录到/etc/group文件中
10.用户组密码信息记录到/etc/gshadow文件中

用户的密码管理


passwd:给用户设置密码
# 语法:
passwd [用户名]

注意如果不加用户名,则默认修改当前登录用户的密码,只有root用户能在passwd命令后面加用户名

# 修改其他用户密码
 ? 17:24:44 root@localhost.localdomain,10.0.0.158:/srv # passwd wq2
 # 修改wq2用户密码
Changing password for user wq2.
# 新密码
New password:
BAD PASSWORD: The password is a palindrome
# 重复新密码
Retype new password: 
# 密码:所有令牌认证成功
passwd: all authentication tokens updated successfully.

# 免交互方式
stdin:标准输入
stdout:标准输出
stderr:错误输出


? 17:42:08 root@localhost.localdomain,10.0.0.158:/srv # echo 2 |passwd --stdin wq2
Changing password for user wq2.
passwd: all authentication tokens updated successfully.


随机密码生成


tee:管道命令
-a:追加
 ? 17:43:09 root@localhost.localdomain,10.0.0.158:/srv # echo $RANDOM |tee -a /tmp/passwd.txt |passwd --stdin wq2
Changing password for user wq2.
passwd: all authentication tokens updated successfully.
  0 ? 18:03:02 root@localhost.localdomain,10.0.0.158:/srv # cat /tmp/passwd.txt 
19746

awk命令基础语法

awk:一般来说,取出想要取出的字符串(主要过滤列)
默认以空格为分隔符,在awk中双引号("")代表不识别变量
$1-$N 都是取第几列
$0:取出文件中的所有内容
$NF:文件的最后一列内容

# 选项
-F:指定分隔符

# 使用awk来拼命令

#sed命令去行
sed -n 'Np'
N是阿拉伯数字

# seq 序列命令
-w:补全位数,用0补



# 举例
# 取出ifconfig里面的ip
 ? 18:36:58 root@localhost.localdomain,10.0.0.158:/srv # ifconfig 
ens160: flags=4163  mtu 1500
        inet 10.0.0.158  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::a891:6b34:27ee:77e2  prefixlen 64  scopeid 0x20
        ether 00:0c:29:80:6d:76  txqueuelen 1000  (Ethernet)
        RX packets 4935  bytes 462463 (451.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3540  bytes 351859 (343.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 4  bytes 332 (332.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 332 (332.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  0 ? 18:37:07 root@localhost.localdomain,10.0.0.158:/srv # ifconfig |head -2
ens160: flags=4163  mtu 1500
        inet 10.0.0.158  netmask 255.255.255.0  broadcast 10.0.0.255
  0 ? 18:38:24 root@localhost.localdomain,10.0.0.158:/srv # ifconfig |head -2|tail -1
        inet 10.0.0.158  netmask 255.255.255.0  broadcast 10.0.0.255
127 ? 18:39:10 root@localhost.localdomain,10.0.0.158:/srv # ifconfig |head -2|tail -1|awk '{print $2}'
10.0.0.158

练习题

# 需求:
1.批量创建100个用户
2.然后给这100个用户随机密码
3.将100个用户的密码保存到文件中
例如:创建100用户 zls001-zls100
用户名:密码
cat /tmp/pass.txt
zls001:71297391
zls002:1892319283
zls003:182372873

思维导图


相关