用户管理(二)
目录创建用户流程
跟用户创建相关的文件:
-
/etc/login.defs
[root@localhost ~]# grep -Ev '^#|^$'^Cetc/login.defs [root@localhost ~]# grep -i '^[a-z]' /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 # 指定创建用户时,默认邮件文件位置 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是999 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 如果 当前用户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
-
/etc/default/useradd
[root@localhost ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
# 如果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@localhost ~]# passwd lx15
# 修改lx15用户的密码
[root@localhost ~]# passwd lx15
Changing password for user lx15.
## 新密码
New password:
(密码提示:密码不符合设置 - 过于简单/系统化)
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
## 重复新密码
Retype new password:
## 所有认证令牌更新成功
passwd: all authentication tokens updated successfully.
## 免交互方式
stdin:标准输入
stdout:标准输出
stderr:错误输出
## 示例:stdin 标准输入
[root@localhost ~]# echo '785034343@qq.com' | passwd --stdin lx15
Changing password for user lx15.
passwd: all authentication tokens updated successfully.
随机密码生成
# 命令:
tee:管道命令
# 选项:
-a:append 追加
用法示例:
[root@localhost ~]# echo $RANDOM | tee -a /work/passwd.txt | passwd --stdin lx15
用户相关命令(扩展补充)
# 查看指定用户的信息
id:默认情况不加用户名则查看当前登录用户的信息
# 语法:
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
umask 002
否则
else
umask是022
umask 022
fi
## awk命令基础语法
awk:一般来说,取出想要的字符串(主要过滤列)
# 默认以空格为分隔符,在awk中双引号,代表不识别变量
$1-$N 都是取第几列
$0:取出文件中的所有内容
$NF:文件的最后一列内容
# 选项
-F:指定分隔符
## 举例:
awk -F ':' '{print $NF}' lx15.txt
# 使用awk来拼命令
awk '{print "useradd zls"$1}'|bash
## 取行命令:
sed
# 选项
-n 只显示匹配处理的行(否则会输出所有)(也就是关闭默认的输出)
sed -n 'Np'
(N是阿拉伯数字)
示例:
sed -n '2p' lx15.txt
## 序列命令:
seq
-w:补全位数,用0来补
#示例:
[root@localhost ~]# 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
组合举例:
seq -w 10|awk '{print "useradd zls"$1}'|bash
seq -w 10 | awk '{print "userdel -r zls"$1}'|bash
思维导图:
标签:UID,MIN,创建,流程,用户,etc,GID 来源: https://www.cnblogs.com/chenguobao/p/16103718.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。