用户管理

Posted 师莹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户管理相关的知识,希望对你有一定的参考价值。

创建用户流程

跟用户创建相关的文件:
/etc/login.defs

[root@shiying <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@shiying </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是999
SYS_GID_MAX 999
# 默认创建用户的家目录
CREATE_HOME yes
# UMASK 077 指定用户创建家目录的默认权限
UMASK 077
# 创建用户时,如果不用-g指定组,那么会默认创建出该用户的同名组
USERGROUPS_ENAB yes
# 用户密码的加密方式 SHA51
ENCRYPT_METHOD SHA512

## 权限了解
r:读 4
w:写 2
x:执行 1
-:没有权限 0
目录创建默认权限:0777 - umask
文件创建默认权限:0666 - umask

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

[root@shiying ~]# 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/defaul/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@shiying <sub>]# passwd qq
## 修改qq用户的密码
Changing password for user qq.
## 新密码
New password:
BAD PASSWORD: The password is a palindrome
## 重复新密码
Retype new password:
## 所有认证令牌更新成功
passwd: all authentication tokens updated successfully.

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

[root@shiying </sub>]# echo 123|passwd --stdin qq
Changing password for user qq.
passwd: all authentication tokens updated successfully.

随机密码生成

tee:管道命令
-a:append 追加

[root@localhost ~]# echo $RANDOM|tee -a /tmp/pass.txt |passwd --stdin z

awk命令基础语法

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

# 选项
-F:指定分隔符

# 使用awk来拼命令
[root@shiying <sub>]# vim 111.txt
[root@shiying </sub>]# cat 111.txt
1 a !
2 b @
3 c #
4 d $
5 e %
## $1-$N 取第一列
[root@shiying <sub>]# awk print $1 111.txt
1
2
3
4
5

## $0 取出文件中的所有内容
[root@shiying </sub>]# awk print $0 111.txt
1 a !
2 b @
3 c #
4 d $
5 e %
## -F选项以:为分割符 $NF提取最后一列
[root@shiying <sub>]# awk -F : print $NF /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown

提取ifconfig里的Ip地址
[root@shiying </sub>]# ifconfig | head -2 |tail -1 |awk print $2
10.0.0.103
## grep -w取完整字符
[root@shiying <sub>]# ifconfig |grep -w inet| awk print $2|head -1
10.0.0.103



## sed命令取行
sed-nNp

N是阿拉伯数字

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

[root@shiying </sub>]# seq -w 10
01
02
03
04
05
06
07
08
09
10
[root@shiying <sub>]# seq -w 10 |awk print $1
01
02
03
04
05
06
07
08
09
10
[root@shiying </sub>]# seq -w 10 |awk print"sy" $1
sy01
sy02
sy03
sy04
sy05
sy06
sy07
sy08
sy09
sy10
[root@shiying <sub>]# seq -w 10 |awk print "useradd sy" $1
useradd sy01
useradd sy02
useradd sy03
useradd sy04
useradd sy05
useradd sy06
useradd sy07
useradd sy08
useradd sy09
useradd sy10

[root@shiying </sub>]# seq -w 10 |awk print"useradd sy"$1|bash

[root@shiying ~]# seq -w 10 |awk print "userdel -r sy"$1 |bash

以上是关于用户管理的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的用户管理与权限管理

MySQL的用户管理与权限管理

Linux学习之用户管理命令与用户组管理命令(十五)

怎么在我的电脑里添加管理员用户

18. 用户与权限管理

金蝶KIS软件用户管理及权限授权