密码的创建与更改
为新用户设定密码只有root才能执行,且密码要尽可能的复杂 [0-9][a-Z][a- Z] [!@#$%^&]
交互式设置用户密码
非交互式设置用户密码
示例:批量创建一百个用户并设置相同的密码
为用户修改密码
1.为自己修改密码直接使用passwd 注意密码需要复杂一
点,并达到8位
2.为别人修改密码 (root) passwd username
密码怎么设才算复杂
示例1:随机数
示例2:mkpasswd随机生成字符串,-l设定密码长度 -d 数字 -c 小写字母 -C 大写字母 -s 特殊字符
示例3:lastpass 在线 支持 windows MacOS Iphone 浏览器插件 Android
小结:
1.为新用户添加密码 只有root权限才可以
2.为用户变更密码也只有root才可以
3.普通用户只能修改自己的密码,..无法修改其他人的密码
4.密码的修改方式有两种,一种是交互式 非交互式
用户创建的流程
在用户创建的过程需要参考 /etc/login.defs 和/etc/default/useradd 这两 个文件,默认参考. 如果在创建用户时指定了参数,则会覆盖 (默认 /etc/login.defs 和/etc/default/useradd)
图中命令执行后的内容具体介绍如下
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从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
执行下图命令
图中显示内容具体介绍如下
#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.创建组groupadd [-g GID]组名
创建系统组
创建用户后,如需使用该用户登录系统则需要为用户设定密码,设定密码使用passwd命令.
建议密码复杂一些,长度大于10,出现各种特殊字符,无任何规律(不要出现名字,电话生日)
2.修改组groupmod
-g 修改组的GID
-n 修改组名称
3.删除组groupdel
删除组 如果要删除基本组,需要先删除基本组中的用户才可以删除 该组
1.先创建一个名叫wwq的用户,默认分配了一个以wwq命名的私有组
2.再建立一个名为Wwq的用户并指定一个附加组为WWq,
3.给wwq追加两个附加组,分别为WWQ和WWq,
4.如果删除用户wwq,同时会删除他默认建立的主组wwq
5.删除WWQ这个组时,由于这个组并没有分配给其他用户使用,
此时已经是个空组,可以直接删除.
6.删除WWq这个组还被分配给了另一个用户Wwq做了基本组在删除这个组的时候无法将其直接删除.
7.先删除使用它的这个用户之后才能完成删除WWq这个组.
用户提权
1.su 切换用户
在切换用户时,必须要知道所要切换的用户的密码,因此安全性不高
2.sudo 提权
在提权之前rootyoghurt提前分配好权限,然后关联给用户使用,这种方法复杂但方便,且安全性高.
基本概念
1.交互式 需要不停的交互,例如登录一个已经创建过密码的用户时,提示需要输入密码
2.非交互式 不需要交互,例如在登录用户时不需要输入密码直接登录
3.登录式shell 需要用户名以及密码开启bash窗口
4.非登录式shell 不需要用户名和密码即可开启bash窗口
su -username 属于交互式切换用户登录shell窗口的方式
su username 属于非交互式切换用户登录shell窗口的方式
区别:两者所加载的环境变量不一样
su - username 属于登录式shell 会加载全部的环境变量
su username 属于非登录式shell 会加载部分环境变量[]很有 可能就会出现错误清空]
su切换的缺点:
需要知道切换用户的密码
不安全
PS:通常情况下公司不会让普通用户直接登录root用户,必须先登录普通用户然后在通过普通用户切换至root用户防止外界人员直接连接root用户造成破坏.
sudo提权
流程
1.事先分配好权限
2.直接关联用户
问题1:利用sudo提权时,如果事先分配权限过大,如何通过简单的命令来限制命令的权限,让该用户可以使用一部分,但另一部分不允许使用?
解决方式1.使用sudo中自带的别名操作, 将多个用户定义成一个组
1.使用sudo定义分组,跟系统group没什么关系
User_Alias OPS = oldboy,oldgirl
User_Alias DEV = alex
2.定义可执行的命令组,便于后续调用
3.使用sudo开始分配权限
4.登陆对应的用户使用 sudo -l 验证权限
解决方式2:使用groupadd添加组,然后给组分配sudo的权限,如果有新用户加入,直接将用户添加到该组
1.添加两个真实分组group_dev,group_op
2..添加两个用户, group_dev(user_a user_b) group_op(user_c user_d)
3.为四个用户分别设置密码为"12"
4.在sudo中配置相应的规则
5.检查sudo是否配置有错
若输出如图所示则表示配置没有问题
6.检查user_a,和user_d的sudo权限
sudo执行的流程
如上图当普通用户运行sudo时,先检查/var/db/sudo下是否有时间戳文件,并检查是否过期:
1.如果未过期则检查/etc/sudoers配置文件是否有运行sudo和执行相应命令的权限,若有权限则执行命令并返回执行结果并退出sudo;如果没有权限直接退出sudo
2.如果过期则输入自己的口令,检查/etc/sudoers配置文件是否有运行sudo和执行相关命令的权限,若有权限则执行命令并返回输出结果然后退出sudo,如果无权限直接退出sudo