正如上文所述,企业中使用的Linux操作系统一般都会有非常多的用户,这些用户有着各自不同的作用,有的用来做测试、有的用来运行服务、有的用来做开发等。作为一名Linux运维工程师,就需要管理好这些用户。那么多的用户,挨个去管理会特别吃力,而且耗费精力,那怎么办呢?有办法!将一些工作内容相似的用户组成一个用户组,通过管理这个组就间接地管理了这些用户。
举个简单的例子,某个企业的技术部门中有50个技术人员,分别是C开发工程师、Java开发工程师、Web前端工程师和测试工程师,每个人在Linux操作系统上都有各自的用户账号。在操作系统上创建C开发组、Java开发组、Web开发组和测试组4个用户组,把相关的用户账号放到各自对应的用户组中,管理这4个用户组就等于管理了这50个用户,所以给用户分组是Linux操作系统对用户进行集中管理和控制访问权限的一种手段,通过自定义用户组,可以简化用户管理工作。
1.用户
Linux操作系统中与用户相关的配置文件有两个,分别是“/etc/passwd”和“/etc/shadow”,“/etc/passwd”文件专门用于存放操作系统中所有用户的账号信息,而且所有用户都有权限查看此文件的内容,但是只有root管理员才能进行修改。基于这种特性,早期一些黑客很容易地获取到密码字符串进行暴力破解,所以之后专门对此文件进行了改进,将密码专门存放到“/etc/shadow”文件中,并做了严格的权限控制,而“/etc/passwd”文件中关于密码的那一段内容改用占位符“x”做标识。
我们来看一下“/etc/passwd”文件的内容,文件中的每一行代表一个用户,每行内容用“:”作为分隔符划分成7个字段,每个字段都有各自所代表的含义,具体见表7-1。
表7-1 “/etc/passwd”文件7个字段的含义
接下来再讲解一下“/etc/shadow”文件中各个字段的含义。同样,在文件中每一行代表一个用户,使用“:”作为分隔符将每行用户信息划分为9个字段,具体见表7-2。大家要注意这个文件只有root用户能够读取其中的内容,其他用户没有权限,这就保证了用户密码的安全性。
表7-2 “/etc/shadow”文件9个字段的含义
以上就是在Linux操作系统中关于记录用户信息的两个配置文件,我们之前经常说root用户在Linux操作系统中拥有最高权限,但是大家可能没有体验过root用户的权限高到哪种程度,这次我们就玩得刺激一点(一定要在虚拟机中进行尝试并提前做好快照!因为我们这次要对操作系统进行“破坏性”实验),做好快照后使用root用户删除“/etc/passwd”和“/etc/shadow”这两个文件:
注销root用户,一般注销的作用是退出该用户的登录并返回到用户登录界面,但是当我们删除了“/etc/passwd”和“/etc/shadow”这两个配置文件之后,再进行注销操作。由图7-1可见,系统屏幕一片漆黑,所有按键都没反应并且系统上的所有用户都无法登录。当我们重启时就会发现,屏幕一直在转圈圈,没有任何反应。
图7-1 注销用户
现在大家能理解root用户的权限有多么恐怖了吧,可能一不小心敲错了的一条命令就能使整个系统瘫痪!所以说在企业中非必要的话,能不用root账号就不用root账号,因为root不止是拥有最高权限的账号,还是拥有最大破坏力的账号。
尝试过上述操作的读者可以直接恢复快照,快照恢复后就又可以继续愉快地“玩耍”了。没听我劝告不做快照就直接删除文件的朋友,您目前有两种选择:一种是重启进入单用户模式,从备份文件(/etc/passwd-)中进行恢复,若是您将实验玩得更彻底把所有文件都删干净的话,那只能重装系统了。
关于用户信息相关的配置文件就先介绍到这里,接下来介绍用户组。
2.用户组
给用户分组是Linux操作系统中对用户进行管理和控制访问权限的一种手段,通过自定义用户组,可以在很多程序上简化用户管理工作。
用户与用户组之间有以下4种对应关系:
(1)一对一:一个用户只归属在一个用户组中,是组中的唯一成员。
(2)一对多:一个用户可以是多个用户组中的成员,此用户具有多个用户组的共同权限。
(3)多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限。
(4)多对多:多个用户可以存在于多个用户组中,也就是以上3种关系的扩展。
与用户组相关的配置文件也有两个,分别是“/etc/group”和“/etc/gshadow”。“/etc/group”文件专门用于存放系统中所有用户组的信息,而且所有用户都有权限查看这个文件的内容,但是只有root管理员才能进行修改。与用户密码一样,组密码也专门存放到“/etc/gshadow”文件中,并且也做了严格的权限控制,这个文件只有root用户才能读取其中的内容,其他用户没有任何权限,这就保证了用户组密码的安全性。
我们先来看“/etc/group”文件的内容,文件中的每一行代表一个用户组,每行内容用“:”作为分隔符划分成4个字段,每个字段都有各自所代表的含义,具体见表7-3。
表7-3 “/etc/group”文件4个字段的含义
用户组密码:用户设置密码是为了在登录时验证身份,那用户组设置密码的作用是什么呢?用户组密码主要用来指定组管理员,由于系统中的用户账号非常多,root管理员可能没有时间和精力对这些用户的组进行及时的调整,这时就可以给用户组指定组管理员,如果有用户需要加入或退出某用户组,可以由该组的组管理员替代root管理员进行管理。但是这个功能目前已经很少使用了,因为现在有sudo命令,管理时基本不会设置组密码。
初始组与附加组:每个用户都可以加入多个附加组,但只能属于一个初始组。所以,若需要把用户加入其他组,就需要以附加组的形式添加进入。在一般情况下,初始组就是在创建用户的时候操作系统自动创建的和用户名同名的组。
同样,“/etc/gshadow”文件中的每一行代表一个用户组,每行内容用“:”作为分隔符划分成4个字段,每个字段都有各自所代表的含义,具体见表7-4。
表7-4 “/etc/gshadow”文件4个字段的含义
至此,与用户和用户组相关的4个重要配置文件就介绍完了,接下来介绍与用户相关的各种命令。