安全管理Linux系统中的用户和组
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。如果检查发现域数目与用户名错误,则该错误是致命的,则需要用户删除整个数据项。其他的错误均为非致命的,将会需要用户进行修改,而不一定要删除整个数据项。下面的例子说明如何使用该命令:
顶(0)
踩(0)
上一篇:Linux下如何实现软件RAID
- 最新评论