Linux档案属性与目录配置


Linux的档案属性与群组,是linux的基础里面的基础,重中之重


使用者与群组 
初次接触 Linux 的朋友大概会觉得很怪异,怎么『Linux 有这么多使用者,还分什么群组,有什么用?』。这个『使用者与群组』的功能可是相当健全而好用的一个安全防护呢!怎么说呢?由于 Linux 是个多人多工的系统 ( 已经提过若干次啰! ),因此可能常常会有多人同时使用这部主机来进行工作的情况发生,为了考虑每个人的隐私权,因此,这个『档案拥有者』的角色就显的相当的重要了!例如当你将你的e-mail情书转存成档案之后,放在您自己的家目录,您总不希望被其他人看见自己的情书吧?这个时候,你就把该档案设定成『只有档案拥有者,就是我,才能看与修改这个档案的内容』,那么即使其他人知道你有这个相当『有趣』的档案,不过由于您有设定适当的权限,所以其他人自然也就无法知道该档案的内容啰! 

那么群组呢?为何要设定档案还有所属的群组?其实,群组最简单的功能之一,就是当您在团队开发资源的时候最有用啦!举个例子来说好了,假如在我的主机上面有两个团体,这第一个团体名称为 testgroup 而他的成员是 test1, test2, test3 三个,第二个团体名称为 treatgoup 他的团员为 treat1, treat2, treat3,这两个团体之间是互相有竞争性质的,但是却又要缴交同一份报告,然而每组团员又需要同时可以修改自己的团体内任何人所建立的档案,且不能让非自己团体以外的人看到自己的档案内容!这个时候怎么办?呵呵!在 Linux 底下可就很简单啦!我可以经由简易的档案权限设定,就能限制非自己团队( 亦即是群组啰 )的其他人不能够阅览内容啰!而且亦可以让自己的团队成员可以修改我所建立的档案!同时,如果我自己还有私人隐密的文件,仍然可以设定成让自己的团队成员也看不到我的档案资料?很方便吧!另外,如果 teacher 这个帐号是 testgroup 与 treatgroup 这两个群组的老师,他想要同时观察两者的进度,因此需要两边的群组都能够进去观看,这个时候,您可以设定 teacher 这个帐号,『同时支援 testgroup 与 treatgroup 这两个群组!』,也就是说,每个人都可以有多个群组的支援呢! 
这样说或许你还不容易理解这个使用者与群组的关系吧?没关系,我们可以使用目前『家庭』的观念来进行解说喔!假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人,而这个家庭是登记在王大毛的名下的!所以,『王大毛家有三个人,分别是王大毛、王二毛与王三毛』,而且这三个人都有自己的房间,并且共同拥有一个客厅喔! 
·由于王家三个人各自拥有自己的房间,所以,王二毛虽然可以进入王三毛的房间,但是二毛不能翻三毛的抽屉喔!那样会被三毛 K 的!因为抽屉里面可能有三毛自己私人的东西,例如情书啦,日记啦等等的,这是『私人的空间』,所以当然不能让二毛拿啰! 
·由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机啦、翻阅报纸啦、坐在沙发上面发呆啦等等的!反正,只要是在客厅的玩意儿,三兄弟都可以使用喔!因为大家都是一家人嘛! 
这样说来应该有点晓得了喔!那个『王大毛家』就是所谓的『群组』啰,至于三兄弟就是分别为三个『使用者』,而这三个使用者是在同一个群组里面的喔!而三个使用者虽然在同一群组内,但是我们可以设定『权限』,好让某些使用者个人的资讯不被群组的所有人查询,以保有个人『私人的空间』啦!而设定群组共享,则可让大家共同分享喔!
好了,那么今天又有个人,叫做张小猪,他是张小猪家的人,与王家没有关系啦!这个时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家,更不要说进到王三毛的房间啦!不过,如果张小猪透过关系认识了三毛,并且跟王三毛成为好朋友,那么张小猪就可以透过三毛进入王家啦!呵呵!没错!那个张小猪就是所谓的『其他人, Others 』啰!因此,我们就可以知道啦,在 Linux 里面,任何一个档案都具有『User, Group 及 Others』三个权限!我们可以将上面的说明以底下的图示来解释:
 
