一.为用户添加密码
添加密码
交互式设定密码:passwd 加用户名
非交互式设定密码: echo “初始密码” | passwd --stdin 用户名
修改密码
为自己修改密码
直接使用passwd,注意:密码修改需要复杂一点,并且要达到8位数以上。
如何设置复杂的密码:
echo $RANDOM :(随机生成字符串)
echo $RANDOM | md5sum (随机生成复杂数字串)
mkpasswd(随机生成复杂密码命令)
mkpasswd参数:-l(字符数)-d(几个数字)-c(几个小写字母)-C(几个大写字母)-s(几个特殊符号)
例如:[root@localhost ~]# mkpasswd -l 8 -d 3 -c 1 -C 2 -s 2
:0MX9b6-
yum install -y expect(mkpasswd安装包)
lastpass(密码管理网页插件)
为别人修改密码(只有root才可以修改别人的密码)
总结:
1.为新用户添加新密码只有root权限才可以。
2.为用户变更密码也只有root才可以。
3.普通用户只可以修改自己的密码,无法修改他人密码。
4.密码的修改方式有两种,一种是交互式,一种是非交互式。
二.用户创建流程(PS:在用户创建的过程中需要参考/etc/login.defs和/etc/defaylt/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 当用户创建用户时不指定组,并且USERGROUPS_ENAB为no的时候,用户默认创建分配一个GID为100的组。
HOME=/home 用户默认的家目录
INACTIVE=-1 用户不失效(-1=不失效)
EXPIRE= 过期时间
SHELL=/bin/bash 默认登录shell
SKEL=/etc/skel 默认用户拷贝的环境变量
CREATE_MAIL_SPOOL=yes 创建邮箱
三.用户组的管理
没有指定组:默认会创建一个与用户同名的组,简称私有组。
指定组:-g指定一个基本组(基本组必须先存在)
附加组:-G 指定一个附加组(基本组或私有组无法满足需求时,添加一个附加组,继承该组的权限)
/etc/group
/etc/gshadow
创建:
groupadd 组名称
-g参数 指定用户组的GID
-r 参数 创建一个系统组
修改组:
groupmod -g 要修改的GID 用户组
groupmod 旧的组名称 -n 新的组名称
删除组:(如果要删除基本组,需要先删除基本组中的用户才可以删除该组)
groupdel -r(删除信息)
用户提权:
su 切换用户 登录式shell (如果切换用户需要输入密码)
su - 用户名字 非登录式shell (root切换任何用户不需要输入密码)
基本概念:
1.交互式shell (等待用户输入执行指令,有提示)
非交互式shell (不需要等待用户输入执行指令,没有提示shell执行结束会自动退出)
登录式shell (需要输入用户名和密码才可以进入shell)
非登录式shell (不需要输入用户名和密码就可以进入shell,比如运行bash会开启一个新的会话窗口)
2.bash shell配置文件介绍
个人配置文件:~/.bash_profile和~/.bashrc
全局配置文件:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
(profile类文件,设定环境变量,登录前的运行脚本和命令)
(bashrc类文件,设定本地变量,定义命令别名)
PS:如果全局配置和个人配置冲突,以个人配置为准
3.登录后环境变量配置文件的应用顺序:(验证:在每个文件中输入echo)
登录式shll配置文件应用顺序
1. /etc/profile
2. /etc/profile.d/1.sh
3. ~/.bash_profile
4. ~/.bashrc
5. /etc/bashrc
非登录式shll配置文件应用顺序
1. ~/.bashrc
2. /etc/bashrc
3. /etc/profile.d/1.sh
PS:su 用户名 和 su - 用户名的区别就在于加载的环境变量不一样。
sudo 提权(root事先分配好权限--关联用户)
当普通用户需要执行一些高级操作的时候就需要加上sudo。(不加sudo还是普通用户的权限)
1.快速提权
直接将普通用户切换至wheel组中 (wheel组是默认拥有sudo权限的)
2.手动提权 sudo -l (查看自己有哪些权限)
可使用visudo命令或者vim /etm/sudoers (visudo有语法检测功能,输入错误无法保存退出)
%(组)wheel(组名) ALL(主机名)=(ALL)(角色名) ALL(所有权限)
例如:
3.限制权限
第一种:使用sudo中自带的别名操作,将多个用户定义成一个组
1.使用sudo定义分组,这个分组和系统分组没有关系
User_Alias OPS = 要分配的系统真实用户
User_Alias DEV = 要分配的系统真实用户
2.sudo中默认别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias LOCATE = /usr/bin/updatedb
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
Cmnd_Alias DRIVERS = /sbin/modprobe
3.分配权限
OPS ALL = (ALL)sudo别名:SOFTWARE, LOCATE ,STORAGE
DEV ALL = (ALL)sudo别名 :SOFTWARE,LOCATE
第二种:创建好分配组,将用户添加到创建好的分配组中。
1.添加用户
2.添加密码
3.配置规则
%真实组 ALL=(ALL) 命令或命令别名
四.sudo执行流程
1.普通用户执行sudo命令的时候会检查/var/db/sudo是否错在时间戳缓存。
2.如果存在就不需要输入密码,否则需要输入用户名和密码
3.输入密码会检测是否该用户是否拥有该权限/etc/sudoers
4.如果有就会执行,没有就报错退出