用户和用户组
用户:简称UID(Users ID),linux下的用户可以分为三类,分别是普通用户、系统用户以及根用户。
用户组:简称GID(Group ID)。
普通用户
指使用linux系统中的真实用户,这类用户可以使用用户名和密码来登陆系统。普通用户只能在其家目录中操作,其用户的UID一般大于500。
根用户
根用户也就是root用户,ID是0,也称为超级用户。root用户对系统拥有绝对的控制权。其可以修改、删除任何文件,可以运行任何命令。
系统用户
系统用户是指运行系统必须有的用户,但不是指真实的使用者。例如需要运行MySQL数据库服务时,需要系统用户mysql来运行mysqld进程。系统用户ID的范围是1~499。
用户组
用户组跟用户类似,其每个用户均属于其一个用户组中。
查用户和用户组命令
用户查找用id命令来进行。
代码语言:javascript复制swz@swz-ubuntu:~$ id
用户id=1000(swz) 组id=1000(swz) 组=1000(swz),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),133(lxd),134(sambashare)
用户组命令可以用groups来查找。
代码语言:javascript复制swz@swz-ubuntu:~$ groups
swz adm cdrom sudo dip plugdev lpadmin lxd sambashare
用户名和用户密码配置文件
我们在登陆linux系统时,必须要输入用户和密码。而记录系统用户名和密码的两个重要文件为:/etc/passwd以及/etc/shadow。
代码语言:javascript复制swz@swz-ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
上述配置文件都是使用6个冒号进行分隔的,隔开的七列字符串。其意义如下图。
列数 | 含义 | 说明 |
---|---|---|
1 | 用户名 | UID的字符串形式 |
2 | 密码 | 旧的系统,是加密的密码。新系统中,将密码放在/etc/shadow下,此时为x |
3 | UID | 系统来区分不同用户的整数 |
4 | GID | 系统区分不同用户组的整数 |
5 | 说明栏 | 类似于注释 |
6 | 家目录 | 用户登录之后,其所处的目录就是家目录 |
7 | 登陆shell | 用户登录时所用的shell |
默认其他用户是不能查看密码的,只有根用户(root用户)才能查看密码。不过此密码是加密之后产生的,不是用户的登录密码。
代码语言:javascript复制root@swz-ubuntu:/home/swz# cat /etc/shadow
root:$6$mGjGK2OhUsTtxXpE$HhuQ/FqGfHidpZVrN76jBywe8Hw3IV9NXUWaIIlpAoil99JEwlu9eODOYgMyPiMqe3pau9lmgbtZBo4Uao94Q1:19178:0:99999:7:::
daemon:*:18912:0:99999:7:::
bin:*:18912:0:99999:7:::
sys:*:18912:0:99999:7:::
例如上述
mGjGK2OhUsTtxXpE$HhuQ字符串就是其加密之后的密码。
/etc/shadow文件是由8个冒号分隔开的9列字符串,其意义如下图。
列数 | 含义 | 说明 |
---|---|---|
1 | 用户名 | 是UID的字符串标记方式 |
2 | 密码 | 经过加密之后的密码 |
3 | 密码的最近修改时间 | 这个数字是从1970年以后修改日的天数 |
4 | 密码不可修改的天数 | 修改密码后,几天内不可以修改密码,如果是0,可以修改 |
5 | 密码重复修改的天数 | 考虑到密码使用一段时间后,可能会泄露。可以再设置一个修改时间,密码到期后系统会提醒用户修改密码。 |
6 | 密码失效前警告的天数 | 设定密码到期前几天开始提醒用户修改密码 |
7 | 密码失效宽限天数 | 如果密码到期,过了几天就会失效,无法登录到系统 |
8 | 账号失效日期 | 一般为空 |
9 | 保留字段 | 暂时没有使用 |
账号管理
账号管理涉及到账号的添加、删除、以及修改。
新增和删除账户
添加用户
useradd这个命令用来添加用户,使用方法,useradd 用户名。
具体的我就不演示了。其创建之后会创建根目录,一般是/home/用户名。
更改密码
用passwd更改密码,注意密码不能太简单。passwd后面不加用户名,默认修改当前用户的密码。一般用法为:passwd 用户名。
检查用户信息
常见命令一般有users、who、w。
users命令一般用来查看当前系统有哪些用户,默认在不同终端的登录同一个用户,系统会判定是两个用户。users查看的信息量比较少,可以使用who查看更多的信息。
代码语言:javascript复制swz@swz-ubuntu:~$ users
swz
代码语言:javascript复制swz@swz-ubuntu:~$ who
swz pts/0 2022-07-09 09:05 (192.168.141.142)
明显使用who可以查看更多的信息,上述who中第二列是登录的终端,一般pts是远程登录的终端。后面是登录时间。
而w可以查看更多的信息,如下。
代码语言:javascript复制swz@swz-ubuntu:~$ w
09:53:21 up 1:07, 1 user, load average: 0.01, 0.02, 0.00
USER TTY 来自 LOGIN@ IDLE JCPU PCPU WHAT
swz pts/0 192.168.141.142 09:05 1.00s 0.07s 0.00s w
调查用户
可以用finger查看登录用户的信息,加用户名可以看到登录用户的详细信息。
代码语言:javascript复制swz@swz-ubuntu:~$ finger
Login Name Tty Idle Login Time Office Office Phone
swz swz pts/0 Jul 9 09:05 (192.168.141.142)
代码语言:javascript复制swz@swz-ubuntu:~$ finger swz
Login: swz Name: swz
Directory: /home/swz Shell: /bin/bash
On since Sat Jul 9 09:05 (CST) on pts/0 from 192.168.141.142
5 seconds idle
No mail.
No Plan.
切换用户
可以使用su来切换用户,其目录会变,必须输入密码。
代码语言:javascript复制swz@swz-ubuntu:~$ su root
密码:
root@swz-ubuntu:/home/swz#
利用sudo,可以行使其他用户的权利,但不是真正切换到了用户。
代码语言:javascript复制swz@swz-ubuntu:~$ sudo ls /root
snap
swz@swz-ubuntu:~$ pwd
/home/swz