[一天几个linux命令] 用户与用户组

前言

linux的每个文件都有相当多的属性与权限,其中最重要的可能就是文件的所有者的概念了。所以在开始文件相关信息的介绍前,先简单介绍用户及用户组的概念

文件所有者

初次接触linux的读者大概会学得很怪异,怎么“linux有这么多用户,还分什么用户组,有什么用?”(我初次接触,真的是有这种感觉)这个“用户与用户组”的功能可是相当健全而且好用的一个安全防护。怎么说呢?由于Linux是个多用户,多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作的情况发生,为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个“文件所有者”的角色就显得相当重要了。

:当你将你的Email情书转存成文件后,放在你自己的主文件夹中,你总不希望被其他人看见自己的情书吧?这个时候你就把该文件设置成只有文件所有者才能查看与修改这个文件的内容,那么即使其他人知道你有这个相当有趣的文件,不过由于你有设置适当的权限,所以其他人自然也就无法知道该文件的内容

用户组概念

那么用户组呢?为何要配置文件还有所属的用户组?其实用户组最有用的功能之一,就是当你在团队开发资源的时候,举例来说,假设主机上有两个团体,每一个团体名为projecta,里面有成员class1, class2, class3三个;第二个团体名为projectb,里面的成员有class4, class5, class6。这两个团体之间有竞争性质,但却要交纳同一份报告。每组的组员之间必须要能够互相修改对方的数据,但是其他组的组员则不能看到本组自己的文件内容,此时该如何是好?

在linux下面这样的限制是很简单的,可以进行简单的文件权限设置,就能限制非自己团队(也就是用户组)的其他人不能够浏览内容,而且也可以让自己的团队成员可以修改你所创建的文件。同时,如果你自己还有私人隐密的文件,仍然可以设置成让自己的团队成员也看不到自己的文件数据。

另外,如果teacher这个账号是projecta与projectb这两个用户组的老师,他想要同时查看两者的进度,因此需能够进入这两个用户组的权限时,你可以设置teacher这个账号,同时支持projecta与projectb这两个用户组,也就是说:每个账号都可以有多个用户组的支持。

举例类比

这样说或许你还不容易理解这个用户与用户组的关系吧?没关系,我们可以使用目前“家庭”的观念来进行讲解。假设有一家人,家里只有三个兄弟,分别是王大毛,王二毛与王三毛3个人,而这个家庭是登记在王大毛名下的。所以“王大毛家有3个人,分别是王大毛,王二毛与王三毛”,而且这3个人都有自己的房间,并且共同拥有一个客厅。

用户的意义

由于这3个人各自拥有自己的房间,所以王二毛虽然可以进入王三毛的房间,但是王二毛不能翻王三毛的抽屉,因为抽屉里面可能有王三毛自己私人的东西,例如:情书,日记等,这是“私人的空间”,所以当然不能让王二毛随便动了。

用户组的概念

由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机,翻阅报纸,坐在沙发上面发呆等。反正只要是在客厅的东西,三兄弟都可以使用,因为大家都是一家人嘛。
这样比喻应该清楚了吧? 那个“王大毛家” 就是所谓的“用户组”,至于三兄弟就是分别为3个“用户”,而这3个用户是在同一个用户组里面的。而3个用户虽然在同一用户组内,但是我们可设置“权限”,好让某些用户个人的信息不被用户组的拥有者查询,以保留“私人的空间”。而设置用户组共享,则可让大家共同分享。

其他人的概念

比如有个人叫张小猪,他是张小猪家的人,与王家没有关系。这个时候除非王家认识张小猪,然后开门让张小猪进入王家,否则张小猪永远没有办法进入王家,更不要说进到王二毛的房间了。不过,如果张小猪通过关系认识了王二毛,并且跟王二毛成为好朋友,那么张小猪就可以通过王二毛进入王家。那个张小猪就是所谓的“其他人,Others”

图示

因此我们就可以知道在Linux里面,任何一个文件都具有“User, Group及Others”3种身份的权限,如下图所示
[一天几个linux命令] 用户与用户组

  • 我们以王二毛为例,“王三毛”这个文件的所者者为王三毛,他属于王大毛,他属于王大毛这个用户组,而张小猪相对于王二毛,则只是一个“其他人(others)”而已。
  • 不过这里有个特殊的人物要来介绍,那就是”万能的天神“。这个天神具有无限的神力,所以他可以到达任何他想要去的地方,那个人在Linux系统中的身份是”root”,所以要小心。那个root可是“万能的天神”
  • 无论如何,“用户身份”与该用户所支持的“用户组”概念,在Linux的世界里面是相当重要的,它可以帮助你让你的多任务Linux环境变得更容易管理。

Linux用户身份与用户组记录的文件

一般情况下所有系统上的帐号都是记录在/etc/passwd这个文件内。

个人的密码则是记录在/etc/shadow这个文件下。

linux所有的组名都记录在/etc/group内

这3个文件可以说是linux系统里面账号、密码、用户组信息的集中地。不要随便删除这3个文件

参考文献

绝大部分参考《鸟哥的私房菜-基础学习篇》