日期:2014-05-16  浏览次数:20731 次

鸟哥linux—— 第六章、Linux 的文件权限与目录配置
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php
一、Linux 用户身份与群组记录的文件

在我们Linux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有那个root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的组名都纪录在/etc/group内

二、linux文件属性

[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          ]
[  权限  ][连结][拥有者][群组][文件容量][  修改日期 ][      檔名        ]
?
  1. 第一栏代表这个文件的类型与权限(permission):

文件的类型与权限之内容

  • 第一个字符代表这个文件是『目录、文件或链接文件等等』:

    • 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
    • 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
    • 若是[ l ]则表示为连结档(link file);
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
  • 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    • 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
    • 第二组为『同群组的权限』;
    • 第三组为『其他非本群组的权限』。

    ?

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

3、第三栏表示这个文件(或目录)的『拥有者账号』

4、第四栏表示这个文件的所属群组

5、第五栏为这个文件的容量大小,默认单位为bytes

6、第六栏为这个文件的建档日期或者是最近的修改日期

7、第七栏为这个文件的档名

注:如果一个文件权限中[r--]虽然有r ,但是由于没有x的权限,因此此权限下的使用者,并不能进入此目录

?三、改变文件属性与权限

  • chgrp :改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

[root@www ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录
     都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@www ~]# chgrp users install.log
[root@www ~]# ls -l
-rw-r--r--  1 root users 68495 Jun 25 08:53 install.log
[root@www ~]# chgrp testing install.log
chgrp: invalid group name `testing' <== 发生错误讯息啰~找不到这个群组名~
?

EXAMPLES:
?????? chgrp staff /u
????????????? Change the group of /u to "staff".
?????? chgrp -hR staff /u
????????????? Change the group of /u and subfiles to "staff".


[root@www ~]# chown [-R] 账号名称 文件或目录
[root@www ~]# chown [-R] 账号名称:组名 文件或目录
选项与参数:
-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更

范例:将install.log的拥有者改为bin这个账号:
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  use