不过,这里有个特殊的人物要来介绍的,那就是『万能的天神』!这个天神具有无限的神力,所以他可以到达任何他想要去的地方,呵呵!那个人在 Linux 系统中的身份代号是『 root 』啦!所以要小心喔!那个 root 可是『万能的天神』喔! 
无论如何,『使用者身份』,与该使用者所支援的『群组』概念,在 Linux 的世界里面是相当的重要的,他可以帮助您让您的多工 Linux 环境变的更容易管理!更详细的『身份与群组』 设定,我们将在帐号管理再进行解说。底下我们将针对档案系统与档案权限来进行说明。
Linux 档案属性: 
大致了解了 Linux 的使用者与群组之后,接着下来,我们要来谈一谈,那么这个档案的权限要如何针对这些所谓的『使用者』与『群组』来设定该档案的权限呢?这个部分是相当的重要的,尤其对于初学者来说,因为档案的权限与属性是学习 Linux 的一个相当重要的关卡,如果没有这部份的概念,那么您将老是听不懂别人在讲什么呢!尤其是当您在您的萤幕前面出现了『Permission deny』的时候,不要担心,『肯定是权限设定错误』啦!呵呵!好了,闲话不多聊,赶快来瞧一瞧先: 
嗯!既然要让你了解 Linux 的档案属性,那么有个重要的也是常用的指令就必须要先跟你说啰!那一个?!就是『 ls 』这一个 list 档案的指令啰!在你以 root 的身份登入 Linux 之后,下达『ls -al 』看看,会看到底下的几个咚咚: 
[root@tsai root]# ls -al total 64 drwxr-x---  4 root   root     4096 Feb 14 22:02 . drwxr-xr-x  23 root   root     4096 Feb 16 13:35 .. -rw-r--r--  1 root   root     1210 Feb 10 06:03 anaconda-ks.cfg -rw-------  1 root   root    12447 Feb 14 23:22 .bash_history -rw-r--r--  1 root   root      24 Jun 11 2000 .bash_logout -rw-r--r--  1 root   root     234 Jul 6 2001 .bash_profile -rw-r--r--  1 root   root     217 Feb 9 22:06 .bashrc -rw-r--r--  1 root   root     210 Jun 11 2000 .cshrc drwx------  2 root   root     4096 Feb 14 21:54 .gnupg -rw-------  1 root   root      8 Feb 14 22:05 .mysql_history drwx------  2 root   root     4096 Feb 10 00:44 .ssh -rw-r--r--  1 root   root     196 Jul 11 2000 .tcshrc -rw-r--r--  1 root   root     1126 Aug 24 1995 .Xresources 第一栏   二 三    四      五   六    七 [档案属性][档案数][拥有者][所有者群组][大小][建档日期][档名]
ls 是『list』的意思,与在早期的 DOS 年代的 dir 类似功能。而参数『-al』则表示列出所有的档案(包含隐藏档,就是档名前面第一个字元为 . 的那种档案)。如上所示,在你第一次以 root 身份登入 Linux 时,如果你输入指令后,应该有上列的几个东西,先解释一下上面七个栏位个别的意思: 
 
1. 第一栏代表这个档案的属性:这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个属性:
 
1.
o第一个属性代表这个档案是『目录、档案或连结档』: 
§当为[ d ]则是目录,例如上表的第 11 行; 
§为[ - ]则是档案,例如上表的第 5 行; 
§若是[ l ]则表示为连结档(link file); 
§若是[ b ]则表示为装置档里面的可供储存的周边设备; 
§若是[ c ]则表示为装置档里面的序列埠设备,例如键盘、滑鼠。 
o接下来的属性中,三个为一组,且均为『rwx』的三个参数的组合。其中,[ r ]代表可读、[ w ]代表可写、[ x ]代表可执行: 
§ 第一组为『所有人的权限』,以第五行为例,该档案的所有人可以读写,但不可执行; 
§第二组为『同群组的权限』; 
§第三组为『其他非本群组的权限』。 
范例:若有一个档案的属性为『-rwxr-xr--』,简单的可由下面说明之: 
[-][rwx][r-x][r--] 1 234 567 890   1 为:代表这个档名为目录或档案(上面为档案)   234为:拥有人的权限(上面为可读、可写、可执行)   567为:同群组使用者权限(上面为可读可执行)   890为:其他使用者权限(上面为仅可读)
上面的属性情况代表一个档案、这个档案的拥有人可读可写可执行、但同群组的人仅可读与执行,非同群组的使用者仅可读的意思! 
o除此之外,需要特别留意的是 x 这个标号!若档名为一个目录的时候,例如上表中的 .ssh 这个目录: 
drwx------  2 root   root     4096 Feb 10 00:44 .ssh 
可以看到这是一个目录,而且只有 root 可以读写与执行。但是若为底下的样式时,请问非 root 的其他人是否可以进入该目录呢? 
drwxr--r--  2 root   root     4096 Feb 10 00:44 .ssh
咦!似乎好象是可以喔!因为有可读[ r ]存在嘛!『错!』答案是非 root 这个帐号的其他使用者均不可进入 .ssh 这个目录,为什么呢?因为 x 与 目录 的关系相当的重要,如果您在该目录底下不能执行任何指令的话,那么自然也就无法执行 ls, cd 等指令,所以啰,也就无法进入了,因此,请特别留意的是,如果您想要开放某个目录让一些人进来的话,请记得将该目录的 x 属性给开放呦! 
o另外,你也必须要更加的小心的是,在 Windows 底下一个档案是否具有执行的能力是藉由『附档名』来执行的,例如:.exe, .bat, .com 等等,但是在 Linux 底下,我们的档案是否能执行,则是藉由是否具有 x 这个属性来决定的!所以,跟档名是没有绝对的关系的