世事洞明皆学问,人情练达即文章。这篇文章主要讲述佳豪哥哥教你学Linux的第十四天相关的知识,希望能为你提供帮助。
十三天课前回顾?课前回顾?用户管理相关文件
## 存放用户信息
/etc/passwd
[root@localhost ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
# 以冒号为分隔符,分为7列
# 1.用户名
# 2.密码占位符
# 3.用户的UID
# 4.用户的GID
# 5.用户描述信息
# 6.用户的家目录
# 7.用户登录的shell
## 存放用户密码信息
/etc/shadow
[root@localhost ~]# tail -1 /etc/shadow
test:!!:19083:0:99999:7:2:6627567:
# 以冒号为分隔符,分为9列
# 1.用户名
# 2.用户密码(加密的,*和!!代表没有密码)
# 3.该用户创建后,上一次修改密码的时间,从1970年开始经过多少天
# 4.用户密码使用的最少使用多少天,0代表没有期限
# 5.用户账户过期时间(天)
# 6.密码过期前7天警告,修改密码
# 7.密码过期后2天,强制修改密码
# 8.账户失效时间,从1970年开始
/etc/group
/etc/gshadow
用户的分类
0 # 系统超级用户
1-200 # 系统用户(系统自建)
201-999 # 系统用户(手动创建)
1000+ # 普通用户
用户相关命令
增删改查
## 创建用户
useradd
-u:指定用户的uid
-g:指定用户的gid或者组名(创建用户时,指定的组必须要存在)
-G:指定用户的附加组
-c:指定描述信息
-r:创建uid为201-999之间的用户
-M:不创建家目录
-d:指定其他目录为家目录
-s:指定用户登录的shell
-p:passwd ,创建用户的同时,给用户密码()
## 修改用户
usermod
-u:指定用户的uid
-g:指定用户的gid或者组名(创建用户时,指定的组必须要存在)
-G:指定用户的附加组
-a:配合-G一起使用,修改用户的附加组(追加附加组)
-c:指定描述信息
-d:指定其他目录为家目录
-m:配合-d,迁移用户的家目录
-s:指定用户登录的shell
-l:修改用户的用户名
-L:锁定用户
-U:解锁用户
## 删除用户
userdel
-r:删除用户本身及用户的相关文件目录
## 查看用户
id
-u:查看当前登录用户的uid
-g:查看当前登录用户的gid
-n:配合-u或者-g一起使用,配合-u:查看当前登录用户uid对应的名字,配合-g:查看当前登录用户gid对应的名
字
if [ $UID -gt 199 ] & & [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
who
# 当前登录用户 # 终端 #登录时间 #从哪个IP登录
root pts/0 2022-04-01 11:00 (10.0.0.1)
# 查看当前登录的用户
whoami
w
# 当前系统时间 # 服务器总共运行时间 # 登录用户数 #系统的平均负载
08:52:18 up 15 days, 2:03, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 Fri11 2.00s 1.59s 0.00s w
root pts/1 10.0.0.1 23Mar22 3days 0.54s 0.54s -bash
root pts/2 10.0.0.1 21Mar22 12days 0.04s 0.04s -bash
root pts/3 10.0.0.1 23Mar22 12days 0.06s 0.06s -bash
## awk命令基础语法
awk:一般来说,取出想要的字符串(主要过滤列)
默认以空格为分隔符,在awk中双引号,代表不识别变量
$1-$N 都是取第几列
$0:取出文件中的所有内容
$NF:文件的最后一列内容
# 选项
-F:指定分隔符
# 使用awk来拼命令
## sed命令取行
sed -n Np
N是阿拉伯数字
## seq 序列命令
-w:补全位数,用0来补
?用户管理?创建用户流程跟用户创建相关的文件:
/etc/login.defs
[root@wu ~]#grep -Ev ^#|^$ /etc/login.defs
MAIL_DIR/var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN5
PASS_WARN_AGE 7
UID_MIN1000
UID_MAX60000
SYS_UID_MIN201
SYS_UID_MAX999
GID_MIN1000
GID_MAX60000
SYS_GID_MIN201
SYS_GID_MAX999
CREATE_HOME yes
UMASK077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@wu ~]# grep -i ^[a-z] /etc/login.defs
MAIL_DIR/var/spool/mail
# 指定创建用户时,默认邮件文件位置
PASS_MAX_DAYS 99999
# 创建用户默认密码最小使用天数(0代表无限)
PASS_MIN_DAYS 0
# 密码最短位数
PASS_MIN_LEN5
# 密码过期警告
PASS_WARN_AGE 7
# 普通用户,最小UID是1000
UID_MIN1000
# 普通用户,最大UID是60000
UID_MAX60000
# 系统用户,最小UID是201
SYS_UID_MIN201
# 系统用户,最大UID是999
SYS_UID_MAX999
# 普通用户,最小GID是1000
GID_MIN1000
# 普通用户,最大GID是60000
GID_MAX60000
# 系统用户,最小GID是201
SYS_GID_MIN201
# 系统用户,最大GID是999
SYS_GID_MAX999
# 默认创建用户的家目录
CREATE_HOME yes
# UMASK 077 指定用户创建家目录的默认权限
UMASK077
# 创建用户时,如果不用-g指定组,那么会默认创建出该用户的同名组
USERGROUPS_ENAB yes
# 用户密码的加密方式 SHA512
ENCRYPT_METHOD SHA512
## 权限了解
r:读 4
w:写 2
x:执行 1
-:没有权限 0
目录创建默认权限:0777 - umask
文件创建默认权限:0666 - umask
0777
0022
----
0755
0666
0022
----
0644
如果 当前用户UID大于199 并且 用户的用户名和用户的组名相同 那么
if [ $UID -gt 199 ] & & [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask是002
umask 002
否则
else
umask是022
umask 022
fi
[root@wu ~]# 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命令后加用户名
# 修改其他用户密码
[root@wu ~]# passwd zls
## 修改zls用户的密码
Changing password for user zls.
## 新密码
New password:
BAD PASSWORD: The password is a palindrome
## 重复新密码
Retype new password:
## 所有认证令牌更新成功
passwd: all authentication tokens updated successfully.
## 免交互方式
stdin:标准输入
stdout:标准输出
stderr:错误输出
[root@wu ~]# echo 123@qqdianCOM|passwd --stdin zls1001
Changing password for user zls1001.
passwd: all authentication tokens updated successfully.
随机密码生成
tee:管道命令
-a:append 追加
[root@localhost ~]# echo $RANDOM|tee -a /tmp/pass.txt |passwd --stdin zls1001
练习题
# 需求:
1.批量创建100个用户
2.然后给这100个用户随机密码
3.将100个用户的密码保存到文件中
例如:创建100用户 zls001-zls100
用户名:密码
cat /tmp/pass.txt
zls001:71297391
zls002:1892319283
zls003:182372873
【佳豪哥哥教你学Linux的第十四天】
推荐阅读
- 小胖学Linux day15(用户管理2)
- 记一次通过物理文件恢复MariaDB数据
- 虚拟分布式交换机(VDS)
- 网络研究院|无法访问mysql官网,如何查找下载mysql所有版本?
- centos|Not Found-The requested URL was not found on this server.
- Docker 镜像导入导出
- 15-用户管理-seq,RANDOM,awk
- Kubernetes——存储卷(empyDirhostPathnfs)
- openstack桥接-内外网设置