day5.1
day5.1
用户管理
创建用户流程
# /etc/longin.defs
[root@localhost ~]# grep -Ev '^#|^$' /etc/login.defs
MAIL_DIR/var/spool/mail
PASS_MAX_DAYS99999
PASS_MIN_DAYS0PASS_MIN_LEN5
PASS_WARN_AGE7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOMEyes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
解释说明
[root@localhost ~]# grep -i '^[a-z]' /etc/login.defs
指定创建用户时,默认邮件文件位置
MAIL_DIR/var/spool/mail
创建用户默认密码最大使用天数
PASS_MAX_DAYS99999
创建用户默认密码最小使用天数(0代表无限)
PASS_MIN_DAYS0
密码最短位数
PASS_MIN_LEN5
密码过期警告
PASS_WARN_AGE7
普通用户,最小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
普通用户,最大GID是60000
GID_MAX 60000
系统用户,最小GID是
201SYS_GID_MIN 201
系统用户,最大GID是999SYS_GID_MAX 999
默认创建用户的家目录
CREATE_HOMEyes
指定用户创建家目录的默认权限
UMASK 077
创建用户时,如果不用-g指定组,那么会默认创建出该用户的同名组USERGROUPS_ENAB yes
用户密码的加密方式
SHA512ENCRYPT_METHOD S
# 权限了解
r 读 4
w 写 2
x 执行 1
- 没有权限 0
目录默认创建权限:0777 - umask
文件默认创建权限:0666 - umask
[root@localhost ~]# cat /etc/default/useradd
# 如果login.defs文件中的USERGROUPS_ENAB yes是no,该行配置才会生效
# 如果创建用户不创建同名组,默认会将该用户加入GID为100的系统组中(users)
GROUP=100
指定用户默认创建家目录的位置
HOME=/home
用户账户停权 -1永远不过期
INACTIVE=-1
账号终止时间的设置,不设置不终止
EXPIRE=
用户默认创建登录
shellSHELL=/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@28technicians ~]# useradd md
修改用户密码
[root@28technicians ~]# passwd md
修改md用户密码
Changing password for user md.
新的密码
New password:
BAD PASSWORD: The password is a palindrome
重复新的密码
Retype new password:
所有认证令牌成功
passwd: all authentication tokens updated successfully.
免交互方式
# 免交互方式
stdin 标注输入
stdout 标准输出
stderr 错误输出
# 举例
[root@28technicians ~]# echo '741852963'|passwd --stdin md
Changing password for user md.
passwd: all authentication tokens updated successfully.
随机密码生成
随机密码生成命令
$RANDOM
tee 管道命令
选项
-a: 追加
# 举例
[root@28technicians ~]# echo $RANDOM|tee /dev/pts/0 |passwd --stdin md
Changing password for user md.
714
passwd: all authentication tokens updated successfully.
awk命令
awk:一般来说,取出想要的字符串(主要滤列),默认空格为分隔符。在awk中一般使用单引号识别变量
$1-$N 就是取第几列
$o 取出文件中所有内容
$NF 文件最后一列内容
选项
-F:指定分隔符
# sed 命令取行
选项
-n
sed -n 'NP' N是阿拉伯数字
# seq 序列命令
选项
-w:补全位数,用0来补
# 举例
[root@28technicians ~]# cat 6666.txt
sdasd
dasdsadad
dsadasdssad dawsdasdas
dsadas sdasd sdas
sadada sadsad
dsad
asd asd sad asd
[root@28technicians ~]# awk '{print $1}' 6666.txt
sdasd
dasdsadad
dsadasdssad
dsadas
sadada
dsad
asd
[root@28technicians ~]# awk '{print $NF}' 6666.txt
sdasd
dasdsadad
dawsdasdas
sdas
sadsad
dsad
asd
[root@28technicians ~]# awk '{print $1}' 6666.txt |sed -n '3p'
dsadasdssad
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了