linux用户及组相关文件介绍

一、用户和组文件

          Linux 操作系统采用了 UNIX 传统的方法,把全部的用户信息保存为普通的文本文件。

1.用户账号文件--passwd

                 "/etc/passwd”文件是UNIX安全的关键文件之一。该文件用于用户登录时校验用户的登录名、加密的口令数据项、用户ID(UID)、默认的用户组ID(GID)、用户信息、用户主目录及登录后使用 shell。“/etc/passwd”文件的每一行保存一个用户的资料,而用户数据按域以冒号“:”分隔。格式如下所示。

                    username :password:uid:gid:userinfo:home:shell

                   下面是一个实际的系统用户的例子。

                   user1:x:500.500: user1:/home/user1:/bin/bash

                    那么该用户的基本信息如下所示。

                  (1)  登录名: user1.

           (2)  加密的口令表示:X.

           (3)  UID:500.

           (4)  GID:500.

    (5)  用户信息:user1

    (6)  用户主目录:“/home/user1 "。  

    (7)  登录后执行的shell:“/bin/bash”。

用户的登录名是用户用来登录的识别,由用户自行选定,主要由方便用户记忆或者具有一定含义的字符串组成。

              所有用户口令的存放都是加密的,通常采用的是不可逆的加密算法,比如 MD5(Message-Digest algorithm 5)。当用户在登录提示符处输入它们的口令时,输入的口令将由系统进行加密再把加密后的数据与机器中用户的口令数据项进行比较。如果这两个加密数据匹配,就可以让这个用户进人系统。在"/etc/passwd”文件中,UID信息也很重要。系统使用UID而不是登录名区别用户。

              一般来说,用户的UID应当是独一无二的,其他用户不应当有相同的UID 数值,只有UID等于0时可以例外。任何拥有0值UID的用户都具有root用户(系统管理员)访问权限,因此具备对系统的完全控制。通常UID为0这个特殊值的用户的登录名是“root”,拥有系统的最高权限。

 

2.用户影子文件——shadow

              和“/etc/passwd”类似,“/etc/shadow”文件中每条记录用冒号“:”分隔,形成9个域,格式如下所示。

            username:password: lastchg:min: max:warn:inactive:expire:flag

 

一共有九列信息:

 

第一列表示用户名;

 

第二列表示经过加密之后的密码,如果密码是!!或者*,表示没有密码,不能登录;

 

第三列表示密码的最后一次修改日期,使用1970.1.1作为标准时间,每过一天时间戳+1;

 

第四列表示两次密码的修改间隔;

 

第五列表示密码的有效期;

 

第六列表示密码到期之前的警告时间;

 

第七列表示密码过期之后的宽限天数(0表示到期后立即失效,-1则永久不失效);

 

第八列表示账号失效时间,要用时间戳表示

3.用户组账号文件——group和gshadow

group:

/ect/group 文件是用户组配置文件,即用户组的所有信息都存放在此文件中。

此文件是记录组 ID(GID)和组名相对应的文件。前面讲过,etc/passwd 文件中每行用户信息的第四个字段记录的是用户的初始组 ID,那么,此 GID 的组名到底是什么呢?就要从 /etc/group 文件中查找。

接下来,分别介绍各个字段具体的含义。

          组名

               也就是是用户组的名称,有字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。

组密码

和 /etc/passwd 文件一样,这里的 "x" 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。

不过,用户设置密码是为了验证用户的身份,那用户组设置密码是用来做什么的呢?用户组密码主要是用来指定组管理员的,由于系统中的账号可能会非常多,root 用户可能没有时间进行用户的组调整,这时可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代 root 进行管理。但是这项功能目前很少使用,我们也很少设置组密码。如果需要赋予某用户调整某个用户组的权限,则可以使用 sudo 命令代替。

组ID (GID)

就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。

这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。

组中的用户

此字段列出每个群组包含的所有用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段,可以这么理解,该字段显示的用户都是这个用户组的附加用户。

举个例子,lamp 组的组信息为 "lamp:x:502:",可以看到,第四个字段没有写入 lamp 用户,因为 lamp 组是 lamp 用户的初始组。如果要查询这些用户的初始组,则需要先到 /etc/passwd 文件中查看 GID(第四个字段),然后到 /etc/group 文件中比对组名。

每个用户都可以加入多个附加组,但是只能属于一个初始组。所以我们在实际工作中,如果需要把用户加入其他组,则需要以附加组的形式添加。例如,我们想让 lamp 也加入 root 这个群组,那么只需要在第一行的最后一个字段加入 lamp,即 root:x:0:lamp 就可以了。

一般情况下,用户的初始组就是在建立用户的同时建立的和用户名相同的组。

到此,我们已经学习了/etc/passwd、/etc/shadow、/etc/group,它们之间的关系可以这样理解,即先在 /etc/group 文件中查询用户组的 GID 和组名;然后在 /etc/passwd 文件中查找该 GID 是哪个用户的初始组,同时提取这个用户的用户名和 UID;最后通过 UID 到 /etc/shadow 文件中提取和这个用户相匹配的密码。

gshadow:

前面讲过,/etc/passwd 文件存储用户基本信息,同时考虑到账户的安全性,将用户的密码信息存放另一个文件 /etc/shadow 中。本节要将的 /etc/gshadow 文件也是如此,组用户信息存储在 /etc/group 文件中,而将组用户的密码信息存储在 /etc/gshadow 文件中。

          组名

               同 /etc/group 文件中的组名相对应。

          组密码

               对于大多数用户来说,通常不设置组密码,因此该字段常为空,但有时为 "!",指的是该群组没有组密码,也不设有群组管理员。

          组管理员

               从系统管理员的角度来说,该文件最大的功能就是创建群组管理员。那么,什么是群组管理员呢?

               考虑到 Linux 系统中账号太多,而超级管理员 root 可能比较忙碌,因此当有用户想要加入某群组时,root 或许不能及时作出回应。这种情况下,如果有群组管理员,那么他就能将用户加入自己管理的                群组中,也就免去麻烦 root 了。

               不过,由于目前有 sudo 之类的工具,因此群组管理员的这个功能已经很少使用了。

          组中的附加用户

               该字段显示这个用户组中有哪些附加用户,和 /etc/group 文件中附加组显示内容相同。

4.使用pwck和grpck命令验证用户和组文件

Red Hat Enterprise Linux 提供了 pwck和 grpck 两个命令分别验证用户和组文件,以保证这两个文件的一致性和正确性。

pwck命令的作用是检验“/etc/passwd”和“/etc/shadow”每个域的格式及数据的正确性,并会对二者的一致性进行校验。如果发现错误,该命令将会提示用户对出现错误的数据项进行修改或删除。

                与pwck命令相类似,grpck命令的作用是检验“/etc/group”和"/etc/gshadow”数据项中每个域的格式及数据的正确性,并对组账号文件“/etc/group”及其影子文件“letc/gshadow”的一致性进行校验。如果发现错误,该命令将会提示用户对出现错误的数据项进行修改或删除。

 

posted @ 2020-11-06 17:52  玩泥巴啊  阅读(517)  评论(0)    收藏  举报