一、 用户及用户组存在的意义
(1)用户存在的意义
系统资源是有限的,如何合理分配系统资源,在这个问题解决时必须要有资源配合:用户的3A机制(3A机制组成系统中最底层的安全架构)
- Accounting 身份
- Authorization 授权
- Authentication 认证
(2)用户组存在意义
用户组是一个逻辑容器,对用户进行归类和统一授权
二、用户及用户组在系统中的存在方式
电脑对数字敏感( id)<----->人类对字符串敏感 (名称)
用户和用户组必须要记录到文件当中才能存在
用户存在方式就是/etc/passwd文件中的一行字符
用户组存在方式就是/etc/group 文件中的一行字符
三、用户查看及切换
(1)用户查看
-
whoami ##查看当前用户,显示当前用户的用户名称
-
id ##查看用户id信息(用户id ,用户主组id,附加组id)
-
id -u ##查看用户的用户id
-
id -g ##查看用户的主组id
-
id -G ##查看用户所有组的组id(显示主组和附加组id)
-
id -n ##显示名称(搭配其他参数一起使用)
(2)用户切换
su - username ##切换用户环境(如果不加-,只是切换了用户名称,用户本身的环境没有变)
注意:
1、在做用户切换时当使用完毕用户身份后及时退出当前用户(exit),不要在一个shell中反复执行su命令,否则会导致shell运行环境混乱。
2、超级用户切换到其他用户是不需要密码的,而从普通用户切换到另一个普通用户或者超级用户是需要密码的。
四、用户涉及到的系统配置文件
-
/etc/passwd ##用户身份信息文件
#用户名称 : 用户密码 : 用户id : 用户主组id : 用户说明 : 用户家目录 : 用户默认shell所在的目录
-
/etc/group ##组身份信息文件
#组名称 :组密码 :组id :以当前组为附加组的用户组名称
-
/etc/skel/.* ##用户环境配置文件模板
-
/etc/shadow ##用户认证信息文件
#用户名称:用户密码 :最后一次修改密码的时间:密码最小使用期限(为0表示可以 随时更改):密码最大使用期限:密码过期前几天提醒用户的时间:密码到期后还可以使用几天:账户失效时间:预留 -
/home/username ##用户家目录
五、用户和用户组建立及删除
为了方便观察实验,通过命令 watch -n 1 “tail -n 4 /etc/passwd /etc/group ;echo ;ls -l /home” 来监控用户信息
-
useradd username ##普通用户建立(默认用户id和用户组id)
-
useradd -u id username ##建立用户时指定用户id
##uid(用户id)范围:0 - 2*16=0 - 65535
##0 表示超级用户
##1-200 系统预留id
##201-999 系统用户id
##1000-60000 用户级用户id
##/etc/login.defs 记录用户建立的默认规则 -
useradd -g id username ##建立用户时指定用户的主组id(指定的主组id必须在/etc/group中存在)
-
useradd -G id/组名称 username ##建立用户时指定附加组id(指定的附加组id必须在/etc/group中存在,可以添加多个,之间用,隔开)
-
useradd -d 路径 username ##建立用户时指定用户家目录
-
useradd -M username ##建立用户时不建立家目录
-
useradd -c 用户说明 username ##建立用户时指定用户说明
-
useradd -s 路径 username ##建立用户时指定用户shell
-
userdel -r username ##用户删除(-r表示删除用户的系统配置文件,否则家目录下还会残留用户文件)
-
groupadd groupname ##用户组建立
-
groupadd -g id groupname ##建立用户组时指定组id
-
groupdel groupname ##删除组
6.用户和用户组的信息管理
- usermod
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组id(更改原附加组为新的附加组)
-aG #添加用户附加组id(在原附加组基础上添加新的附加组)
-c #更改用户说明
-d #更改用户家目录指向(只是修改用户家目录的获取途径,不会修改用户家目录的名称)
-md #更改家目录指向同时更改家目录名称
-s #更改用户的默认shell
-L #冻结账号
-U #解锁账号 - groupmod -g ##更改用户组id
7.用户认证信息管理
(1)查看用户密码状态
- passwd -S username ##查看用户密码状态
(2)更改密码
- passwd username ##更改用户的密码(普通用户只能采用交互式修改密码)
- echo 密码 | passwd --stdin username(非交互式修改密码,只有root可以执行本命令来修改用户密码)
注意:
超级用户可以直接修改普通用户的密码,而且修改的密码没有字符的限制,普通用户在修改密码时,需要输入旧密码进行验证,而且修改的密码有字符的要求(8位以上无序数字+无序字母组合)
(3)账号的冻结与解锁
- passwd -l username ##冻结账号认证
- passwd -u lee ##解锁账号认证(passwd -l 冻结的是密码,所以可以通过修改账号密码来达到解锁的目的)
- usermod -L username ##冻结账号认证
- usermod -U username ##解锁账号认证(usermod -L 冻结的是账号)
(4)密码删除
- passwd -d username #删除用户密码
(5)修改最后一次修改密码的时间
- passwd -e lee ##修改默认使用时间为0(从1970-1-1算其到今天的时间)
- chage -d 0 lee ##意思是账号必须改密码才能登陆系统(可以修改到任意时间)
(6)密码最短有效期
- passwd -n 天数 username ##修改用户密码最少使用期限(指定用户在指定天数内不能改密码)
- chage -m 1 lee ##修改用户密码最少使用期限(指定用户在指定天数内不能改密码)
(7)密码最长有效期
- passwd -x 天数 username ##修改密码最常使用期限(指定天数内指定用户必须更新密码否则会被冻结)
- chage -M 天数 username ##修改密码最常使用期限(指定天数内指定用户必须更新密码否则会被冻结)
(8)密码过期警告
- passwd -w 天数 username ##修改账号过期前警告时间
- chage -W 天数 username ##修改账号过期前警告时间
(9)认证非活跃天数
- passwd -i 天数 username ##修改账号密码过期最大时间超过后还能用多久
- chage -I 天数 username ##修改账号密码过期最大时间超过后还能用多久
(10)账号认证到期时间
- chage -E “2020-05-11” ##到2020-5-11这天账号会被冻结
(11)未启用功能
8.用户权力下放给普通用户
在系统中普通用户无法执行的系统管理命令,如果需要普通用户执行系统管理动作那么需要root用户来进行授权
(1)普通用户授权方式 “sudo”
(2)作用:
可以使普通用户使用指定的用户身份运行命令
(3)授权方法:
visudo ##此命令作用是编辑/etc/sudoers并提供语法检测(由于代码的规范性,在文件的100行左右进行编辑)
username hostname=(newusername) [NOPASSWD:] /command, /command1
#lee用户 在linux.wesots.com主机=(用超级用户身份) 执行useradd命令
lee linux.westos.com=(root) /usr/sbin/useradd
#westos用户 在linux.wesots.com 使用超户 免密 执行useradd 和 userdel
westos linux.wesots.com = (root) NOPASSWD: /usr/sbin/useradd, /usr/
sbin/userdel
测试:
su - lee
sudo useradd westostest ##在lee第一次使用sudo命令时需要输入lee密码
exit #退出lee
su - westos
sudo userdel -r westostest ##westos可以免密执行userdel 命令