Linux账号管理(2)【重发】- UID、用户配置文件介绍
有读者反馈《Linux账号管理(2)》有一些排版上的问题,今天重新推送一篇吧。在此也感谢网友“依洲べ”,感谢您的反馈。
Linux系统中不同类型用户UID说明
UID整数范围 | 角色 | 特性 |
0 | 超级用户 | 当用户UID为0时,表示这个账号是超级管理员账号,如果要增加一个系统管理员账号的话,只需要将该账号的UID改为0即可。当然我们不建议这么做,可以用sudo替换 |
1-999 | 虚拟用户 | 这个范围是保留给系统使用的UID,之所以这样这样划分,是为了防止人为建立账户的UID和系统UID之间冲突。并没有其他特殊的含义。细心的同学可以看到passwd虚拟用户的UID都会在这个范围内。除了0之外,所有的UID在使用上没有任何区别。【centos6的虚拟用户UID是1-499】 |
1000-65535 | 普通用户 | 普通账户UID,当使用useradd jason建立账户时,默认情况下UID就是从1000开始的【centos6的普通用户UID是1000-65535】。当然了,我们也可以指定UID来创建账户。 |
用户与用户组的对应关系
用户和用户组的对应关系有:一对一、一对多、多对一、和多对多;方便大家理解,我们通过图形更形象的展示下这种关系:
用户配置文件介绍
linux系统下的账户文件主要有/etc/passwd、/etc/shadow。
/etc/passwd #用户的配置文件
/etc/shadow #用户影子口令文件
/etc/passwd
文件中每行定义一个用户账号,有多少行就表示有多少个账号,在一行中可以清晰的看出,各内容之间又通过“:”号划分了多个字段,共7部分,这7部分分别定义了账号的不同属性,passwd文件实际内容如下:
[root@preparelessons ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
提示:passwd文件中很多虚拟账号,比如bin、daemon等,一般来说,这些账号是系统正常运行所需要的,在不确定的情况,请不要随意删除此类账号。
passwd文件中各行的字段简述。
root | :x | :0 | :0 | :root | :/root | :/bin/bash |
---|---|---|---|---|---|---|
账号名称 | 账号密码 | 账号UID | 账号组GID | 用户说明 | 用户家目录 | Shell解释器 |
账号名称:和用户UID对应,这是用户登录时使用的账号名称,在系统中是唯一的,不能重名
账号密码:早期的unix系统中,该字段是存放账号密码的,由于安全原因,后来把这个密码字段内容移到了/etc/shadow中了。这里可以看到一个字母x,表示该用户的密码是在/etc/shadow文件中保护的。
账号UID:是一个整数,范围是0-65535.
账号GID:是一个整数,范围是0-65535,当添加账户时,默认情况下会同时创建一个与用户同名且UID和GID相同的组。
用户说明:这个字段是对这个账号的描述说明
用户家目录:用户登录后首先进入的目录,一般为/home/用户名 这个目录
shell解释器:当前用户登录后使用的shell。在centos里,默认的shell为bash,就是在这里设置的。如果不希望用户登录系统,可以通过usermod或者手工修改passwd配置,将该字段改为/sbin/nologin即可。如果你仔细看passwd文件的话,会发现内置虚拟账号的这个字段都是/sbin/nologin,表示禁止登录系统,这是出于安全考虑:
[root@preparelessons ~]# echo $SHELL
/bin/bash
[root@preparelessons ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/etc/shadow
由于passwd文件必须能够被所有的用户读,所以会带来安全隐患。而shadow文件就是为了解决这个安全隐患而增加的。我们来看下/etc/shadow文件的权限:
[root@preparelessons ~]# ll /etc/shadow
---------- 1 root root 730 Feb 15 09:33 /etc/shadow
可以发现/etc/shadow是只对root只读(----------权限对root可读),其内容为:
[root@preparelessons ~]# head -5 /etc/shadow
root:$6$/rdt/QFLzpIiFWqM$J89knIK3LfL6B2FYXWid.XSitQMNLoygJGQWFC3IFs6xXmuaX/CXJc.hzgDWW2dD94Cek/3QVsKdD4ttWIbnm1::0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::
Daemon | :* | : 17834 | :0 | :99999 | :7 | : | : | : |
---|---|---|---|---|---|---|---|---|
账号名称 | 账号密码 | 最近更新密码时间 | 密码不可被修改的天数 | 用户必须更改口令的天数 | 密码需要修改期限前的警告天数 | 密码过期后的账号宽限时间 | 账号失效日期 | 保留 |
序号 | 字段名称 | 含义 |
---|---|---|
1 | 账号名称 | 用户的账号名称 |
2 | 账号密码 | 用户密码,这个是经过加密后的密码 |
3 | 最近更改密码的时间 | 从1970年1月1日起,到用户最近一次更改口令的天数 |
4 | 密码不可被修改的天数 | 本字段相对于第三个字段来说,记录最近一次被修改后,经过多少天才可以再被修改。如果是0,表示随时可以修改。如果设置30天,那就是当设置新密码后,需要经过30天以后才可以再次修改密码。 |
5 | 用户必须更改口令的天数(密码有效天数) | 相对于第三个字段来说。用于指定在最近一次修改密码后,在多少天数内需要再次修改密码才行。你必须在这个天数内重新设置你的密码,否则这个账号的密码将会变为过期特性。 |
6 | 密码需要修改期限前的警告天数 | 相对于第五字段。当账号的密码有效期快要到期的时候(第五字段),系统会根据这个字段的设置,发出【警告】信息给这个账号,提醒他【再过n天你的密码就要过期了,请尽快重置你的密码】。上面的例子就是密码到期之前的7天之内,系统会警告该用户。 |
7 | 密码过期后的账号宽限时间 | 与第五字段相比的密码失效日。密码有效日期为【更新日期(第三字段)+重新修改日期(第5字段)】,过了该期限后用户依旧没有更改密码,那密码就算过期了。虽然过期,但是还可以正常使用,不过在登录系统时,系统要强制要求你必须要重新设置密码才能登录使用,这就是密码过期特性。 那么这个字段的功能是什么呢?是在密码过期几天后,如果用户还没有登录更改密码,那么这个账号的密码将会失效,即该账号再也无法使用该密码登录。要注意密码过期和密码失效不一样哦! |
8 | 账号失效日期 | 这个日期和第三个字段一样,都是使用1970年以来的总天数。这个字段表示:这个账号在此字段规定的日期后,将无法在使用。这就是账号失效。此时无论密码是否过期,账号都无法登陆系统。 |
9 | 保留 | 为以后添加功能使用 |
《Linux基础及进阶》: 025 - Linux硬盘与文件系统(10) 026 - Linux硬盘与文件系统(11) 027 - Linux硬盘与文件系统(12) 028 - Linux硬盘与文件系统(13)- 本章实战练习 029 - Linux账号管理(1)-用户及用户组简介
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·