对Unix文件的属性知识深入讲解

系统 其他OS
我们知道由于不可能为每个用户都单独提供完全独立的Unix文件系统,多用户操作系统必须提供一种安全的访问控制机制。

由于FreeBSD是一个多用户系统,不同的用户对不同的Unix文件就应该有不同的处理权力,通常创建Unix文件的用户就拥有这个文件,成为这个文件的属主。同样,文件也有自己的属组,这是一个文件的两个重要属性。

由于文件的属主和组涉及到对文件的访问控制,因此只有root能更改文件的这两个属性,更改Unix文件属主的命令为chown,更改Unix文件属组的命令为chgrp。

由于不可能为每个用户都单独提供完全独立的Unix文件系统,多用户操作系统必须提供一种安全的访问控制机制,使得用户既能和其他用户共享某些文件,又能保证各个用户的Unix文件不会被非法存取或破坏。

Unix分别针对属主、同组用户和其他用户共三种不同的用户,分别设置了存取控制权限,这个权限分别为:读、写和执行,使用英文字母r(Read)、w(Write)和x(eXecute)来表示。由于对属主、组和其他用户均有这三种权限设置,因此每个Unix文件共有九个权限参数。使用 “ls -l” 命令就能看到Unix文件的权限设置:
 

  1. $ ls -l  
  2. drwx------ 4 user wheel 512 Nov 25 17:23 Mail  
  3. -rw-rw-r-- 1 user wheel 149 Dec 4 14:18 Makefile  
  4. -rwxr-xr-x 1 user wheel 3212 Dec 4 12:36 a.out  
  5. drwxr-xr-x 1 user wheel 512 Dec 14 17:03 bin  
  6. -rw-r--r-- 1 user wheel 143 Dec 4 12:36 hello.c  
  7. drwxr-xr-x 2 user wheel 1024 Oct 16 1997 public_html  
  8. drwxrwxrwx 2 user wheel 512 Jan 3 14:07 tmp 

从上面的例子中,可以看到Unix文件的权限设置在列出的数据的***列中显示,例如文件a.out的属性是-rwxr-xr-x,共显示了十个字母的位置。其中***个位置是用于标识Unix文件的种类,而非权限设置,其余九个位置分别表示三组的三种权限设置。

第二个到第四个位置表示属主的权限分别设置为读、写和执行,第五个到第七个位置设置同组用户的权限,第八个到第十个位置设置其他用户的权限。当指定位置上没有显示对应的权限,而是 “-” ,则表示不允许对应的权限。

因此a.out的权限设置为,对于属主user的权限为读写和执行,对于同组用户为读和执行权限,对于其他用户也是读和执行权限。对于目录来讲,拥有读权限意味着用户可以列出这个目录下的Unix文件内容,写权限使用户可以在这个目录下增、删文件和更改文件名,执行权限保证用户可以使用cd进入这个目录。

ls输出结果的***个位置表示类别,例如 “d” 表示目录, “c” 表示该Unix文件为字符设备文件, “b” 表示为块设备文件, “l” 表示为一个符号连接。

Unix系统内部使用数值来表示这些属性,每一个属性与Unix文件属性中的一个二进制位相对应,如果该存取权限设置了,对应的二进制位就是1,如果该存取权限没有设置,对应的二进制位是0。这样a.out的权限属性rwxr-xr-x 用二进制来表示就是111101101,Unix下常使用八进制的形式表示,这样这个权限是755。

【编辑推荐】

  1. InterNet上常见的Unix系统种类概述
  2. Unix FreeBSD的开发者取得很大成功
  3. Unix系统逐渐商业化趋势的讲解
  4. 关于Unix系统的版权事件讲解
  5. BSD Unix在Unix领域内影响更大
责任编辑:小霞
相关推荐

2010-05-04 09:22:10

Unix文件

2010-05-05 17:46:32

Unix文件系统

2010-04-30 17:38:31

Unix文本

2010-05-05 13:13:55

Unix内核

2010-04-30 13:27:26

Unix cronta

2010-05-05 13:45:21

Unix Telnet

2010-05-04 12:25:28

Unix链接

2010-04-30 13:38:51

Unix at命令

2010-05-06 17:03:49

Unix命令

2010-05-04 16:33:39

Unix系统

2010-05-05 10:44:37

Unix 反引号

2010-05-05 15:02:39

Unix系统

2010-05-05 13:22:29

Unix Shell

2010-04-21 14:29:52

Unix 线程

2010-04-21 12:39:48

Unix 消息队列

2010-04-13 17:52:16

Unix交换区

2010-04-30 18:20:23

Unix系统

2010-05-04 09:45:28

Unix系统

2010-04-30 14:51:23

Unix系统

2010-05-11 18:03:28

点赞
收藏

51CTO技术栈公众号