1.如何为用户设定密码,有如何修改密码?
passwd #设置或修改用户密码
passwd 用户名 #设置密码
echo "123" | passwd --stdin + 用户名 #passwd --stdin 非交互式设定密码
批量创建用户并设置密码
[root@zyt ~]#cat zyt.sh
for i in {1..100}
do
useradd zyt$i
echo "123456" | passwd --stdin zyt$i
done
如何设置出复杂密码
[root@zyt ~]# echo $RANDOM | md5sum |cut -c 5-15 2c52fcc14cd
随机生成复杂密码
[root@zyt ~]# yum install -y expect
mkpasswd生成随机字符串, -l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
总结
- 为新用户添加密码 只有root权限才可以
- 为用户变更密码也只有root才可以
- 普通用户只能修改自己的密码,无法修改其他人的密码
- 密码的修改方式有两种,一种是交互式 非交互
2.用户的创建流程
- /etc/login.defs 和 /etc/default/useradd 创建用户默认值 配置文件
- 如果在创建用户时指定了参数,则会覆盖 (默认 /etc/login.defs 和/etc/default/useradd)
/etc/login.defs 配置文件解释
MAIL_DIR /var/spool/mail 创建的邮箱所在位置
PASS_MAX_DAYS 99999 密码最长使用天数
PASS_MIN_DAYS 0 密码最短使用天数
PASS_MIN_LEN 5 密码长度
PASS_WARN_AGE 7 密码到期前7天警告
UID_MIN 1000 uid 从1000开始
UID_MAX 60000 uid最高到6万
SYS_UID_MIN 201 系统用户uid从201开始
SYS_UID_MAX 999 系统用户uid最大到999
GID_MIN 1000 gid从1000开始
GID_MAX 60000 gid最高到6万
SYS_GID_MIN 201 系统gid从201开始
SYS_GID_MAX 999 系统gid最高到999
CREATE_HOME yes 给系统创建家目录,默认在/home
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
/etc/default/useradd 配置文件解释
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 创建邮箱
3.用户组如何管理
用户组分为私有组,基本组,附加组
- 私有组:是创建用户时默认会创建一个与用户名同名的组
- 基本组:-g 指定的一个基本组,前提基本组必须先存在
- 附加组:-G指定 基本组或私有组无法满足需求时,添加一个附加组,继承改该组的权限
组信息的配置文件为/etc/group 和 /etc/gshadow
/etc/group 配置文件解释
root : x : 0 :
以:为分隔符共四列
第一列 组的名称
第二列 组的密码
第三列 组GID
第四列 显示附加组,不显示基本组
/etc/gshadow 配置文件解释
root : : :
以:为分隔符共四列
第一列 组的名称
第二列 组的密码
第三列 组管理员
第四列 显示附加组,不显示基本组
关于组的命令
groupadd 创建组
-g 指定GID
-r 创建系统组
groupmod 修改组
-g 修改组gid
-n 修改组名称
groupdel 删除组(如果删除基本组,必须先删除基本组中的用户才能删除该组)
4.普通用户无权限怎么办?切换身份or提权?
su 切换用户
- 加-属于登录时shell,不加-属于非登录式shell,区别是加载的环境变量不同,登录式shell加载全部的环境变量,非登录式shell加载部分环境变量
sudo 提权
- 预先分配好权限
- 再关联对应的用户
提升的权限太大,能否有办法限制仅开启某个命令的使用权限?其他命令不允许?
第一种方法
**1.使用命令visudo进入配置文件**
**2.使用sudo定义分组,这个系统group没什么关系**
User_Alias OPS = oldboy,oldgirl
User_Alias DEV = zytt
3.定义可执行的命令组,便于后续调用
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
4.使用sudo开始分配权限
OPS ALL=(ALL) NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES
DEV ALL=(ALL) SOFTWARE,PROCESSES
5.登陆对应的用户使用 sudo -l 验证权限
第二种方法
1.添加两个真实的系统组, groupdev groupopt
[root@zyt ~]#groupadd groupdev
[root@zyt ~]#groupadd groupopt
2.添加两个用户, group_dev group_op
[root@zyt ~]#useradd usera -G groupdev
[root@zyt ~]# useradd userb -G groupopt
3.记得添加密码
[root@zyt ~]# echo "123" | passwd --stdin usera
[root@zyt ~]# echo "123" | passwd --stdin userb
4.在sudo中配置规则
[root@zyt ~]# visudo
Cmnd_Alias NETWORKING = /sbin/ifconfig, /bin/ping
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /usr/bin/systemctl start
Cmnd_Alias STORAGE = /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
%groupdev ALL=(ALL) SOFTWARE
%groupop ALL=(ALL) SOFTWARE,PROCESSES
5.检查sudo是否配置有错
[root@zyt ~]# visudo -c
/etc/sudoers: parsed OK
6.登陆对应的用户使用 sudo -l 验证权限