Linux系统中的用户管理
一、用户及用户组存在的意义
用户存在的最大意义就是在于能够使系统资源得到合理的分配,因为系统资源是有限的,如果没有用户这个概念,在系统分配资源时会产生混乱导致系统崩溃(所有人都可以随便使用系统资源)。用户组是一个逻辑容器,方便对用户进行归类和统一授权,分配系统资源时可以减少逐个用户授权的繁琐。合理分配系统资源时需要下面几个资源配合。
身份认证 | account |
---|---|
授权 | author |
认证 | auth |
上面即为3A机制,3A机制组成系统中最底层的安全架构。
二、用户及用户组在系统中的存在方式
用户就是 /etc/passwd文件中的一行字符
westos:x:1000:1000::/home/westos:/bin/bash
就是记录在passwd文件中的westos用户。
用户组存在的方式就是/etc/group 文件中的一行字符,比如”westos 😡 :1000:”是记录在/etc/group中的一个组。
三、用户切换
1.用户查看
[westos@westos_student73 Desktop]$ whoami #查看当前用户
[westos@westos_student73 Desktop]$ id #查看当前用户id信息
[westos@westos_student73 Desktop]$ id user #查看用户user信息
[westos@westos_student73 Desktop]$ id -u user #查看用户user的用户id,没有user参数时默认当前用户
[westos@westos_student73 Desktop]$ id -g user #查看用户组id
[westos@westos_student73 Desktop]$ id -G user #查看用户所有组的id
[westos@westos_student73 Desktop]$ id -ng userid #显示用户组的信息,-n参数不能单独使用,要与"-g""-G""-u"一块用
用户id范围 |
0-65535( 2 16 2^{16} 2 1 6 ) |
---|---|
0 | Linux超级用户id |
1-999 | Linux系统自用id |
1000-65535 | 用户级ID |
2.用户切换
图形界面切换
[westos@westos_student73 Desktop]$ gnome-session-quit #图形界面登出当前用户,需要点击确认
[westos@westos_student73 Desktop]$ gnome-session-quit --force #强制登出当前用户,无需确认
非图形切换
su - username #切换到username环境,“-”与usename之间必须有空格
- #切换用户环境
username #如果 root ---> commonuser 超级用户切换到任何系统中存在的普通用户不需要密码
#root ---> commonuser 需要密码
#commonuser ---> commonuser 需要密码
注意:在做用户切换时当使用完毕用户身份及时退出
不要在一个shell中反复执行su命令
在一个shell中反复执行su命令会导致环境错乱
四、用户设计到的系统配置文件
1) /etc/passwd 用户身份信息文件
westos:x:1000:1000::/home/westos:/bin/bash
#用户名称:用户密码:用户id:用户主祖id:用户说明:用户家目录:用户默认shell
2) /etc/group 组身份信息文件
westos:x:1000: #组名称:组密码:组id:组的附加成员
3) /etc/skel/.* 用户环境配置文件模板
4) /etc/shadow 用户认证信息
westos:$6$xaN1UuB00Sq44/rX$Hue37.8W2jRkBl/.GFBl5UbaBse2UBLI4NcAFwELGDJdnmLV1fkqV9NIC8XEI2.dbYDQ7L7AqknQvzdRTtIU4/:18802:0:99999:7:::
用户名称:用户密码的加密字符:用户密码最后一次被修改的时间:密码最短有效期:密码最长有效期:密码过期前警告期:账号非活跃期:账号到期时间:用户自定义(未使用)
用户认证信息文件普通用户无法查看,要用超级用户
5) /home/username #用户家目录
五、用户和用户组建立及删除
[westos@westos_student73 Desktop]$ watch -n 1 "tail -n 4 /etc/passwd /etc/group;echo ========;ls -l /home/"
#监控用户建立的命令
1.用户建立 useradd
[root@westos_student73 ~]# useradd username #用户建立,
[root@westos_student73 ~]# #主组(初始组)直接建立,初始组名字和id默认和用户一致,家目录直接建立,默认在/home/username
注意:建立用户需要在超级用户下,普通用户无权限
[westos@westos_student73 Desktop]$ -u id username #建立指定用户id的用户,uid 2**16=0-65535
uid范围 | 说明 |
---|---|
0 | 表示超级用户 |
1-200 | 系统预留Id |
201-900 | 系统用户 |
1000-60000 | 用户级用户 |
以上ID设定规则都被记录在/etc/login.defs
-g id username #主组id,主组必须先存在或先建立,一个组不一定只为一个用户的主组,
#当一个组只为一个用户的主组时,主组为用户拥有,用户删除,其所属主组也随之删除
-G id username #附加组id,用户删除时,附加组不被删除
-d dir username #指定用户家目录,会在/home下建立一个目录
-M username #建立用户时不建立家目录
-c word username #指定用户说明
-s shel username #指定用shell
cat /etc/shells 查看shell;/sbin/nologin 为不可交互的shell
2.用户删除 userdel
[root@westos_student73 ~]#userdel -r username ##用户删除 -r 删除用户的系统配置文件,包括用户的家目录
[root@westos_student73 ~]#userdel username #删除用户,但用户的家目录仍然存在
3.用户组建立与删除
groupadd groupname #组的建立
-g id groupname #指定组的id
groupdel groupname #组删除,只能指定组名,且不能删除作为用户的主组
用户和用户组删除时可以指定用户及用户组名,也可以指定用户id或组id
六、用户及用户组的信息管理
usemod 修改用户信息
usermod
-l #更改用户名称
-u #更改用户id
-g #更改主组id
-G #更改用户附加组身份,会覆盖原来附加组信息
-aG #添加用户附加组信息,不会覆盖原来附加组信息
usermod
-c #更改用户说明
-d #更改家目录指向,但原用户家目录不会改变
-md #更改家目录指向,同时更改家目录名称-c #更改用户说明
-d #更改家目录指向,但原用户家目录不会改变
-md #更改家目录指向,同时更改家目录名称
-s #更改默认shell
-L #冻结账户,与passwd相比冻结程度不一样
-U #解锁
groupmod -g #更改用户组id,当用户的主组id改变时,用户信息中的初始组id也会随之修改
七、用户认证信息管理
/etc/shadow 文件内容说明
westos用户认证信息及对应说明如下:
westos:$6$xaN1UuB00Sq44/rX$Hue37.8W2jRkBl/.GFBl5UbaBse2UBLI4NcAFwELGDJdnmLV1fkqV9NIC8XEI2.dbYDQ7L7AqknQvzdRTtIU4/:18802:0:99999:7:::
用户名称:用户密码的加密字符:用户密码最后一次被修改的时间:密码最短有效期:密码最长有效期:密码过期前警告期:
账号非活跃期:账号到期时间:用户自定义(未使用)
1)用户名称
passwd -S lee #查看用户密码状态
密码位置有”!“表示账号被冻结,”!!“表示时passwd命令冻结的,”!“是usermod命令冻结,冻结程度不同,另外,仅有”!!”说明账户被冻结,且未给账户设定登陆密码
2)用户加密字符
更改密码
[root@westos_student73 ~]# passwd lee #只有root用户可以修改其他用户密码
#只有root用户可以执行 "echo 123 | passwd --stdin lee"
普通用户只能修改自己的密码执行:passwd
下为普通用户修改密码流程
passwd 普通用户修改密码,只能修改自己的密码
Changing password for user lee
Current password: 输入原始密码
New password: 输入新密码(8位以上无序数字+无序字母组合)
Retype new password: 重新输入
passwd: all authentication tokens updated successfully
3)冻结认证
passwd -l lee #冻结账号认证
passwd -u lee ##解锁账号认证
和”usermod -L lee”都能执行冻结,但是冻结程度不同。
4)密码删除
passwd -d lee #删除lee用户的密码,只能root用户执行,密码位置为空
5)密码使用天数
从1970-1-1算到今天的时间
passwd -e lee ##修改默认使用时间为0
chage -d 0 lee ##两个命令效果一样,切记命令是chage,账户必须修改密码才能登陆系统
6)密码最短有效期
#密码最短有效期
paswd -n l lee #lee在一天内不能改密码
chage -m 1 lee
7)密码最长有效期
passwd -x 40 lee #40天内lee用户必须更新密码否则会被冻结
chage -M 30 lee
8)认证非活跃天数
passwd -i 2 lee #账号认证最大时间超过后还能用多久
chage -I 1 lee
9)认证到期时间
chage -E "2020-05-11" #到2020-5-11这天账号会被冻结
10)未启用功能
八、权力下放
在系统中普通用户是无法执行系统管理命令的
如果需要普通用户执行系统管理动作,那么需要root用户来进行授权
普通用户授权方式 “sudo”
作用:
可以使用普通用户使用指定的用户身份运行命令,切记运行命令时,先加上sudo,相当于连接文件etc/sudoers
授权方法
授权方法:
visudo #此命令作用时编辑/etc/sudoers并提供语法检测
#直接vim进入时,不提供语法检测
#visuo异常退出时,比如"ctr + z"挂入后台时,按fg重新进入
文件修改位置
在文件100行左右(:100#转到文件100行) 代码规范性
username hostname=(newusername) [NOPASSWD:] /command, /command
(切记此处l两个命令之间有空格)
相关辅助命令
hostname 查看当前主机的名字which useradd 查找useradd命令的位置,可以查找相关系统管理命令的位置
权力下放代码解释
westos用户 在linux.westos.com主机上 使用超级用户 免密 执行useradd和userdel 命令
westos linux.westos.com = (root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/useradel
测试:
su - lee
sudo useradd linux #在lee中第一次使用sudo命令需要输入lee密码
exit #退出lee
su - westos
sudo userdel -r linux #westos可以免密执行userdel命令