用户管理

Posted 酱油拌饭

tags:

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

用户管理

创建用户流程

跟创建用户相关的文件

/etc/login.defs

[root@ltl ~]# grep -iE ^[a-z] /etc/login.defs 
MAIL_DIR    /var/spool/mail   # 指定创建用户时,默认邮件文件位置
PASS_MAX_DAYS   99999         # 创建用户默认密码最大使用天数
PASS_MIN_DAYS   0             # 创建用户默认密码最小使用天数(0代表无限)
PASS_MIN_LEN    5             # 密码最短位数
PASS_WARN_AGE   7             # 密码过期警告
UID_MIN                  1000 # 普通用户,最小UID是1000
UID_MAX                 60000 # 普通用户,最大UID是60000
SYS_UID_MIN               201 # 系统用户,最小UID是201
SYS_UID_MAX               999 # 系统用户,最大UID是999
GID_MIN                  1000 # 普通用户,最小GID是1000
GID_MAX                 60000 # 普通用户,最大GID是60000
SYS_GID_MIN               201 # 系统用户,最小GID是201
SYS_GID_MAX               999 # 系统用户,最大GID是999
CREATE_HOME yes               # 默认创建用户的家目录
UMASK           077           # UMASK 077 指定用户创建家目录的默认权限
USERGROUPS_ENAB yes           # 创建用户时,如果不用-g指定组,那么会默认创建出该用户的同名组
ENCRYPT_METHOD SHA512         # 用户密码的加密方式 SHA512

[root@ltl ~]# grep -iE ^[a-z] /etc/default/useradd 
GROUP=10     # 如果login.defs文件中的USERGROUPS_ENAB yes是no,该行配置才会生效
             # 如果创建用户不创建同名组,默认会将该用户加入GID为100的系统组中(users)
HOME=/home   # 指定用户默认创建家目录的位置
INACTIVE=-1  # 用户账户停权 -1永远不过期
EXPIRE=      # 账号终止时间的设置,不设置不终止
SHELL=/bin/bash  # 用户默认创建登录shell
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文件中

权限了解

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

如果当前创建目录或文件的用户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

#创建目录或文件的用户,如果该用户的uid大于199,并且用户名与用户组名相同,umask时002,如果不大于199则时022,创建目录时默认目录创建权限是0777,

用户uid大于199,创建目录的权限则是 0777-0002=0775 = rwx rwx r-x
用户uid小于199,创建目录的权限则是 0777-0022=0755 = rwx r-x r-x
用户uid大于199,创建文件的权限则是 0666-0002=0664 = rw- rw- r--
用户uid小于199,创建文件的权限则是 0666-0022=0644 = rw- r-- r--

用户的密码管理

passwd:给用户设置密码
# 语法:
passwd [用户名]
注意:如果不加用户名,则修改当前登录用户的密码,只有root用户能在passwd命令后加用户名

[root@ltl ~]# passwd xwq001      # 修改其他用户密码
Changing password for user xwq001.  # 修改xwq001用户的密码

New password:                       # 新密码
BAD PASSWORD: The password is a palindrome  

Retype new password:                       # 重复新密码
passwd: all authentication tokens updated successfully. #所有认证令牌更新成功

## 免交互方式 , 不止passwd命令可以用符合下列要求的都可以
stdin:标准输入
stdout:标准输出
stderr:错误输出

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

#曾导的示例
[root@localhost ~]# echo 123@qqdianCOM|passwd --stdin zls1001
Changing password for user zls1001.
passwd: all authentication tokens updated successfully.

#不加--stdin的报错
[root@ltl ~]# echo 123@qqdianCOM|passwd  xwq001
Changing password for user xwq001.
New password: Retype new password: Password change aborted.
New password: Password change aborted.
New password: Password change aborted.
passwd: Have exhausted maximum number of retries for service

利用随机数设备/dev/random生成随机密码以及如何让密码保存或显示

#管道命令
tee  
#选项
-a  追加
#示例
[root@ltl ~]#  echo $RANDOM |passwd --stdin xwq001 
Changing password for user xwq001.
passwd: all authentication tokens updated successfully.
#可以看到屏幕上并没有反馈密码,再加上是一个随机数设备我们也不知道密码是啥。

#方式一
[root@ltl ~]# echo $RANDOM |tee /dev/pts/0 |passwd --stdin xwq100
Changing password for user xwq100.
31871
#利用显示器设备让随机数显示在屏幕 密码:31871
passwd: all authentication tokens updated successfully.

#方式二
[root@ltl ~]# echo $RANDOM |tee sss |passwd --stdin xwq100
[root@ltl ~]# cat sss 
8763

#把密码储存到文件里

#追加用途,tee命令的保存内容是默认覆盖,如果想要把密码保存到一个文件里就需要追加
#用法
[root@ltl ~]# echo $RANDOM |tee -a sss |passwd --stdin xwq001
[root@ltl ~]# cat sss 
8763
31272

练习题

[root@ltl ~]# seq -w 100 |awk print "useradd xwq"$1" && echo $RANDOM |tee -a /tmp/ccc |passwd --stdin xwq"$1" && echo xwq"$1": >> /root/www && paste /root/www /tmp/ccc > tmp/passwd1.txt"|bash
[root@ltl ~]# cat /tmp/passwd1.txt 
xwq001: 16682
xwq002: 20951
xwq003: 7493
xwq004: 8416
xwq005: 26441
xwq006: 29527
xwq007: 28768
xwq008: 8939
xwq009: 14560
xwq010: 9696
xwq011: 30586
xwq012: 28641
xwq013: 29813
xwq014: 17210
xwq015: 3034
xwq016: 11187
xwq017: 23390
xwq018: 10740
xwq019: 24186
xwq020: 12500
xwq021: 29950
xwq022: 14879
xwq023: 9768
xwq024: 20251
xwq025: 16267
xwq026: 20994
xwq027: 16178
xwq028: 2797
xwq029: 6372
xwq030: 12100
xwq031: 24889
xwq032: 29707
xwq033: 13218
xwq034: 27397
xwq035: 27894
xwq036: 10942
xwq037: 14993
xwq038: 21610
xwq039: 19498
xwq040: 29355
xwq041: 11291
xwq042: 9506
xwq043: 18744
xwq044: 5741
xwq045: 31721
xwq046: 9372
xwq047: 26504
xwq048: 28279
xwq049: 18434
xwq050: 9558
xwq051: 13034
xwq052: 28979
xwq053: 12714
xwq054: 1754
xwq055: 3878
xwq056: 749
xwq057: 16519
xwq058: 6635
xwq059: 15692
xwq060: 30051
xwq061: 13471
xwq062: 12377
xwq063: 9819
xwq064: 603
xwq065: 17497
xwq066: 18888
xwq067: 18639
xwq068: 738
xwq069: 21467
xwq070: 521
xwq071: 14889
xwq072: 24679
xwq073: 17772
xwq074: 11833
xwq075: 28790
xwq076: 6661
xwq077: 22994
xwq078: 18127
xwq079: 21601
xwq080: 28740
xwq081: 9720
xwq082: 23294
xwq083: 3472
xwq084: 3293
xwq085: 2485
xwq086: 8833
xwq087: 11583
xwq088: 11331
xwq089: 24068
xwq090: 22862
xwq091: 17036
xwq092: 27786
xwq093: 14508
xwq094: 12735
xwq095: 13738
xwq096: 16262
xwq097: 10433
xwq098: 32516
xwq099: 2212
xwq100: 28195

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

MySQL的用户管理与权限管理

MySQL的用户管理与权限管理

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

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

18. 用户与权限管理

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