一、为用户添加或修改密码密码
1、添加密码
passwd命令
只有root才可以添加
密码要复杂 [0-9] [a-z] [A-Z] [!@#$%^&*.]
#交互式添加密码
[root@oldboy ~]# passwd Jgb
Changing password for user Jgb.
New password: #输入新密码
BAD PASSWORD: The password is a palindrome
Retype new password: #再次输入新密码
passwd: all authentication tokens updated successfully.
#非交互式设定密码
[root@oldboy ~]# echo "123" | passwd --stdin Jgb
#批量创建用户,并设定固定密码
[root@oldboy ~]# cat a.sh
for i in {1..100}
do
useradd test$i
echo "123456" | passwd --stdin test$i
done
2、修改密码
1)普通用户只允许变更自己的密码,无法修改其他人密码,并且密码长度必须8位字符。 直接passwd
2)超级管理员用户允许修改任何人的密码,无论密码长度多长或多短。passwd + 用户名
3、复杂密码设置
#系统内置生成随机字符串
[root@oldboy ~]# echo $RANDOM|md5sum|cut -c 1-10
#mkpasswd生成随机字符串
选项:-l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符
[root@oldboy ~]# yum install -y expect //需要安装扩展包
[root@oldboy ~]# mkpasswd -l 10 -d 2 -c 3 -C 3 -s 2
二、用户的创建流程? [扩展了解]
在用户创建的过程需要参考 /etc/login.defs 和/etc/default/useradd 这两个文件,默认参考。
如果在创建用户时指定了参数,则会覆盖 (默认 /etc/login.defs和/etc/default/useradd) 。
[root@oldboyedu ~]# grep "^[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 #密码到期前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 #给用户创建家目录,创建在/home
UMASK 077
USERGROUPS_ENAB yes #如果设置为 yes,如果组中没有成员了, userdel 将移除此用 户组, useradd 创建用户时,也会创建一个同名的默认组。
ENCRYPT_METHOD SHA512
[root@oldboyedu ~]# 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 #创建邮箱
三、用户组管理
1、组的介绍
私有组:不加任何参数,默认创建一个与用户同名的组。
基本组:-g 参数指定。 基本组必须先存在。
附加组:-G 参数指定。 基本组与私有组无法满足需求时,添加一个附加组,继承改组的权限。
2、组的配置文件
1)/etc/group 存放信息
[root@oldboy ~]# head -1 /etc/group
root:x:0:
#以:为分隔符,总共分为4列
#第一列 组的名称
#第二列 组的密码
#第三列 组GID
#第四列 显示附加组不显示基本成员
2)/etc/gshadow 存放密码
[root@oldboy ~]# head -1 /etc/gshadow
root:::
#以:为分隔符,总共分为4列
#第一列 组的名称
#第二列 组的密码
#第三列 组管理员
#第四列 显示附加组不显示基本成员
3、组的相关命令
1)创建组
groupadd 命令
#-g 指定创建组的gid
[root@oldboy ~]# groupadd -g 666 aa
#-r 创建系统组
[root@oldboy ~]# groupadd -r maomao
2)修改组
groupmod 命令
#-g 修改组的gid
[root@oldboy ~]# groupmod -g 777 aa
#-n 修改组的名称
[root@oldboy ~]# groupmod aa(旧组名) -n bb(新组名)
3)删除组
groupdel 命令
要先删除基本组中的用户才可以删除基本组。
[root@oldboy ~]# groupdel aa
图1.png
[root@oldboy ~]# groupadd dawang
[root@oldboy ~]# groupadd laowang
[root@oldboy ~]# useradd xiaowang
[root@oldboy ~]# useradd gb -g laowang
[root@oldboy ~]# usermod xiaowang -G laowang,dawang
[root@oldboy ~]# userdel -r xiaowang
[root@oldboy ~]# groupdel dawang
[root@oldboy ~]# groupdel laowang
groupdel: cannot remove the primary group of user 'gb'
[root@oldboy ~]# userdel -r gb
[root@oldboy ~]# groupdel laowang
四、普通用户提权
su 切换用户 如果切换用户,需要知道用户的密码,不是很安全
图2.pngsudo 提权( root事先分配好权限 -–> 关联用户 ) 安全 方便 但是复杂
1、shell分类
1)交互式 不停的交互,比如面试时一问一答
2)非交互式 面试时一下子回答完所有的问题,不被打断
3)登录式shell
需要用户名以及密码开启bash窗口
su - 用户名
会加载全部的环境变量
4)非登录式shell
不需要用户名和密码即可开启bash窗口
su 用户名
会加载部分环境变量(会出现错误清空)
#登录式shell 与 非登录式shell 的区别是 加载的环境变量不同
[root@oldboy ~]# su - root
Last login: Tue Aug 6 17:18:37 CST 2019 from 10.0.0.1 on pts/1
/etc/profile!
/etc/profile.d/1.sh!
~/.bash_profile!
~/.bashrc!
/etc/bashrc!
[root@oldboy ~]# su root
~/.bashrc!
/etc/bashrc!
/etc/profile.d/1.sh!
2、bash shell配置文件
文件主要保存用户的工作环境
1)个人配置文件:
~/.bash_profile
~/.bashrc
2)全局配置文件:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
如果全局配置和个人配置产生冲突,以个人配置为准
#显示环境变量
在每个文件中添加一行输出 echo
[root@oldboy ~]# vim /etc/profile
[root@oldboy ~]# vim /etc/profile.d/1.sh
[root@oldboy ~]# vim /etc/bashrc
[root@oldboy ~]# vim ~/.bash_profile
[root@oldboy ~]# vim ~/.bashrc
图3.png
图4.png
图5.png
图6.png
图7.png
3、su命令
普通用户 su - 可以直接切换至root用户,但需要输入root用户的密码。
超级管理员root用户使用 su - username 切换普通用户不需要输入任何密码。
4、sudo提权
第一种方式:使用sudo中自带的别名操作,将多个用户定义成一个组,这个组只有sudo认可。
[root@oldboy ~]# visudo #也可以使用vim /etc/sudoers来配置
图8.png
#登陆对应的用户使用 sudo -l 验证权限
第二种方式:使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组。
#1.添加两个系统组
[root@oldboy ~]# groupadd group_dev
[root@oldboy ~]# groupadd group_op
#2.分别为组添加两个用户
[root@oldboy ~]# useradd user_a -G group_dev
[root@oldboy ~]# useradd user_b -G group_dev
[root@oldboy ~]# useradd user_c -G group_op
[root@oldboy ~]# useradd user_d -G group_op
#3.添加密码
[root@oldboy ~]# echo "1" | passwd --stdin user_a
[root@oldboy ~]# echo "1" | passwd --stdin user_b
[root@oldboy ~]# echo "1" | passwd --stdin user_c
[root@oldboy ~]# echo "1" | passwd --stdin user_d
#4.在sudo中配置规则
[root@oldboy ~]# 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
%group_dev ALL=(ALL) SOFTWARE
%group_op ALL=(ALL) SOFTWARE,PROCESSES
#5.检查sudo是否配置有错
[root@oldboy ~]# visudo -c
#6.登陆对应的用户使用 sudo -l 验证权限
网友评论