Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367891
  • 博文数量: 245
  • 博客积分: 10021
  • 博客等级: 上将
  • 技术积分: 3094
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-12 14:51
文章存档

2011年(2)

2009年(152)

2008年(91)

我的朋友

分类: LINUX

2009-01-09 14:30:12



嗯!既然要让你瞭解Linux的档案属性,那么有个重要的也是常用的指令就必须要先跟你说啰!那一个?!就是‘ ls ’这一个察看档案的指令啰!在你以root的身份登入Linux之后,下达‘ ls -al ’看看,会看到底下的几个咚咚:

[root@www ~]# ls -al
total 156
drwxr-x---   4    root   root     4096   Sep  8 14:06 .
drwxr-xr-x  23    root   root     4096   Sep  8 14:21 ..
-rw-------   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg
-rw-------   1    root   root      199   Sep  8 17:14 .bash_history
-rw-r--r--   1    root   root       24   Jan  6  2007 .bash_logout
-rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile
-rw-r--r--   1    root   root      176   Jan  6  2007 .bashrc
-rw-r--r--   1    root   root      100   Jan  6  2007 .cshrc
drwx------   3    root   root     4096   Sep  5 10:37 .gconf      <=范例说明处
drwx------   2    root   root     4096   Sep  5 14:09 .gconfd
-rw-r--r--   1    root   root    42304   Sep  4 18:26 install.log <=范例说明处
-rw-r--r--   1    root   root     5661   Sep  4 18:25 install.log.syslog
[    1   ][  2 ][   3  ][  4 ][    5   ][     6     ][       7          ]
[  权限  ][连结][拥有者][群组][档案容量][  修改日期 ][      档名        ]

Tips:
由于本章后续的chgrp, chown等指令可能都需要使用root的身份才能够处理,所以这里建议您以root的身份登入Linux来学习本章。    

ls是‘list’的意思,重点在显示档案的档名与相关属性。而选项‘-al’则表示列出所有的档案详细的权限与属性 (包含隐藏档,就是档名第一个字元为‘ . ’的档案)。如上所示,在你第一次以root身份登入Linux时, 如果你输入上述指令后,应该有上列的几个东西,先解释一下上面七个栏位个别的意思:

图2.1.1、档案属性的示意图

* 第一栏代表这个档案的类型与权限(permission):

这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字元:(图2.1.1及图2.1.2并无关系)

图2.1.2、档案的类型与权限之内容

    * 第一个字元代表这个档案是‘目录、档案或连结档等等’:

o 当为[ d ]则是目录,例如上表档名为‘.gconf’的那一行;
o 当为[ - ]则是档案,例如上表档名为‘install.log’那一行;
o 若是[ l ]则表示为连结档(link file);
o 若是[ b ]则表示为装置档里面的可供储存的周边设备(可随机存取装置);
o 若是[ c ]则表示为装置档里面的序列埠设备,例如键盘、滑鼠(一次性读取装置)。

    * 接下来的字元中,以三个为一组,且均为‘rwx’ 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

o 第一组为‘档案拥有者的权限’,以‘install.log’那个档案为例, 该档案的拥有者可以读写,但不可执行;
o 第二组为‘同群组的权限’;
o 第三组为‘其他非本群组的权限’。


例题:
若有一个档案的类型与权限资料为‘-rwxr-xr--’,请说明其意义为何?
答:
先将整个类型与权限资料分开查阅,并将十个字元整理成为如下所示:

[-][rwx][r-x][r--]
 1  234  567  890

 1 为:代表这个档名为目录或档案,本例中为档案(-);
234为:拥有者的权限,本例中为可读、可写、可执行(rwx);
567为:同群组使用者权限,本例中为可读可执行(rx);
890为:其他使用者权限,本例中为可读(r)

同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字元,没有该权限就变成减号(-)就是了。

另外,目录与档案的权限意义并不相同,这是因为目录与档案所记录的资料内容不相同所致。 由于目录与档案的权限意义非常的重要,所以鸟哥将他独立到2.3节目录与档案之权限意义中再来谈。

* 第二栏表示有多少档名连结到此节点(i-node):

每个档案都会将他的权限与属性记录到档案系统的i-node中,不过,我们使用的目录树却是使用档名来记录, 因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。 关于i-node的相关资料我们会在第八章谈到档案系统时再加强介绍的。

* 第三栏表示这个档案(或目录)的‘拥有者帐号’

* 第四栏表示这个档案的所属群组

在Linux系统下,你的帐号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个档案所属的群组为projecta,且该档案的权限如图2.1.2所示(-rwxrwx---), 则class1, class2, class3三人对于该档案都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他帐号,对于此档案就不具有任何权限了。

* 第五栏为这个档案的容量大小,预设单位为bytes;

* 第六栏为这个档案的建档日期或者是最近的修改日期:

这一栏的内容分别为日期(月/日)及时间。如果这个档案被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。 如下所示:

