在Linux中,有三种用户:
- Root 用户:也称为超级用户,对系统拥有完全的控制权限。超级用户可以不受限制的运行任何命令。Root 用户可以看做是系统管理员。
- 系统用户:系统用户是Linux运行某些程序所必须的用户,例如 mail 用户、sshd 用户等。系统用户通常为系统功能所必须的,不建议修改这些用户。
- 普通用户:一般用户都是普通用户,这些用户对系统文件的访问受限,不能执行全部Linux命令。
Linux支持用户组,用户组就是具有相同特征的用户的集合。一个组可以包含多个用户,每个用户也可以属于不同的组。用户组在Linux中扮演着重要的角色,方便管理员对用户进行集中管理。当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
根目录下的\etc文件夹主要包含系统配置文件和用户、用户组配置文件,我们可以在这里查看用户和用户组的详细信息。
与用户和组有关的系统文件:
系统文件 |
说明 |
---|---|
/etc/passwd | 保存用户名和密码等信息,Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行。这个文件对所有用户都是可读的。 |
/etc/shadow | /etc/shadow中的记录行和/etc/passwd中的相对应,他由pwconv命令根据/etc/passwd中的数据自动产生,它的格式和/etc/passwd类似,只是对密码进行了加密。并不是所有的系统都支持这个文件。 |
/etc/group | 以记录行的形式保存了用户组的所有信息。 |
来看一下/etc/passwd文件的结构:
$cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/usr/sam:/bin/sh
可以看到,/etc/passwd文件中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段,其格式和具体含义如下图所示: 对每个字段的说明:
字段 | 说明 |
---|---|
用户名 | 用户名是惟一的,长度根据不同的linux系统而定,一般是8位。 |
密码 | 由于系统中还有一个/etc/shadow文件用于存放加密后的口令,所以在这里这一项是“x”来表示,如果用户没有设置口令,则该项为空。如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。 |
用户ID | 系统内部根据用户ID而不是用户名来识别不同的用户,用户ID有以下几种:
|
组ID | 其实这个和用户ID差不多,用来管理群组,与/etc/group文件相关。 |
描述信息 | 这个字段几乎没有什么用,只是用来解释这个账号的意义。在不同的Linux系统中,这个字段的 格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。 |
用户主目录 | 用户登录系统的起始目录。用户登录系统后将首先进入该目录。root用户默认是/,普通用户是/home/username。 |
用户Shell | 用户登录系统时使用的Shell。 |
/etc/shadow文件的结构:
/etc$ sudo cat shadow [sudo] password for test: root:$6$W2kscbFB$RpaAn0nY..gG5.9L8lEcz7CW5j.v1RyLTjaZPHH/5zwskRibSeVUHSSkWxNcWLLFsV0K1gmap90Dzf6V894FJ1:16958:0:99999:7::: daemon:*:16911:0:99999:7::: bin:*:16911:0:99999:7::: sys:*:16911:0:99999:7::: sync:*:16911:0:99999:7::: games:*:16911:0:99999:7::: man:*:16911:0:99999:7::: lp:*:16911:0:99999:7::: mail:*:16911:0:99999:7:::
格式--用户名:密码:最近更改密码的日期:不可更改密码的天数:密码需要重新更改的天数:密码更改期限前的警告日期:密码过期的宽限时间:账号失效时间:保留字段
字段 | 说明 |
---|---|
用户名 | 用户名是惟一的,长度根据不同的linux系统而定,一般是8位。 |
密码 | 经过加密的密码。如果字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。 |
最近更改密码的日期 |
16911这种数字是因为是以1970年1月1日做为第1天,然后++得到的。 |
不可更改密码的天数 | 指定天数内用户无法修改密码 |
密码需要重新更改的天数 | 指定天数后必须更改密码 |
密码更改期限前的警告日期 | 用户登录系统的起始目录。用户登录系统后将首先进入该目录。root用户默认是/,普通用户是/home/username。 |
密码过期的宽限时间 | 账号过期后指定时间内还能接着使用 |
账号失效时间 | 超过指定时间账号自动被停用 |
保留字段 | 目前无意义,可能留着以后扩展用 |
/etc/group 结构:
/etc$ sudo cat group [sudo] password for test: root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,test tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13:
格式--组名称:密码:组id:成员
应该不需要解释了,只要注意"x"代表密码,具体密码存在shadow里即可。
时间: 2024-10-09 07:32:15