用户管理
用户分为root用户(超级管理员)和普通用户
用户管理
创建用户,查询用户,修改用户,删除用户。把用户放在组里面便于管理。
用户/组基本概念
用户的作用概念:控制所有文件,程序的关键信息。
-
查看当前登录的用户信息
-
查看文件的owner(创造者)
-
查看运行进程的usename
用户/组信息存储的文件
-
用户基本信息文件/etc/passwd
/etc/passwd冒号分割为7列字段;(学习7列字段含义)
root :x:0 :0 :root :/root :/bin/bash(shell)
用户名 :x:uid:gid:注释 : 宿主目录 :命令环境
root :用户名(字母组成,不能重名),登录系统的名字;
X :密码占位符,具体内容不在这里,在/etc/shadow文件里;
UID :用户的身份证号;、
系统约定:RHEL7 uid:0特权用户 uid:1~499系统用户
初始状态下系统默认的用户有999个 uid:1000+普通用户
GID : group组号(具有相同特征用户的集合)——基本组
注释 :描述
宿主目录:登录系统时所在的目录;
命令环境:登录shell的命令解释器;
/bin/bash:用户可以使用shell登录用户
/sbin/nologin用户不能登录系统,可以运行某程序。把不安全用户设为nologin。
SHELL 壳()——控制计算机
功能 命令解释器
定义命令
接受命令
执行命令
版本:ashell,bshell,cshell,tshell;
bash;
-
用户密码信息文件/etc/shadow
/etc/shadow冒号分割为8列字段;
密码(对称密码和非对称密码)
加密的意义:
- 私密性
- 完整性
- 不可否认性
加密算法:$id$salt$encrypted $1:MD5 $5:SHA-256 $6:SHA-512
登录名:密码加密值:最后一次修改时间:最小时间间隔(天数):最大时间间隔(天数):不活动时间:失效时间:
- 登录名;与/etc/passwd文件中的登录名相一致的用户账号
- 密码加密值;*号代表账号锁定;
- 最后一次修改时间;
- 最小时间间隔(天数),密码有效期(为多少天数);0代表当天改密码;
- 最大时间间隔(天数),密码有效期(为多少天数);99999代表无效期;
- 警告时间(时间间隔期一般时提醒);
- 不活动时间;表示用户没有登录系统但是账号还能保持有效期的最大天数(超过天数禁用你);可空;
- 失效时间;表示到了多少天账号就不能用了;可空;
- 保留;
-
组信息文件/etc/group
/etc/group冒号分隔为4列;
组名:组密码:组ID:组成员
组名:通常字母组成
组密码:
组ID:纯数字
组成员:默认为空
用户/组管理
用户管理
创建用户(不指定参数):
useradd+创建用户名:创建用户命令;
id+用户名:查询用户命令;
passwd+用户名:修改用户密码;
[root@localhost ~]# useradd 0098 #创建用户0098 [root@localhost ~]# id 0098 uid=1104(0098) gid=1104(0098) 组=1104(0098) #查询用户0098是否存在 [root@localhost ~]# passwd 0098 #修改0098用户的密码 更改用户 0098 的密码 。 新的 密码:000000
怎么样在root目录下进入普通用户目录: [root@localhost ~]# ls /home #查询home下的普通用户 001 0098 [root@localhost ~]# ls /home/001 #查询普通用户001的目录 公共 模板 视频 图片 文档 下载 音乐 桌面
创建用户(指定参数)
useradd 创建用户名 -u 指定UID号 :指定参数-u(UID);
useradd 创建用户名 -d 指定目的路径 :指定用户的家目录;
-u指定用户的uid;
[root@localhost ~]# tail -1 /etc/passwd 0098:x:1104:1104::/home/0098:/bin/bash [root@localhost ~]# useradd 0099 -u 1111 #-u(uid),创建用户0099,指定uid为1111 [root@localhost ~]# tail -2 /etc/passwd 0098:x:1104:1104::/home/0098:/bin/bash 0099:x:1111:1111::/home/0099:/bin/bash [root@localhost ~]# useradd 9999 -d /9999 #-d(directory),创建用户9999,指定用户的家目录 useradd --heip #命令 --help #就可以查看所有命令参数
删除用户:
userdel -r 用户名:删除用户;
-r一并删除用户目录
[root@localhost 001]# useradd 0098 [root@localhost 001]# userdel -r 0098 [root@localhost 001]# id 0098 id: 0098: no such user
修改密码:
passwd 用户名;
[root@localhost 001]# whoami #在哪个宿主目录下 root #在root用户密码下 [root@localhost 001]# passwd 001 更改用户 001 的密码 。 新的 密码:
用户组管理:
创建组
groupadd+创建组名:创建组命令;
(用户和组不能用纯数字,uid和gid是纯数字。)
基本组和附加组
组成员管理:
修改用户属性:
usermod
-u指定用户的uid;
-g指定用户的基本组;
-G指定用户的附加组;
usermod 用户名 -g 基本组名
/etc/passwd可以查看的是用户的基本组;
/etc/group可以查看用户的附加组。
id命令可以看用户的基本组和附加组。
[root@localhost 001]# usermod -s /sbin/nologin 001
[root@localhost 001]# usermod -s /bin/bash 001
SHELL命令语法结构
usermod -s /bin/bash 001
命令 选项 什么shell 用户参数
#/bin/bash:用户可以使用shell登录用户
#/sbin/nologin用户不能登录系统,可以运行某程序。把不安全用户设为nologin。
分类: 组的类型 一个用户可属于多个组。 基本组:随用户而创建的组,组名同用户名。/etc/group; usermod 用户名 -g 组名(把用户的基本组改为组名;)
附加组:用户加入的其它组; usermod 用户名 -G 组名(把用户放进组名,组名就成为了用户的附加组) (当成员1被创建,就会出现一个组名为1的组被创建,这个组名为1的小组就叫基本组。 当成员2被创建,就会出现一个组名为2的组被创建,这个组名为1的小组就叫基本组。 然后成员1加入组2,这个组2就叫做成员1的附加组。) (如果组hr被创建,它既不是基本组,也不是附加组。因为基本组和附件组是相对于用户来说的。) (每一个成员的基本组只能有一个,而附加组会有多个。) 一个用户只能有一个基本组,一个组可以为多个用户的基本组。 成员1和组1是什么关系? 组1对于成员1是基本组;(-g) 组2对于成员1是附加组;(-G) 组1对于成员2:一点关系没有;
groupmod -g 新基本组ID 组名 #把组的基本组号改为新基本组号(组ID) eg: [root@localhost ~]# grep 0098 /etc/group #创建组0098 0098:x:10001: [root@localhost ~]# groupmod -g 9999999 0098 #把组名为0098的基本组(即组ID)改为9999999 [root@localhost ~]# grep 0098 /etc/group #查询0098组信息 0098:x:9999999:
[root@localhost 001]# grep user01 /etc/group
user01:x:1104:
[root@localhost 001]# grep user01 /etc/passwd
user01:x:1104:1104::/home/user01:/bin/bash
[root@localhost 001]# useradd user02
[root@localhost 001]# grep user02 /etc/group
user02:x:1105:
[root@localhost 001]# grep user02 /etc/passwd
user02:x:1105:1105::/home/user02:/bin/bash
[root@localhost 001]# groupadd 0098
[root@localhost 001]# grep 0098 /etc/group
0098:x:1106:
[root@localhost 001]# grep user01 /etc/passwd
user01:x:1104:1104::/home/user01:/bin/bash
[root@localhost 001]# usermod user01 -g user02
#把user01的基本组改为user02的组号
#用户user01的基本组由1104变为租号为1105,1105现在是user01,user02的基本组
[root@localhost 001]# grep user01 /etc/passwd user01:x:1104:1105::/home/user01:/bin/bash
总结:把不同的权限赋予不同的组,把用户放进组里。用户可以直接使用组权限。比如会员:充值进vip组,拥有会员组权限;到期进非会员组,无会员组权限。用户可以同时进不同的组,拥有不同组的全部权限。
查询组
grep ‘组名’ /etc/group:查询组命令;
[root@localhost 001]# groupadd hr #创建组hr [root@localhost 001]# tail -1 /etc/group #查找/etc/group里的最后一行 hr:x:1104:
[root@localhost 001]# grep hr /etc/group #在/etc/group查找组名hr chrony:x:989: hr:x:1104: [root@localhost 001]# grep hr /etc/passwd #在/etc/passwd里查询组hr(没有)#/etc/passwd里是用户user文件 [root@localhost 001]# grep hr /etc/shadow #在/etc/shadow里查询组hr(没有)#/etc/shadow里是用户user文件 # /etc/group里是组group文件
移除组
gpasswd -d 用户名user 组名group:把用户user从组group里面删除。
删除组
groupdel 组名:删除组
[root@localhost 001]# groupdel hr #删除组hr [root@localhost 001]# grep hr /etc/group #在/etc/group中查询组hr是否存在;(不存在) chrony:x:989:
提权(了解)
永久提权:- su
- 普通用户没有特权;
- 尽量少用root;
- 需要执行特殊指令时,使用-su(su;建议用-su)切换到root用户;
[root@localhost ~]# su - 001 #切换到001用户 上一次登录:三 5月 18 21:06:05 CST 2022pts/0 上 [001@localhost ~]$ su - root #切换为root用户 密码: 上一次登录:三 5月 18 21:07:08 CST 2022pts/0 上 [root@localhost ~]# whoami #查看当前宿主目录 root [root@localhost ~]# exit #退出root用户 登出 [001@localhost root]$ exit #退出普通用户进入root用户 exit [root@localhost ~]
临时提权:sudo
用户登录的主机=(可以变换的身份)可以执行的·命令;
- 使用普通登录服务器时;
- 完成部分特权命令;
- 怎么分配权限呢?
以root用户授权普通用户sudo vim /etc/sudoers %wheel ALL=(ALL) ALL 第89行:允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令。 useradd 创建新用户名 -G whell:给用户赋予权限; sudo userdel 用户名:给用户删除用户的权限; sudo useradd 用户名:给用户创建用户的权限;