科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道安全管理Linux系统中的用户和组

安全管理Linux系统中的用户和组

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Linux系统中,用户是活动的主体,直接享有对系统文件和资源进行操作和控制的权利,所以如何对系统中的用户进行好的管理,是系统管理员保证系统安全必须认真完成的第一步工作。

作者:李洋 2005年7月25日

关键字: Linux 操作系统

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

    ZDNetChina服务器站 7月25日操作系统技巧   Linux系统中,用户是活动的主体,直接享有对系统文件和资源进行操作和控制的权利,所以如何对系统中的用户进行好的管理,是系统管理员保证系统安全必须认真完成的第一步工作。

    在Linux操作系统中,每一个文件和程序都归属于一个特定的“用户”。每一个用户都由一个惟一的身份来标识,这个标识叫做用户ID(UserID,UID)。并且,系统中的每一个用户也至少需要属于一个“用户分组”,也就是由系统管理员所建立的用户小组,这个小组中包含着许多系统用户。与用户一样,用户分组也是由一个惟一的身份来标识的,该标识叫做用户分组ID(GroupID,GID)。用户可以归属于多个用户分组。对某个文件或程序的访问是以它的UID和GID为基础的。一个执行中的程序继承了调用它的用户的权利和访问权限。

    用户文件和组文件

    1. 用户账户文件——/etc/passwd

    /etc/passwd文件是Unix安全的关键文件之一。这个文件的每一行保存一个用户的资料,而用户资料的每一个数据项采用冒号“: ”分隔。如下所示:

    LOGNAME: PASSWORD: UID: GID: USERINFO: HOME: SHELL

    每行的头两项是登录名和加密后的口令,后面的两个数是UID和GID,接着的一项是系统管理员想写入的有关该用户的任何信息。最后两项是两个路径名: 一个是分配给用户的HOME目录; 第二个是用户登录后将执行的shell(若为空格则缺省为/bin/sh)。所有用户口令的存放都是加密的,通常采用的是不可逆的加密算法,比如DES。任何拥有0值UID的用户都具有根用户(系统管理员)访问权限,通常,UID是这个特殊值的用户的登录名是“root”。允许任何其他用户或者用户名拥有0值的UID都可能危及系统安全。

    2. 用户影子文件——shadow

    由于/etc/passwd文件是全局可读的,而且口令加密的算法是公开的,如果有恶意用户取得了/etc/passwd文件,便可以穷举所有可能的明文通过相同的算法计算出密文进行比较,直到相同,从而破解口令。因此,针对这种安全问题,Linux/Unix广泛采用了“shadow(影子)文件”机制,将加密的口令转移到/etc/shadow文件里,该文件只为root超级用户可读,而同时/etc/passwd文件的密文域显示为一个x,从而最大限度地减少了密文泄露的机会。/etc/shadow文件的每行是8个冒号分割的9个域,格式如下。

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

    其中,各个域表示如下含义: 用户登录名、加密的用户口令、从1970年1月1日起到上次修改口令所经过的天数、两次修改口令之间至少经过的天数、口令还会有效的最大天数(如果是99999则表示永不过期)、口令失效前多少天内系统向用户发出警告、禁止登陆前用户名还有效的天数、用户被禁止登陆的时间、保留字段(暂未使用)。

    3. 用户组账号文件——/etc/group

    /etc/passwd文件中包含着每个用户缺省的分组ID(GID)。在/etc/group文件中,这个GID被映射到该用户分组的名称以及同一分组中的其他成员。

    /etc/group文件含有关于小组的信息,/etc/passwd中的每个GID在文件中应当有相应的入口项,入口项中列出了小组名和小组中的用户,这样可方便地了解每个小组的用户,否则必须根据GID在/etc/passwd文件中从头至尾地寻找同组用户,这提供了一个比较快捷的寻找途径。/etc/group文件对小组的许可权限的控制并不是必要的,因为系统用来自于/etc/passwd文件的UID、GID来决定文件存取权限,即使/etc/group文件不存在于系统中,具有相同的GID用户也可以小组的存取许可权限共享文件。小组就像登录用户一样可以有口令。如果/etc/group文件入口项的第二个域为非空(通常用x表示),则将被认为是加密口令。

    /etc/group文件中每一行的内容如下所示: 用户分组名、加过密的用户分组口令、用户分组ID号(GID)、以逗号分隔的成员用户清单。

    4. 组账号文件——/etc/gshadow

    如同用户账号文件的作用一样,组账号文件也是为了加强组口令的安全性,防止黑客对其实行的暴力攻击,而采用的一种将组口令与组的其他信息相分离的安全机制。其格式如下所示: 用户组名、加密的组口令、组成员列表。

    验证用户和组文件

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

    上面所介绍的用户以及组账号文件都非常重要,对于系统验证用户和组具有重要意义。一旦上述文件发生错误,则会对系统造成影响。正是基于这个原因,Linux提供了pwck和grpck这两个命令分别验证用户以及组文件,以保证这两个文件的一致性和正确性。下面将分别加以介绍。

    pwck用来验证用户账号文件(/etc/passwd)和影子文件(/etc/shadow)的一致性,它验证文件中的每一个数据项中每个域的格式以及数据的正确性。如果发现错误,该命令将会提示用户对出现错误的数据项进行删除。

    该命令主要验证每个数据项是否具有: 正确的域数目、惟一的用户名、合法的用户和组标识、合法的主要组群、合法的主目录、合法的登录shell。如果检查发现域数目与用户名错误,则该错误是致命的,则需要用户删除整个数据项。其他的错误均为非致命的,将会需要用户进行修改,而不一定要删除整个数据项。下面的例子说明如何使用该命令:

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

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

……

#vi /etc/passwd

//编辑该账号文件,并加入一项不存在的数据项

//“super:x:200:200:superman:/home/super:/bin/bash”

#pwck /etc/passwd //执行验证工作

//验证出系统并不存在该super用户

user adm: directory /var/adm does not exist

user news: directory /etc/news does not exist

user uucp: directory /var/spool/uucp does not exist

user gopher: directory /var/gopher does not exist

user pcap: directory /var/arpwatch does not exist

user super: no group 200

user super: directory /home/super does not exist

pwck: no changes

//再次编辑该账号文件,加入不正确的数据项“super:x:200:200:superman:/home/super:”

//执行验证工作

#pwck /etc/passwd

user adm: directory /var/adm does not exist

user news: directory /etc/news does not exist

user uucp: directory /var/spool/uucp does not exist

user gopher: directory /var/gopher does not exist

user pcap: directory /var/arpwatch does not exist

user super: no group 200

user super: directory /home/super does not exist

invalid password file entry

delete line `'? y

pwck: the files have been updated

    上述执行的两次验证操作结果不一样,第一次并没有要求用户删除该不正确的数据项,原因是数据项中域的数目没有发生错误,而第二次域的数目少了一个(本来应该有七项,只有六项),所以是致命错误,系统提示用户进行删除,用户确定删除后该文件验证才通过。同样地,也可以用该命令来验证/etc/shadow文件的一致性。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章