Linux入门真经-018用户与组的类别及相关信息文件

Linux入门真经-018用户与组的类别及相关信息文件

Linux是一个多用户、多任务的系统。每一个用户想要登录Linux系统,首先要进行登录验证(输入用户名和密码),此阶段称之为认证(Authentication)。认证通过后,会根据之前既定的策略或者管理员的设置对该用户开放相应的权限,我们称之为授权(Authorization)。我们通过各种手段来记录和监督用户的行为,此为审计(Audition)。

为此,我们需要一套完善的用户权限机制来控制用户对系统的掌控能力。

 

1、用户

 

当我们登陆系统的时候,需要一个身份;当我们执行命令时,需要一个身份;没有这样一个身份,我们在系统中将寸步难行,这个身份就是用户。

系统中有一个专门存放用户信息的文件:/etc/passwd,接下来我们就详细说说这个文件,顺带讲讲与用户相关的内容。

 

[[email protected] tmp]# cat /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

sync:x:5:0:sync:/sbin:/bin/sync

… …省略输出… …

 

每一行就是一个用户的相关信息,其含义如下:

name:password:UID:GID:GECOS:directory:shell

用户名:密码:UID:GID:信息说明栏:主文件夹:分配的shell

接下来分解说明:

 用户名:用户的登录名。

密码:

此处我们只能看到x,早期的Unix系统就是将密码放在此处的,出于安全性考虑,密码已经加密转储到/etc/shadow中了。

UID:

在Linux中,用户分为管理员(root)和普通用户。而普通用户又可以分为系统用户和交互式登录用户。

有些用户是专门用于运行某些服务以确保登录的,这类用户就用不着为它分配一个可登陆的shell,如mail、nginx等等,此类用户为系统用户;交互式登录用户则需要为它分配shell用于人机交互。

每一个用户都有一个ID号标识,我们称之为UID。管理员(root)的UID为0 。对于Centos6的用户而言,系统用户的UID范围是1-499,交互式登录用户的UID范围为500-60000;对Centos7的用户而言,系统用户的UID范围为1-999,登录用户的范围是200-60000.

 

GID

用户所属组的ID号。下文介绍用户组的时候会讲到,在此不赘述。

 

信息说明栏

说明此账户是做什么用的,也可以理解为注释

 

主文件夹

用户的家目录,对于交互式登录用户而言,默认的家目录路径为/home/用户名

 

Shell

如果允许登录,一般会使用bash,当然你也可以使用其他shell,如csh、zsh等等,如果不允许登录,则给该用户/sbin/nologin(这也是一种特殊的shell哦)

 

2、用户组

 

用户组是什么呢?你可以将它理解为用户的容器。将多个用户形成一个逻辑的集合。比如说,有几个用户同时对于很多文件都具有相同的权限。此时可以把他们放到同一个组中,便于我们去批量地设置权限。

每个用户在创建之初,默认会属于一个与他同名的用户组,此用户组称为基本组。除了基本组之外,用户还可以属于其他组,其他组称为附加组。

用户组的信息放置于/etc/group中

 

 

[[email protected] tmp]# cat /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

mail:x:12:postfix

… … 省略输出 … …

 

用户组文件显得简洁了许多。同样,每行代表一个组的信息,格式为:

group_name:password:GID:user_list

组名:密码:组ID:用户列表

以下进行分解说明:

 

组名:用户组的名字

密码:类比用户的密码,此处用x占位,真实的密码存于/etc/gshadow

组ID:每一个组都会用一个ID号标识,管理员的组id为0。

user_list:以该组为附加组的成员会在此列出

 

3、关于用户密码文件

 

我们最后再来看看/etc/shadow这个文件。

 

[[email protected] tmp]# cat /etc/shadow

root:$6$JZnWDXZ8kfrzJNm.$/tPgfw9i5jyJi/aB3CwBp6Td11zHd3Yvqdc5gZu3tdxx8eX7kqHekskYqkw5Qk4b9fOK/ibGz69zuUz5skf2K.::0:99999:7:::

bin:*:17632:0:99999:7:::

daemon:*:17632:0:99999:7:::

adm:*:17632:0:99999:7:::

lp:*:17632:0:99999:7:::

sync:*:17632:0:99999:7:::

shutdown:*:17632:0:99999:7:::

halt:*:17632:0:99999:7:::

 

这个文件所遵照的格式是这样的:

用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期限:过期宽限期限:保留字段。

如果你所管理的服务器对密码周期有着严格的要求,你必须对这些字段的含义烂熟于心。以下选取部分字段说明:

加密的密码

以root用户为例,root用户该字段的内容为$6$JZnWDXZ8kfrzJNm.$,其中$表示的是分隔符。整段格式为$ id $ salt $ encrypted。

其中,id指的是加密算法,$ 6 $ salt $ encrypted是一个SHA-512编码密码。“ salt ”代表盐,是加解密中的一环,最后 encrypted中的内容是真正的加密后的密码。

上一次修改密码的时间:

这一字段的值是:从1970年1月1日起到上一次改密码所经历的天数

最短使用期限:

应该为一个非负整数,单位为天。表示从上一次改动起、到最短使用期限的这段时间内,密码不能被修改。0则表示没有此限制,随时可以改。

最长使用期限:

含义参考最短使用期限。使用到最长使用期限的时候就要修改密码了。

警告期段:

快到密码最长使用期限的时候,系统会警告你:还有多少天就不得不修改密码了。

过期宽限期限:

密码过期之后,在这段时间内你还可以修改你的密码。(系统会强制你修改密码才能继续使用)。当超过宽限期县仍然没有修改密码的时候,账号就再也没法用了。

 

目前你应该对用户与组的概念有了直观的了解了,下一节我们介绍用户与组的管理

 

关注本公众号获取每日更新

Linux入门真经-018用户与组的类别及相关信息文件