Linux文件及其权限

一、文件权限

第一列就代表了文件的详细文件权限,让我们来单独看一下这一列:

可以把权限看成4个部分,如下:

d rwx rwx rwx

文件类型 所有者权限 所有者同组用户权限 其他用户权限

第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备;

234个字符表示所有者权限,567个字符表示所有者同组用户权限,8910为其他用户权限:

r代表可读(read    其值是4

w代表可写(write    其值是2

x代表可执行(execute  其值是1

-代表没有相应权限    其值是0

那么如前面示例的anaconda-ks.cfg文件的权限是’ -rw-------  -(不是目录,是文件) rw-(4+2) ---(0+0+0) ---(0+0+0),其权限就是600 (应该读为六..零而不是六百!)

log1.zip文件权限是-rw-r--r--就相应是644   -(不是目录,是文件) rw-(4+2) ---(4+0+0) ---(4+0+0)

test是目录,drwxr-xr-x的权限应该是755   -(是目录) rwx(4+2+1) r-x(4+0+1) r-x(4+0+1)

 

二、修改权限

用户可以利用Linux系统提供的命令来修改权限属性等

chmod命令来重新设定不同的访问权限

chown命令来更改某个文件或目录的所有者

chgrp命令来更改某个文件或目录的用户组

示例:

chmod 777 abc.zip     ///abc.zip的属性设置为777

chown hao32 abc.zip  ///abc.zip的所有者设置为hao32,hao32必须为系统中的用户

chgrp hao32 abc.zip  ///abc.zip的用户组设置为hao32

 

三、用户与文件的关系

用户和文件的关系只有2种, 拥有和不拥有。组和文件的关系只有2种,拥有和不拥有。用户和组的关系只有2种, 属于和不属于

  将这三种关系叠加,用户和文件的最终关系可以归纳为3

  1,用户拥有该文件

  2,用户属于某个组, 某个组拥有该文件(即用户通过属于某组来拥有该文件)

  3,用户不拥有该文件

  而在文件的文件头里,则存储了3组信息分别对应上面3类关系

  第一组存放拥有该文件的用户的的权限。第二组存放拥有该文件的组的权限,(所有属于该组的所有成员都获得此权限)。第三组存放所有不拥有该文件的用户(等于所有用户减去以上2类用户)所获得权限。

  非常微妙的是,你可以让第三组的权限大于第一,第二组,也就是不用拥有该文件的用户的权限反而更大。(评论:当我想通了这层关系以后,很感叹IT前辈们的超凡智慧,这样的设计具有非常好的对称性,拥有未必是好事,不拥有可能是种幸福。人生何尝不是如此呢?)

  下面要说明一下权限

  权限一共有三种读(缩写为r),写(缩写为w),执行(缩写为x)。读和写很好理解,执行的话当然只对能执行的文件才有效果。权限相对文件夹来说意义略有不同。比如如果你拥有对某目录的执行权限,你才能 cd 到某目录,而如果你没有读权限,你即使cd到了某目录,你也不能ls

  在实践为了省事,我们一般都会用上所有三种权限,所以初学者只要知道有这么回事情就可以了。结合用户(组),权限,文件,我们用一个命令 ls -l 就能显示出三者之间的关系

  下面是一个例子

  显示readme.txt的权限信息

  r-x-w-rw- tom admin readme.txt

  上面的r-x-w-rw-,每3个字符为一组,分别对应用户,组,其他用户,-表示无此权限。用户(缩写为u)的权限:是读(r)和执行(x)组(缩写为g)的权限:是写(w)。其他用户(缩写为o)的权限:是读(r)和写(w)。用户tom 拥有该文件

admin拥有该文件。任何用户登录以后根据以上设置就可以获得自己相应的权限。修改权限也很简单,比如要给g添加权限读(r)和执行权限(x)就是:

  chmod g+rx 文件名 ---加号表示添加权

  要取消其他用户的写(w)权限

  chmod g-w 文件名 ---减号表示取消权限

  在实际的应用当中, 我们一般会用应用程序的名字来设置组名,比如在我的系统中就有mysql组,mongdb组。(评论:这里再引用一下最聪明的物理学家兼哲学家爱老的名言

  Make everything as simple as possible, but not simpler

                                                             Albert Einstein

  我对这句名言的翻译也很simple,就是“简约不简单”,Linux这种权限系统的精妙设计很容易让人联想到人体的DNA系统,只有四种碱基,确可以演化出人体这么复杂而有效的系统。而反观Windows系统,真是无奈呀。用户的电脑居然可以成为QQ360的战场,用户还没有任何证据来证明谁是谁非。这到了Linux系统上,在这么简洁的安全机制下是根本不可能的事呀)

  

最后来谈一谈 Linux的三级帮助系统

  Linux的帮助系统非常有特色。如果能熟练使用帮助系统,加上谷歌学习法,自学就会变得非常轻松,第一种是迷你型帮助,这种帮助篇幅最短,最精炼,多用在想不起某个命令的具体参数,命令用法如下

  命令 help,比如 ls help

  第二种是中型帮助,这种帮助篇幅较长,说明详细,多用在象详细了解某个命令的来龙去脉,命令用法如下

  man 命令 --------man是(manual的缩写),比如 man cd

  第三种是大型帮助, 这种帮助篇幅最长,有的可能是一本书, 命令用法如下

  info 命令,比如 info rm

  Linux学习一定要自己多磨练,才能真正掌握。Easy come easy go 任何很容易学会的知识和技术,多半都很廉价(就是工资很低的意思)

  PS. 有网友希望推荐关于Linux深入浅出的书籍,我看过多本原版书,不过大多数的知识还是靠自己实践,和谷歌来的。很多Linux知识可能是在学习别的东西的时候获得,比如配置Apache的时候,就会多了解一些symbolic link的含义。很多东西要磨练以后才可能明白真正的内涵。

posted @ 2011-09-21 15:43  道-法-自-然  阅读(212)  评论(0编辑  收藏  举报