查看原文
其他

Linux账号管理(2)- UID、用户配置文件介绍

Cloud研习社 Cloud研习社 2023-06-06


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来创建账户。


用户与用户组的对应关系




用户和用户组的对应关系有:一对一、一对多、多对一、和多对多;方便大家理解,我们通过图形更形象的展示下这种关系:
一对一:即一个用户可以存在一个组中,也可以是组中的唯一成员,如:root
一对多:即一个用户可以存在于多个用户组中。比如,上图中普通用户可以是核心软件组,也可以是架构组,还可以是外围软件组。那么这个用户就有核心软件组、架构组、外围软件组的权限
多对一:多个用户可以存在于一个组中,这些用户具有和组相同的权限
多对多:多个用户可以存在于多个组中。并且几个用户可以归属相同的组;其实多对多的关系是前面三条的扩展


用户配置文件介绍




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:::


和/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命令”路径找到这些文章的目录。这个系列的文章需要暂停一段时间,有问题的读者欢迎联系我们或公众号发信息给我们。


手应知:
    尝鲜Rocky Linux
《Linux基础及进阶》:
    025 - Linux硬盘与文件系统(10)
    026 - Linux硬盘与文件系统(11)
    027 - Linux硬盘与文件系统(12)
    028 - Linux硬盘与文件系统(13)- 本章实战练习
    029 - Linux账号管理(1)-用户及用户组简介


看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存