Linux用户和用户组管理 用户管理相关文件

用户信息文件 /etc/passwd

影子文件 /etc/shadow

组信息文件 /etc/group

组密码文件 /etc/gshadow

用户信息文件 /etc/passwd

这个文件中保存的就是系统中所有的用户及其对应的用户主要信息。

文件格式 : 

第1字段 第2字段 第3字段 第4字段 第5字段 第6字段 第7字段
用户名称 密码标志 用户ID 组ID 用户说明 家目录 登陆后的Shell

例如:root:x:0:0:root:/root:/bin/bash

         lizhouwei:x:1000:1000:lizhouwei:/home/lizhouwei:/bin/bash

用户名称

第1个字段是用户名称,用户名称只是为了方便管理员记忆,Linux 系统是通过用户 ID (UID) 来区分不同用户、分配用户权限的。而用户名称和 UID 的对应正是通过 /etc/passwd 这个文件来定义的。

密码标志

第2个字段是密码标志,这里的"x"代表的是密码标志,表示用户是拥有密码的,而不是真正的密码,真正的密码是保存在 /etc/shadow 文件中的。由于这个文件的权限是 644,查询命令如下:

[root@localhost /]# ls -l etc/passwd
-rw-r--r--. 1 root root 2282 Nov 5 20:19 etc/passwd

所有用户都可以读取 /etc/passwd 文件,这样非常容易导致密码的泄露。虽然密码是加密的,但是采用暴力破解的方式也是能够进行破解的。所以现在的 Linux 系统把真正的加密密码串放置在影子文件/etc/shadow中,而影子文件的权限是 000,查询命令如下:

[root@localhost /]# ls -l etc/shadow
----------. 1 root root 1266 Nov 5 20:19 etc/shadow

这个文件是没有任何权限的,但因为我是 root 用户,所以读取权限不受限制。当然,用强制修改的方法也是可以手工修改这个文件的内容的。只有 root 用户可以浏览和操作这个文件,这样就最大限度地保证了密码的安全。

所以在 /etc/passwd 中"x"只是密码标志,代表用户是拥有密码的,具体的密码要去 /etc/shadow 文件中查询。如果删除了密码标志"x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(用户无密码时远程是不可以登陆的)。

UID

第3个字段就是用户 ID(UID),在Linux中系统是通过 UID 来识别不同的用户和分配用户权限的。这些 UID 是有使用限制和要求的:

  0:超级用户 UID。如果用户 UID 为 0,则代表这个账号是管理员账号。在 Linux 中只需把其他用户的 UID 修改为 0 就可以把普通用户升级成管理员了。

  1~499:系统用户(伪用户)UID。这些 UID 是系统保留给系统用户的 UID,也就是说 UID 是 1~499 范围内的用户是不能登录系统的,而是用来运行系统或服务的。其中,1~99 是系统保留的账号,系统自动创建;100~499 是预留给用户创建账号的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。

  500~65535:普通用户 UID。建立的普通用户 UID 从 500 开始,最大到 65535。

说明:在2.6.x 内核以后的 Linux 系统用户 UID 已经可以支持 232 个用户了。

GID

第4个字段就是用户的组 ID(GID),这个组ID是指用户的初始组的标志号。在Linux 中用户可以同时加入初始组和附加组。

初始组:指用户一登陆录就立刻拥有这个用户组的相关权限。每个用户的初始组只能有一个,在添加用户时如果不指定初始组,则系统会建立一个与用户名相同的组作为用户的初始组。例如:我们手工添加用户 lizhouwei,在建立用户 lizhouwei 的同时就会建立 lizhouwei组作为 lizhouwei 用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组以外,把用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。例如:刚刚的 lizhouwei 用户除属于初始组 lizhouwei 外,我又把它加入了 users 组,那么 lizhouwei 用户同时属于 lizhouwei 组、users 组,其中 lizhouwei 是初始组,users 是附加组。当然,初始组和附加组的身份是可以修改的,但是我们在工作中不修改初始组,只修改附加组,因为修改了初始组有时会让管理员逻辑混乱。

用户说明

第5个字段是这个用户的简单说明,没有什么特殊作用,可以不写。

家目录

第6个字段是这个用户的家目录,也就是用户登录后有操作权限的访问目录,我们把这个目录称为用户的家目录。

普通用户家目录: /home/ 用户名

超级用户的家目录: /root 目录

