目录
5、用户间切换 -- su(substitute user)命令
Linux中的用户和组的分类
1、Liux下的用户可以分为三类:
- 超级用户 -- 用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等成其他必要情形下才用超级用户登录,以避免系统出现安全问题。
- 系统用户(伪用户)-- 是Linux系统正常工作所必需的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:bin、daemon,adm,lp等用户,系统用户不能用来登录,
- 普通用户 -- 是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类,
2、Liux中的组有以下两类:
- 基本组(私有组):建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是基本组,
- 附加组(公有组):可以容纳多个用户,组中的用户都具有组所用有的权利。
3、Linux中用户和用户组的配置文件
在Linux中,用户账号、密码、用户组信息和用户组密码均是存放在不同的配置文件中的。
文件功能 | 文件名称 |
用户账号文件 | /etc/passwd |
用户密码文件 | /etc/shadow |
用户组账号文件 | /etc/group |
用户组密码文件 | /etc/gshadow |
(1)用户账号文件 -- /etc/passwd
passwd是一个文本文件,用于定义系统的用户账号,由于所有用户都对passwd有读权限,所以该文件中只定义用户账号,而不保存口令。
root:x:0:0:root:/root:/bin/bash
【这是root的那一条,文件里没颜色这是俺标的】
意义解析:
root:root用户
x:密码(x表示受shadow保护)
0:UID(userid)标识用户身份的
0:GID(groupid)
root:个人资料
/root:root用户的家目录
/bin/bash:shell,表示root用户可登录
【文档版】
(2)用户密码文件 -- /etc/shadow
root:$6$nzFjFM1Lb0nIEjJw$MRuFRYutuQSssXIJ9L0g6HNdIMAHHY2/zCCN6fusyOS1fNYm5/84Jnp2MvY4Vfk27.XlaHeECLKNvRVBN/ZhB/::0:99999:7:::
这么分的,那个绿的是光标搞的
意义解析
root: -- 登录用户
$6$nzFjFM1Lb0nIEjJw$MRuFRYutuQSssXIJ9L0g6HNdIMAHHY2/zCCN6fusyOS1fNYm5/84Jnp2MvY4Vfk27.XlaHeECLKNvRVBN/ZhB/ -- 加密后的密码
: -- 那两个冒号之间的内容是最后一次修改的时间,以距离1970年1月1号的天数表示
:0 -- 密码在多少天内不能被修改
:99999 -- 密码在多少天以后要修改
:7 -- 密码到期的告警时间默认7
: -- 不活动时间,密码过期多少天以后禁用用户
: -- 密码失效的时间,以距离1970年1月1号的天数表示空着就表示永久可用【1970年1月1日是什么时间】
保留
【看完了来看看我自己的用户】qiu::18889:0:99999:7:::
【文档版】
(3)组用户账号文件 -- /etc/group
root:x:0:
组名:密码受保护:gid组id:列出的成员以改组为附加组用,隔开用户吧
用户管理
1、添加新用户
命令格式:useradd [选项] <username>
常用选项:
-c, --comment | 注释信息——设定用户的相关信息 |
-d, --home-dir | 目录-设定用户的家目录(默认为/home/用户名) |
-e, --expiredate | YYYY-MM-DD -- 设置用户的失效时间,过时报废 |
-f, --inactive | 天数 -- 指定密码到期后多少天账号被禁用,若指定0,到期后立即禁用;指定-1表示账号过期后不被禁用 |
-g, --gid | 组名或GID - 为用户指定所属的基本组,该组在指定时必须已存在 |
-G, --groups | 组名或GID列表-为用户指定所属附加组,附加组可以有多个,用,隔开 |
-M, --no-create-home | 不创建用户的家目录 |
-N, --no-user-group | 不创建与用户同名的基本组 |
-o, --non-unique | 允许使用重复的 UID 创建用户 |
-p, --password PASSWORD | 指定用户的登录密码,这里的是加密后的,具体看下边 |
-s, --shell SHELL | shell名 - 指定用户登录后使用的shell,默认是bash |
-u, --uid UID | 设置账号的uid,默认是已有的最大uid+1,如果有-o可以重复使用一个uid |
【-p指定新用户密码后,看/etc/shadow加密后的密码是我们指定的,真正的密码不晓得】
2、修改用户信息-- usermod命令
命令格式:usermod [选项] username
常用选项:
-c,-d,-m,-g,-G,-s,-u与useradd命令里选项一样
-l 新用户名 | 更改账户名称,必须在用户未登录的情况下才能使用 |
-L | 锁定用户账户,让他不能登录使用 |
-U | 解锁用户账户 |
3、为用户账户设置密码 -- passwd命令
Linux的账户必须设置密码后,才能登录系统
命令格式:passwd [账户名]
常用选项:
选项 | 功能 |
-d | 清空指定用户的口令,这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。 |
-e | 使用户的账号密码立即过期,强迫用户下次登录时必须修改口令 |
-i | 口令过期后多少天停用账户 |
-l | 锁定(停用)用户账户。 |
-n | 指定口令的最短存活期。 |
-x | 指定密码的最长使用期限 |
-u | 解锁用户账户。 |
[root@localhost ~]# echo 密码 | passwd --stdin 用户名 【这个也可以改密码】
4、删除用户账号 -- userdel命令
命令格式:userdel [-r] 账户名
-r -- 在删除该账户的同时,一并删除该账户对应的主目录
5、用户间切换 -- su(substitute user)命令
命令格式:su [用户名]
从root用户切换到任何用户不需要密码验证,而从普通用户到root或其他普通用户均需要输入目标用户的密码且验证成功后才可切换。
su和su-命令区别就是加载的配置文件不一样:
su切换方式加载的文件:~/.bashrc, /etc/bashrc
su-切换方式加截的文件:/etc/bashrc, /etc/profile,~/.bashrc, ~/.bash_profile
6、控制用户对系统命令的使用权限
使用sudo命令可以提高普通用户的操作权限,不过这个权限需要root用户进行配置/etc/sudoers文件才可使用。
配置/etc/sudoers文件的两种方式
[root@localhost ~]#vim /etc/sudoers或者[root@localhost ~]# visudo
root ALL=(ALL) ALL
参数代表含义:
①、用户账号:系统哪个账号可以使用sudo这个命令
②、登录者的来源主机名
③、可切换的身份:这个账号可以切换成什么身份来执行后续的命令,默认root可以切换成任何人
④、可执行的命令,这个命令最好使用绝对路径编写,默认root可以切换任何身份且进行任何命令
【ALL是关键字,代表任何身份、主机和命令】
qiu ALL=(ALL) ALL
sudo cat / etc/shadow之后会再让你验证一次密码
用户组管理
1、创建用户组
命令格式:groupadd [-r] 用户组名称
常用选项:
-g GID -- 指定新用户组的组标识号(GID),默认值是已有的最大的GID+1
-r -- 建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GID
2、修改用户组属性
命令格式:groupmod 选项 用户组
常用选项:
-g GID -- 指定新的组标识号
-n 新用户组 -- 将用户组的名字改为新名字修改用户组的名称和GID值
3、添加/删除组成员
命令格式:gpasswd [选项] [用户] [组]
只有root用户和组管理员才能用这个命令
选项:
-r | 删除组密码 |
-a | 把用户加入组 |
-d | 把用户从组中删除 |
-M | 可同时添加多个用户 |
-A | 给组指派管理员 |
4、删除组账户
命令格式:groupdel 用户组名
被删除的组如果是基本组,则必须先删除引用改基本组的用户再删除
查询用户和组信息
[root@localhost ~]# id qiu
uid=1000(qiu) gid=1000(qiu) 组=1000(qiu),10(wheel)
查看用户登录系统的情况
1、users,查看当前登录系统的用户
[root@localhost ~]# users
qiu root
【vmare那登的算,然后如果你是su切换过去的算的是你之前的那个】
2、last:
列出目前与过去登入系统的用户相关信息,该命令默认会去读取/var/log/wtmp文件,并把该文件记录的登入系统的用户名单全部显示出来
[root@localhost ~]# last -2 显示最近的两条登录信息
root pts/0 192.168.174.1 Sat Oct 15 13:04 still logged in
qiu tty2 tty2 Sat Oct 15 13:04 still logged in
【这个tty2表示计算机串行端口连接的终端设备,我是拿虚拟机直接登的;pts是我拿xshell映射的伪终端】
[root@localhost ~]# last -f /var/log/wtmp -n 3 显示那个路径文件中最近的两条登录信息
root pts/0 192.168.174.1 Sat Oct 15 13:04 still logged in
qiu tty2 tty2 Sat Oct 15 13:04 still logged in
reboot system boot 4.18.0-193.el8.x Sat Oct 15 13:04 still running
3、laslog
如果想要知道每个账号的最近登录时间,可以用lastlog查看,该命令会读取/var/log/lastlog文件
4、w:显示登录到系统的用户信息
[root@localhost ~]# w
20:24:18 up 7:20, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
qiu tty2 tty2 13:04 7:20m 28.97s 0.11s /usr/libexec/tracker-miner-fs
root pts/0 192.168.174.1 13:04 1.00s 0.14s 0.02s w
5、who:
显示目前登录到系统的用户,who通常通过/var/run/utmp文件来获取信息。
[root@localhost ~]# who 【默认的是who -s 只显示名称,终端,时间字段信息和主机名,这是who默认的输出】
qiu tty2 2022-10-15 13:04 (tty2)
root pts/0 2022-10-15 13:04 (192.168.174.1)
【老师说有兴趣自己研究去】
[root@localhost ~]# whoami【这俩内容不一样注意嗷】
root
[root@localhost ~]# who am i【这个感觉详细点】
root pts/0 2022-10-15 13:04 (192.168.174.1)