一、用户基本概述
1、什么是用户?
用户:能够正常登录Linux或Windows系统的都可以算是用户(可以理解为你租了房子,能够正常入驻)。
2、Linux系统与Windows系统的用户有什么区别?
本质上没有区别,只不过Linux系统支持多个用户同一时刻同时登录,且登陆后相互之间操作并不影响,而Windows系统同一时刻只支持一个用户登录。
root: 超级管理员用户。
普通用户: 多个普通用户在逻辑上分为一个组,一个用户也能隶属多个组。
3 、我们为什么要创建用户?
1)、系统上的每一个进程(运行的程序),都需要一个特定的用户运行。
2)、通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障。
4、如何查看当前登录的用户信息?
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root)
context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# id jack
uid=1000(jack) gid=1000(jack) groups=1000(jack)
5、创建用户会在系统的哪个配置中保存信息
1)、当创建一个用户时,系统会操作/etc/passwd /etc/shadow 这两个文件,变更文件中的内容
(1)、/etc/passwd 配置文件解释
(2)/etc/shadow 配置文件解释
6、系统对不同用户的PID取值范围的规定
用户UID | 系统中约定的含义 |
---|---|
0 | 超级管理员,最高权限,有着极强的破坏能力 |
1~200 | 系统用户,用来运行系统自带的进程,默认已创建 |
201~999 | 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统 |
1000+ | 普通用户,正常可以登陆系统的用户,权限比较小,能执行的任务有限 |
PS:在CentOS7系统之前, UID1-499用于系统用户, 而UID 500+则用于普通用户
二、用户相关命令
1、使用useradd命令新增用户
选项:
-u 指定要创建用户的UID,不允许冲突
-g 指定要创建用户默认组(基本组 主要的组)
-G 指定要创建用户附加组,逗号隔开可添加多个附加组
-d 指定要创建用户家目录
-s 指定要创建用户的bash shell /bin/bash /sbin/nologin
-c 指定要创建用户注释信息
-M 给创建的用户不创建家目录
-r 创建系统账户,默认无家目录 [201-999]
1)创建bgx用户,UID5001,基本组students,附加组sa 注释信 息:2019 new student,登陆shell:/bin/bash 。
(1)、创建基本组students、附加组sa和用户bgx
[root@localhost ~]# groupadd students
[root@localhost ~]# groupadd sa
[root@localhost ~]# useradd bgx -u 5001 -g students -G sa -c "2020 new" -s /bin/bash
(2)、检查用户
[root@localhost ~]# id bgx
[root@localhost ~]# uid=5001(bgx) gid=1003(students) groups=1003(students),1002(sa)
[root@localhost ~]# grep "bgx" /etc/passwd
bgx:x:5001:1003:2020 new:/home/bgx:/bin/bash
2)、创建mysql系统用户,-M不建立用户家目录 -s指定nologin使其用户 无法登陆系统 。
(1)、创建用户
[root@localhost ~]# useradd mysql -r -M -s /sbin/nologin
(2)、检查用户
[root@localhost ~]# id mysql
uid=997(mysql) gid=995(mysql) groups=995(mysql)
[root@localhost ~]# grep "mysql" /etc/passwd
mysql:x:997:995::/home/mysql:/sbin/nologin
(3)、模拟登陆,登陆失败
[root@localhost ~]# su - mysql
su: 警告:无法更改到 /home/mysql 目录: 没有那个文件或目录
This account is currently not available.
3)、创建一个xlw用户,uid为6666,附加组为sa,用户的家目录 为/tmp/xlw 登陆的shell为/sbin/nologin 。
(1)、创建用户xlw
[root@localhost ~]# useradd xlw -u 6666 -G sa -d /tmp/xlw -s /sbin/nologin
PS: UID、GID 在整个系统是唯一的。
2、使用usermod修改用户
选项
-u 指定要修改用户的UID
-g 指定要修改用户基本组
-G 指定要修改用户附加组,使用逗号隔开多个附加组,覆盖原有的附加组,-aG追加
-d 指定要修改用户家目录,-md 旧家搬新家
-s 指定要修改用户的bash shell
-c 指定要修改用户注释信息
-l 指定要修改用户的登陆名
-L 指定要锁定的用户
-U 指定要解锁的用
1)、检查之前创建的xlw用户
[root@localhost ~]# id xlw
uid=6666(xlw) gid=6666(xlw) 组=6666(xlw),1002(sa)
2)、修改xlw用户UID为 9999、GID为devops),附加组为dba、sa和dsb
(1)、创建组devops、dba,和dsb。
[root@localhost ~]# groupadd devops
[root@localhost ~]# groupadd dba
[root@localhost ~]# groupadd dsb
(2)修改信息
[root@localhost ~]# usermod xlw -u 9999 -g devops -aG dba,sa,dsb
3)、修改xlw用户的注释信息为"oldboyedu.com", 用户家目录为/home/oldboy , 登录为shell/bin/bash, 登录名为oldboy。
[root@localhost ~]# usermod xlw -c "oldboyedu.com" -md /home/oldboy -s /bin/bash -l oldboy
4)、检查用户
[root@localhost ~]# grep "oldboy" /etc/passwd
oldboy:x:9999:6667:oldboyedu.com:/home/oldboy:/bin/bash>
3、使用userdel删除用户
选项
-r 删除用户的同时删除它的家目录
1)、删除user1用户,但不删除用户家目录和 mail spool
[root@localhost ~]# userdel user1
2)、-r参数可以连同用户家目录一起删除(慎用)
[root@localhost ~]# userdel -r user1
4、当然还有很多命令可以查看用户的信息,以下简单列举一些,但都是我们常用,所以了解即可
- 使用finger命名查询用户信息以及登录信息,示例: finger UserName
[root@localhost ~]# finger oldboy
Login: oldboy Name: mjp
Directory: /home/oldboy Shell: /bin/bash
Office: 123456, 123456 Home Phone: 123456
Never logged in.
No mail.
No Plan.
- 使用chfn命令修改用户信息,示例: chfn oldboy
[root@localhost ~]# chfn oldboy
Changing finger information for oldboy.
名称 [oldboyedu.com]: mjp
办公 []: 123456
办公电话 []: 123456
住宅电话 []: 123456
- 、使用chsh命令修改用户登录Bash Shell,示例: chsh oldboy
>[root@localhost ~]# chsh oldboy
Changing shell for oldboy.
New shell [/bin/bash]:
4)、使用who、whoami、w检查用户登陆情况
(1)、显示目前登录系统的用户信息
[root@localhost ~]# who
root tty1 2019-08-03 09:13
root pts/0 2019-08-05 08:13 (10.0.0.1)
root pts/1 2019-08-05 15:05 (10.0.0.1)
(2)、当前登录系统的用户
[root@localhost ~]# whoami
root
(3)、显示已经登陆系统的用户列表,并显示用户正在执行的指令
[root@localhost ~]# w
16:31:10 up 17:24, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 08:13 3:45m 0.70s 0.70s -bash
root pts/1 10.0.0.1 15:05 6.00s 0.73s 0.11s w
ps:(a)、16:31:10代表当前时间;(b)、up 17:24代表当前系统运行了多久;
(c)、2 users代表有多少用户登录系统;(d)、load average: 0.00, 0.01, 0.05
代表当前系统的负载情况,平均1分钟,5分钟,15分钟;(e)、JCPU指的是与该tty终
端连接的所由进程占用的时间,不包括过去的后台作业时间;(f)、指的是当前进程
(即w项中显示的)所占用的时间。