Linux账号管理(2)- UID、用户配置文件介绍
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来创建账户。 |
用户与用户组的对应关系
用户配置文件介绍
/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
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:::
和/etc/passwd一样,shadow文件中的每一行内容都是以冒号(:)作为分隔符,共9个字段,其各个字段的含义如下:
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命令》系列文章已经发布了30个命令的文章了,请到公众号通过“学习教程“->“Linux命令”路径找到这些文章的目录。这个系列的文章需要暂停一段时间,有问题的读者欢迎联系我们或公众号发信息给我们。
看完本文有收获?请分享给更多人
推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!
微信号|bjdream-1
Cloud研习社 ·