[root@www ~]# ls -l /etc/termcap /root/install.log
-rw-r--r-- 1 root root 807103 Jan  7  2007 /etc/termcap
-rw-r--r-- 1 root root  42304 Sep  4 18:26 /root/install.log
# 如上所示,/etc/termcap 为 2007 年所修改过的档案,离现在太远之故;
# 至于 install.log 是今年 (2008) 所建立的,所以就显示完整的时间了。

如果想要显示完整的时间格式,可以利用ls的选项,亦即:‘ls -l --full-time’就能够显示出完整的时间格式了!包括年、月、日、时间喔。 另外,如果你当初是以繁体中文安装你的Linux系统,那么日期栏位将会以中文来显示。 可惜的是,中文并没有办法在纯文字的终端机模式中正确的显示,所以此栏会变成乱码。 那你就得要使用‘LANG=en_US’来修改语系喔!

如果想要让系统预设的语系变成英文的话,那么你可以修改系统设定档‘/etc/sysconfig/i18n’,利用第五章谈到的nano来修改该档案的内容,使LANG这个变数成为上述的内容即可。

    * 第七栏为这个档案的档名

这个栏位就是档名了。比较特殊的是:如果档名之前多一个‘ . ’,则代表这个档案为‘隐藏档’,例如上表中的.gconf那一行,该档案就是隐藏档。 你可以使用‘ls’及‘ls -a’这两个指令去感受一下什么是隐藏档啰!
Tips:
对于更详细的 ls 用法,还记得怎么查询吗?对啦!使用 man ls 或 info ls 去看看他的基础用法去!自我进修是很重要的, 因为‘师傅带进门,修行看个人!’,自古只有天才学生,没有天才老师呦!加油吧!^_^    

这七个栏位的意义是很重要的!务必清楚的知道各个栏位代表的意义!尤其是第一个栏位的九个权限, 那是整个Linux档案权限的重点之一。底下我们来做几个简单的练习,你就会比较清楚啰!

例题:
假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个档案,请说明两个档案的拥有者与其相关的权限为何?

-rw-r--r--  1 root     root          238 Jun 18 17:22 test.txt
-rwxr-xr--  1 test1    testgroup    5238 Jun 19 10:25 ping_tsai

答:

    * 档案test.txt的拥有者为root,所属群组为root。至于权限方面则只有root这个帐号可以存取此档案,其他人则仅能读此档案;

    * 另一个档案ping_tsai的拥有者为test1,而所属群组为testgroup。其中:
          o test1 可以针对此档案具有可读可写可执行的权力;
          o 而同群组的test2, test3两个人与test1同样是testgroup的群组帐号,则仅可读可执行但不能写(亦即不能修改);
          o 至于非testgoup这一个群组的人则仅可以读,不能写也不能执行!


例题:
如果我的目录为底下的样式,请问testgroup这个群组的成员与其他人(others)是否可以进入本目录?

drwxr-xr--   1 test1    testgroup    5238 Jun 19 10:25 groups/

答:

    * 档案拥有者test1[rwx]可以在本目录中进行任何工作;
    * 而testgroup这个群组[r-x]的帐号,例如test2, test3亦可以进入本目录进行工作,但是不能在本目录下进行写入的动作;
    * 至于other的权限中[r--]虽然有r ,但是由于没有x的权限,因此others的使用者,并不能进入此目录!


    * Linux档案权限的重要性:

与Windows系统不一样的是,在Linux系统当中,每一个档案都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在‘资料安全性’上面的。

    * 系统保护的功能:
      举个简单的例子,在你的系统中,关于系统服务的档案通常只有root才能读写或者是执行,例如/etc/shadow这一个帐号管理的档案,由于该档案记录了你系统中所有帐号的资料, 因此是很重要的一个设定档,当然不能让任何人读取(否则密码会被窃取啊),只有root才能够来读取啰!所以该档案的权限就会成为[ -rw------- ]啰!

    * 团队开发软体或资料共用的功能:
      此外,如果你有一个软体开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的档案, 而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup的团队共有三个人,分别是test1, test2, test3,那么我就可以将团队所需的档案权限订为[ -rwxrwx--- ]来提供给testgroup的工作团队使用啰!

    * 未将权限设定妥当的危害:
      再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面乱搞啰! 例如本来只有root才能做的开关机、ADSL的拨接程式、新增或删除使用者等等的指令,若被你改成任何人都可以执行的话, 那么如果使用者不小心给你重新开机啦!重新拨接啦!等等的!那么你的系统不就会常常莫名其妙的挂掉啰! 而且万一你的使用者的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些root的工作!

可怕吧!因此,在你修改你的linux档案与目录的属性之前,一定要先搞清楚, 什么资料是可变的,什么是不可变的!千万注意啰!接下来我们来处理一下档案属性与权限的变更吧!

阅读(1285) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~