用户相关命令
如何为用户设定密码,又如何修改密码
1)为新用户设置密码(root用户才能进行设置)(密码尽量复杂{0-9}{a-Z}{特殊字符})
交互式设置密码:passwd 用户名
非交互式设置密码:echo "xxxxxx" | passwd --stdin 用户名
2)批量创建用户,设置固定密码(创建test1-100,101个用户,并设置密码为123456)
①编写一个脚本文件
②编写文件内容
for i in {1...100}
do
useradd test$i
echo "123456" | passwd --stdin test$i
done
2)为用户变更密码
①为自己修改密码,直接使用passwd,注意密码需要复杂一点,并达到八位
②为别人修改密码(root)
passwd username
3)怎样生成复杂的密码
①echo $RANDOM |md5sum | cut -c 1-10
609d5fc83c
②mkpasswd 可以生成随机字符串
参数:
-l:设定密码长度
-d:数字
-c:小写字母
-s:特殊字符
-C:大写字母
总结:
1.为新用户添加密码,只有root权限才可以
2.为用户变更密码也只有root才可以
3.普通用户只能修改自己的密码,无法修改其他人的密码
4.密码的修改方式有两种,一种是交互式,另一种是非交互式
用户的创建流程
在用户创建的过程中需要参考 /etc/login.defs 和 /etc/default/useradd 这两个文件,默认参考
若果在创建用户时指定了参数,则会覆盖(默认 /etc/login.defs 和 /etc/dafault/useradd)
grep "^[a-Z]" /etc/login.defs
MAIL_DIR /var/spool/mail #创建的邮箱所在的位置
PASS_MAX_DAYS 99999 #密码最长使用的天数
PASS_MIN_DAYS 0 #密码最短时间的天数
5.用户组的管理
PASS_MIN_LEN 5 #密码的长度
PASS_WARN_AGE 7 #密码到期前7天警告
UID_MIN 1000 #uid 从1000开始
UID_MAX 60000 #uid从6w结束
SYS_UID_MIN 201 #系统用户的uid 从201
开始
SYS_UID_MAX 999 #系统用户的uid最大到
999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes #给用户创建家目录,创建
在/home
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
cat /etc/default/useradd
useradd defaults file
GROUP=100 #当用户创建用户时不指定组,并
且/etc/login.defs中USERGROUPS_ENAB为no时, 用户默认创建给分
配一个gid为100的组.
HOME=/home #用户默认的家目录
INACTIVE=-1 #用户不失效
EXPIRE= #过期时间
SHELL=/bin/bash #默认登录shell
SKEL=/etc/skel #默认用户拷贝的环境变量
CREATE_MAIL_SPOOL=yes #创建邮箱
用户组如何管理
用户没有指定组:默认会创建一个与用户同名的组,简称私有组
用户指定组:-g 指定一个基本组,基本组必须先存在
用户加入附加组:-G 指定(基本组或私有组无法满足需求时,添加一个附加组,继承组的权限)
1)/etc/group 配置文件
head -1 /etc/group
root:x:0:
root:组的名称
x:组的密码
0:组GID
第四列:显示附加组,不显示基本组
2)/etc/shadow
head -1 /etc/gshadow
root:::
root:组的名称
第二列:组的密码
第三列:组管理员
第四列:显示附加组成员,不显示基本组成员
创建组
groupadd groupname
参数
-g:指定gid号
-r:创建系统组
修改组
groupmod
参数
-n:修改组名称
-g:修改组gid
删除组,如果要删除基本组,需要先删除基本组中的用户才可以删除该组
groupdel
切换用户/提权
su切换用户,如果切换用户,需要知道用户的密码,安全性较低
sudo提权(root事先分配好权限--->关联用户)安全 方便 但是复杂
基本概念
交互式:需要不停的交互
非交互式:交互一次
登录式shell:需要用户名和密码开启bash窗口
非登录式shell:不需要用户名和密码即可开启bash窗口
su - 属于登录式shell 加载全部环境变量
su 属于非登录式shell 加载部分环境变量
su切换缺点:
需要知道用户对应的密码
说明安全性较低
sudo 提权
预先分配好权限
在关联对应的用户
提升权限太大,能否有办法限制仅开启某个命令的使用权限?其他命令不允许
1)visudo
①使用sudo定义分组,和系统group没有关系
②定义可执行的命令组,便于后续调用
③使用sudo开始分配权限
④登录对应的用户使用sudo -l 验证权限
2)使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组
①添加两个真是的系统组
②添加两个用户
③添加密码
④在sudo中配置规则
⑤检查sudo是否配置有错
⑥检查用户权限