1.文件拥有者
初次接触Linux的朋友大概会觉得很怪异,怎么“Linux有这么多用户,还分什么用户组,有什用呢?”,这个“用户与用户组”的功能可是相当健全而且好用的一个安全防护措施。
怎么说呢?由于Linux是个多人多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作的情况发生,为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个文件拥有者的角色就显得相当重要,
例如当你将你的email情书转存成文件之后,放在你自己的家目录,你总不希望被其他人看见的己的情书吧?这个时候,你就把该文件设置成“只有文件拥有者,就是我,才能看与修改这个文件的内容”,那么即使其他人知道你有这个相当有趣的文件,不过由于你有设置适当的权限,所以其他人自然也就无法知道该文件的内容。
2.用户组概念
那么用户组呢?为何要配置文件还有所属的用户组?其实,用户组最有用的功能之一,就是当你在团队进行协同工作的时候。
举例来说,假设有两组实习生在我的主机里面,
- 第一个实习组别为projecta里面的成员有class1、class2、class3三个;
- 第二个实习组别为projectb,里面的成员有class4、class5, class6。
这两个实习组之间具有竞争性质,但却要提交同一份报告。每组的组员之间必须要能够互相修改对方的数据,但是其他组的组员则不能看到本组自己的文件内容,此时该如何是好?
在Linux下面这样的限制很简单。我可以经由简易的文件权限设置,就能限制非自己团队(亦即是用户组)的其他人不能够阅览内容,而且亦可让自己的团队成员可以修改我所建立的文件。同时,如果我自己还有私人隐密的文件,仍然可设置成让自己的团队成员也看不到我的文件,很方便吧!
另外,如果teacher 这个账号是projecta与projectb是负责这两个实习组的老师,它想要同时观察两者的进度,因此需要能够进入这两个用户组的权限时,你可以设置teacher这个账号,同时支持projecta与projectb 这两个用户组,也就是说:每个账号都可以有多个用户组的支持。
这样说或许你还不容易理解这个用户与用户组的关系吧?没关系,我们可以使用目前“家庭”的概念来进行说明。
假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人,而这个家庭是登记在王大毛的名下。所以,“王大毛家有三个人,分别是王大毛、王二毛与王三毛”,而且这三个人都有自己的房间,并且共同拥有一个客厅。
用户的意义:由于王家三人各自拥有自己的房间,所以,王二毛虽然可以进入王三毛的房间,但是二毛不能翻三毛的抽屉,那样会被三毛打的。因为抽屉里面可能有三毛自己私人的东西,例如情书,日记等,这是私人的空间,所以当然不能让二毛拿。
用户组的概念:由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机、看报纸、坐在沙发上面发呆等。反正,只要是在客厅的玩意儿,三兄弟都可以使用,因为大家都是一家人嘛。
享,则可让大家共同分享。
这样说来应该有点了解了吧!那个“王大毛家”就是所谓的用户组,至于三兄弟就是分别为三个用户,而这三个用户是在同一个用户组里面的。而三个用户虽然在同一用户组内,但是我们可以设置权限,好让某些用户个人的信息不被用户组的拥有者查询,以保有个人私人的空间,而设置用户组共享,则可让大家共享
3.其他人的概念
好了,那么今天又有个人,名叫做张小猪,它是张小猪家的人,与王家没有关系。这个时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家,更不要说进到王三毛的房间。
不过,如果张小猪通过关系认识了三毛,并且跟王三毛成为好朋友,那么张小猪就可以通过三毛进入王家。呵呵,没错,那个张小猪就是所谓的“其他人(Others)'。
因此,我们就可以知道,在Linux里面,任何一个文件都具有用户(User)、所属群组(Group)及其他人(Others)三种身份的个别权限,我们可以将上面的说明以下面的图来解释:
我们以王三毛为例,王三毛这个“文件”的拥有者为王三毛,它属于王大毛这个用户组,而张小猪相对于王三毛,则只是一个其他人(Others)而已。
不过,这里有个特殊的人物要来介绍,那就是“万能的天神”。这个天神具有无限的神力,所以它可以到达任何它想要去的地方,呵呵,那个人在Linux系统中的身份代号是root。所以要小心,这个root可是“万能的天神”。
无论如何,用户身份与该用户所支持的用户组概念,在Linux的世界里面是相当得重要,它可以帮助你让你的多任务Linux环境变得更容易管理。更详细的身份与用户组设置,我们将在第13章账号管理再进行说明,下面我们将针对文件系统与文件权限来进行说明。
我们再举一个例子
- (1)你在Facebook注册一个账号,这个账号可以类比为Linux的账号;
- (2)你可以新增一个社团,这个社团的隐私权是可以由您自己指定的,看是要公开还是要隐藏,这就可以类比为Linux的用户组概念,这个用户组的权限可以自己设置;
- (3)那么其他在Facebook注册的人,没有加入你的社团,它就是Linux上所谓的“其他人”。最后,在Facebook上面的每一条留言,就可以想成Linux下面的“文件”。
那么上面谈到的用户组有啥帮助呢?
想想看,你在Facebook上面,你的StudyArea社团是隐藏的,你想让dmtsai可以进来查看每一个留言(想成是文件),最简单的做法是什么?对,让dmstai加入这个社团即可,没错,只要让Linux某个账号加入某个用户组,该账号就可以使用该用户组能够读写的资源。每个账号可以加入的用户组个数基本上是没有限制的。
4.Linux用户身份与用户组记录的文件
在我们Linux系统当中,默认的情况下,所有的系统上的账号与一般身份用户,还有那个root的相关信息,都记录在/etc/passwd这个文件内,至于个人的密码则是记录在/etc/shadow这个文件内,此外,Linux所有的组名都记录在/etc/group中。这三个文件可以说Linux系统里面账号,密码,用户组信息的集中地,不要随便删除这三个文件