用户管理
Posted 0_o
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户管理相关的知识,希望对你有一定的参考价值。
[TOC]
课前回顾(补充)
# awk命令基础语法
awk:一般来说,是取出想要的字符串(主要过滤列)
默认是以空格为分隔符,在awk中,双引号代表不识别变量
1$-$n 都是取第几列
$0:取出文件中所有内容
$NF:文件的最后一列内容
-F:指定分隔符
举例
[root@localhost <sub>]# cat zxw.txt
12 3 124
13 2 341
12 3 123
13 2 332
34 3 234
32 4 234
[root@localhost </sub>]# awk print $0 zxw.txt
12 3 124
13 2 341
12 3 123
13 2 332
34 3 234
32 4 234
[root@localhost <sub>]# awk print $2 zxw.txt
3
2
3
2
3
4
[root@localhost </sub>]# awk print $NF zxw.txt
124
341
123
332
234
234
# 选项
-F:指定分隔符
举例
[root@localhost <sub>]# cat zxw.txt
12 /3, 124
13 /2, 341
12 /3, 123
13 /2, 332
34 /3, 234
32 /4, 234
[root@localhost </sub>]# awk -F , print $NF zxw.txt
124
341
123
332
234
234
[root@localhost <sub>]# awk -F / print $1 zxw.txt
12
13
12
13
34
32
[root@localhost </sub>]# awk -F / print $1"nihao" zxw.txt
12 nihao
13 nihao
12 nihao
13 nihao
34 nihao
32 nihao
# 使用awk来拼命令
举例
批量创建十个用户,然后删除
[root@zxw <sub>]# seq -w 10 | awk print "useradd zxw"$1
useradd zxw01
useradd zxw02
useradd zxw03
useradd zxw04
useradd zxw05
useradd zxw06
useradd zxw07
useradd zxw08
useradd zxw09
useradd zxw10
[root@zxw </sub>]# seq -w 10 | awk print "useradd zxw"$1 | bash
[root@zxw <sub>]# seq -w 10 | awk print "userdel -r zxw"$1 | bash
# sed命令取行
sed -n Np
n代表阿拉伯数字
举例
[root@localhost </sub>]# cat zxw.txt
12 /3, 124
13 /2, 341
12 /3, 123
13 /2, 332
34 /3, 234
32 /4, 234
[root@localhost <sub>]# sed -n 3p zxw.txt
12 /3, 123
# seq序列命令
-w:补全位数,用0来补全
举例
[root@localhost </sub>]# seq 10
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# seq -w 10
01
02
03
04
05
06
07
08
09
10
创建用户流程
跟用户创建相关的文件
/etc/login.defs
[root@zxw <sub>]# grep -Ev ^#|^$ /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_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_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
[root@zxw </sub>]# grep -i ^[a-z] /etc/login.defs
# 指定创建用户时,默认文件位置
MAIL_DIR /var/spool/mail
# 创建用户默认密码最大天数
PASS_MAX_DAYS 99999
# 创建用户默认最小使用天数 (0代表无限期)
PASS_MIN_DAYS 0
# 密码最短位数
PASS_MIN_LEN 5
# 密码过期警告
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是201
SYS_GID_MIN 201
# 系统用户最大GID是60000
SYS_GID_MAX 999
# 默认创建用户的家目录
CREATE_HOME yes
# UMASK 077 指定用户创建家目录的默认权限
UMASK 077
# 创建用户时,如果不用-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@zxw ~]# 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@zxw <sub>]# passwd tl
# 修改tl用户的密码
Changing password for user tl.
# 输入新的密码
New password:
BAD PASSWORD: The password is a palindrome
# 重复新密码
Retype new password:
# 所有令牌认证成功
passwd: all authentication tokens updated successfully.
# 免交互方式
stdin:标准输出
stdout:标准输入
stderr:错误输出
举例
[root@zxw </sub>]# echo @e3121 | passwd --stdin tl
Changing password for user tl.
passwd: all authentication tokens updated successfully.
密码生成
tee:管道命令
-a:append 追加
举例
[root@zxw <sub>]# echo $RANDOM|tee -a /tmp/pass.txt |passwd --stdin tl
Changing password for user tl.
passwd: all authentication tokens updated successfully.
[root@zxw </sub>]# cat /tmp/pass.txt
16409
grep -w xxx 限定字符的边界(精确匹配)
以上是关于用户管理的主要内容,如果未能解决你的问题,请参考以下文章