说明:在psswd中即使将用id(UID)改为0用户管理员,其家目录的位置是不变的,还是/home/用户名

登录之后的Shell

Shell 就是 Linux 的命令解释器。将Linux的命令翻译成系统可以识别的机器语言,同时把系统的执行结果翻译为用户可以识别的 高级语言。Linux 的标准 Shell 就是 /bin/bash。
在 /etc/passwd 文件中,大家可以把这个字段理解为用户登录之后所拥有的权限。如果写入的是 Linux 的标准 Shell,/bin/bash 就代表这个用户拥有权限范围内的所有权限。例如:

[root@localhost /]# vim etc/passwd

lizhouwei:x:1000:1000:lizhouwei:/home/lizhouwei:/bin/bash

例如:lizhouwei 用户,它的登录 Shell 是 /bin/bash,那么这个用户就可以使用普通用户的所有权限。如果把 lizhouwei 用户的 Shell 修改为 /sbin/nologin,那么这个用户就不能登录了,因为 /sbin/nologin 就是禁止登录的 Shell。如果我在这里放入的系统命令,如 /usr/bin/passwd,那么这个用户可以登录,但登录之后就只能修改自己的密码。

说明:在用户的 Shell中不能随便写入和登陆没有关系的命令,如 ls,否则系统不会识别这些命令,也就意味着这个用户不能登录。

 影子文件 /etc/shadow

 这个文件中保存着用户的实际加密密码和密码有效期等参数。我们已经知道这个文件的权限是 000,所以除 root 用户外,其他用户是不能查看的,这样做有效地保证了密码的安全。字段之间使用":"作为分隔符。

第1字段 第2字段 第3字段 第4字段 第5字段 第6字段 第7字段 第8个字段 第9个字段
用户名称 密码

密码最后一次修改曰期

密码的两次修改间隔时间

(和第3个字段相比)

密码的有效期

(和第3个字段相比)

密码修改到期前的警告天数

(和第5个字段相比)

密码过期后的宽限天数

(和第5个字段相比)

账号失效时间

保留

例如:lizhouwei:bIUmABK6YbB4k1w6Ai::0:99999:7:::

用户名称

第1个字段中保存的是用户名称,和 /etc/passwd 文件的用户名称相对应。

密码

第2个字段中保存的是真正加密的密码。在Linux 的密码采用的是 SHA512 散列加密算法。如果用户密码是"!!"或"*",代表没有密码是不能登录。例如:所有伪用户的密码都是"!!"或"*",代表没有密码是不能登录的。新创建的用户如果不设定密码,那么它的密码项也是"!!",代表这个用户没有密码,不能登录。

密码最后一次修改曰期

第3个字段是密码的修改日期,数值表示 当前日期 到 1970年1月1日的天数, 366 代表的就是 1971 年 1 月 1 日。

 

密码的两次修改间隔时间(和第三个字段相比)

第4个字段是密码的两次修改间隔时间。这个字段要和第3个字段相比,也就是说密码被修改后多久不能再修改密码。如果是 0,则密码可以随时修改。如果是 10,则代表密码修改后 10 天之内不能再次修改这个密码。

密码的有效期(和第三个字段相比)

第5个字段是密码的有效期。这个字段也要和第三个字段相比,也就是说密码被修改后可以生效多少天。默认值 99999,也就是 27 年,大家可以认为永久生效。如果改为 90,那么密码被修改 90 天之后就必须再次修改,否则该用户就不能登录了。我们在管理服务器的时候可以通过这个字段强制用户定期修改密码。

密码修改到期前的警告天数(和第五个字段相比)

第6个字段是密码修改到期前的警告天数。这个字段要和第五个字段相比,就是密码到期前需提前几天修改。默认值是7,也就是说从密码到期前的 7 天开始,每次登录系统都会警告该用户修改密码。

密码过期后的宽限天数(和第五个字段相比)

第7个字段是密码过期后的宽限天数。也就是密码过期后,用户如果还是没有修改密码,那么在宽限天数内用户还是可以登录系统的;如果过了宽限天数,那么用户就无法再使用该密码登录了。天数如果是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。

账号失效时间

第8个字段是用法的账号失效时间。这里同样要写时间戳,也就是用 1970 年 1 日 1 日进行时间换算。如果超过了失效时间,就算密码没有过期,用户也就失效,无法使用了。

保留

这个字段目前没有使用。

 

 

猜你喜欢

转载自www.cnblogs.com/lizhouwei/p/9941318.html