位置:海鸟网 > IT > linux/Unix >

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 系统中,有几个目录是特别需要注意的,以下提供几个需要注意的目录,以及预设相关的用途:

  o /etc:这个目录相当重要,如前所述,你的开机与系统资料档案均在这个目录之下,因此当这个目录被破坏,那你的系统大概也就差不多该死掉了!而在往后的文件中,你会发现我们常常使用这个目录下的 /etc/rc.d/init.d 这个子目录,因为这个 init.d 子目录是开启一些 Linux 系统服务的 scripts (可以想成是批次档 )的地方。而在 /etc/rc.d/rc.local 这个档案是开机的执行档,有点像是旧 Windows 系统下的 autoexec.bat 及 config.sys 档。所以,如果你有需要在开机载入的服务或执行档案,可以写在这个档案的最后一行,则开机时就会自动帮你载入执行档了!

  o /bin, /sbin, /usr/bin, /usr/sbin:这是系统预设的执行档的放置目录,例如 root 常常使用的 userconf, netconf, perl, gcc, c++ 等等的资料都放在这几个目录中,所以如果你在提示字元下找不到某个执行档时,可以在这四个目录中查一查!其中, /bin, /usr/bin 是给系统使用者使用的指令,而 /sbin, /usr/sbin 则是给系统管理原使用的指令!

  o /usr/local:这是系统预设的让你安装你后来升级的套件的目录。例如,当你发现有更新的 Web 套件(如 Apache )可以安装,而你又不想以 rpm 的方式升级你的套件,则你可以将 apache 这个套件安装在 /usr/local 底下。安装在这里有个好处,因为目前大家的系统都是差不多的,所以如果你的系统要让别人接管的话,也比较容易上手呀!也比较容易找的到资料喔!因此,如果你有需要的话,通常我都会将 /usr/local/bin 这个路径加到我的 path 中。

  o /home:这个是系统将有帐号的人口的家目录设置的地方。

  o /var:这个路径就重要了!不论是登入、各类服务的问题发生时的记录、以及常态性的服务记录等等的记录目录,所以当你的系统有问题时,就需要来这个目录记录的档案资料中察看问题的所在啰!而 mail 的预设放置也是在这里,所以他是很重要的喔!

  o /usr/share/man, /usr/local/man:这两个目录为放置各类套件说明档的地方,例如你如果执行 man man,则系统会自动去找这两个目录下的所有说明档,如果有相同的资料就会叫出来给你幽!

  ·一般主机可能会分配的磁碟情况

  好了,知道了 Linux 的档案权限,目前也知道了各个档案内可能摆放的资料是什么了,那么再来说说你的目录与磁碟分割之间的相关性。通常一般的大型主机都不会将所有的资料放置在一个磁碟中(就是只有一个『 / 』根目录),这有几个目的:

  1. 安全性考量:你的系统通常是在 /usr/ 中,而个人资料则可能放置在 /home 当中,至于一些开机资料则放置在 /etc 当中。如果将所有的资料放在一起,当你的系统不小心被骇客破坏,或者不小心自己砍了一个小东西,则所有的咚咚也都跟着不见了.....这对于我们市井小民或许无所谓,再安装一次就好了,但是对于一些大型企业可不行这样!因此需要将资料分别放置于不同的磁碟中,会比较保险些。

  2. 便利性:如果你需要升级你的系统的话,是否需要重新 format 安装呢?有些资料例如 /home 里面的资料为个人用户的资料,似乎与系统无关!所以如果你将这些资料分别放置于不同的磁碟,则你要升级或者进行一些系统更动时,将比较有弹性。

  你或许可以将你的系统做成这样的 partition 分布:

  /

  /boot

  /usr

  /home

  /var

  这是比较常见的磁碟分布情况,其中,

  o / 根目录可以分配约 256 MB 以内;

  o /boot 大概在 50 MB 就可以了,因为开机档案并不大;

  o /var 就至少需要 1GB 以上,因为你的 mail 、 proxy 预设的储存区都在这个目录中,除非你要将一些设定改变!

  o /home 与 /usr 通常是最大的,因为你所安装的资料都是在 /usr/ 当中,而用户资料则放置在 /home 当中,因此通常书上都会建议你将所剩下的磁碟空间平均分配给这两个目录说!

  无论如何,每部主机的环境与功能用途都不相同,自然其磁碟的分配就会不太一样,因此,上面的设定您就看看就好,等您将整个网页内容全 K 完了,那么大概就知道怎样设定您的主机最恰当啦!接着下来,我们来谈一谈简单的档案与目录的管理了!

  本章习题练习 ( 要看答案请将滑鼠移动到『答:』底下的空白处,按下左键圈选空白处即可察看 )

  ·早期的 Unix 系统档名最多允许 14 个字元,而新的 Unix 与 Linux 系统中,档名最多可以容许几个字元?

  答:

  255个字元

  ·当一个档案属性为 –rwxrwxrwx 则表示这个档案的意义为?

  答:

  任何人皆可读取、可写入亦可删除。

  ·我需要将一个档案的属性改为 –rwxr-xr-- 请问该如何下达指令?

  答:

  chmod 754 filename 或 chmod u=rwx,g=rx,o=r filename

  ·若我需要更改一个档案的拥有者与群组,该用什么指令?

  答:

  chown, chgrp

  ·Linux 传统的档案系统为何?此外,常用的 Journaling 档案格式有哪些?

  答:

  ext2,

  Journaling 有 ext3 及 Reiserfs 等

  ·请问底下的目录与主要放置什么资料

  /etc/:

  /etc/rc.d/init.d:

  /boot:

  /usr/bin, /bin:

  /usr/sbin, /sbin:

  /dev:

  /var/log:

  答:

  /etc/:几乎系统的所有设定档案均在此,尤其 passwd, shadow

  /etc/rc.d/init.d:系统开机的时候载入服务的 scripts 的摆放地点

  /boot:开机设定档,也是预设摆放核心 vmlinuz 的地方

  /usr/bin, /bin:一般执行档摆放的地方

  /usr/sbin, /sbin:系统管理员常用指令集

  /dev:摆放所有系统装置档案的目录

  /var/log:摆放系统登录档案的地方

  ·若一个档案的档名开头为『 . 』,例如 .bashrc 这个档案,代表什么?另外,如何显示出这个档名与他的相关属性?

  答:

  有『 . 』为开头的为隐藏档,需要使用 ls –a 这个 –a 的参数才能显示出隐藏档案的内容,而使用 ls –al 才能显示出属性。