这里只是写一些自己的理解罢了。

首先,为什么要给文件(或目录)设定属性。

举个例子:你有份密信,而你又不希望,被别人看到的话,你会怎么做了?

这个嘛。想都不用想,保存起来,最好,是把它放进保险箱里,其钥匙随身细带。

思考:把这个情景放进计算机里面,又会该如何做呢?

就是设立一些属性,来进行区别。因为,计算机里面的用户不止一个,而你可能今天建立一个用户a,明天建立一个用户b,如果你没有设定相关的文件或目录属性的话,这是很危险的。

理解了,文件或目录设定属性的必要之后,想想看,在linux里面的属性中有三组,owner   group   other 。这时候,又有问题出现,为什么需要三组,而不是两组,即owner和other。因为相对你而言,其它的任何东西,包括事物或人,都是other。但这里却是三组呢?

理解这个问题,我是利用管理的概念。

假设,用户a对文件A可以进行增删改查的操作,用户b对文件A也可以进行增删改查的操作,同样的,用户c也是一样。这样,日后,又是又有新的用户加进来,你可以想象,这个维护是多么的难。因此,开发者,就引入了组group的概念。即对文件A设定了相关的属性,这样,只要用户是我组内的成员,就会享有我的所有属性。这样管理起来就简单多了。

具体的操作,在linux下,使用命令ll或者ls -l就可以看到文件或目录的属性了。

 

-rw-------    1 root     root        12447 Feb 14 23:22 .bash_history 
-rw-r--r--    1 root     root           24 Jun 11  2000 .bash_logout 

 

 就可以看到了。每一组有三个属性,分别为r w x(其中r为读 w为写 x为可执行的意思)。对r w的理解,可以从字面的意思就可以进行理解。但是x可执行呢?可能有点难度。

其实,也不难。在windows中。一个文件是否可以执行,取决于文件的后缀名。如exe com bat 等等。但是,在liunx呢,文件是否可以执行,则是由x是否被设立有关。

(当然,为了区分文件的类型,我们一般会加上文件的后缀名,如.php .sh等等)

从上述代码的第一栏,共有十位,其中第一位为文件的类型,如l==》文件 d==>目录等等。剩下的九位就是owner group以及other的属性了。有则代表有这个属性,没有就是没有。我们也可以通过一些命令如chown chmod chgrp等命令来修改相应的属性以及所属的用户和组。

这里,我就有了一个问题,我们知道从文件的所属情况,可以来限制其它用户的操作。但是以下的文件,让我感到有点奇怪

/usr/bin/passwd 和/etc/shadow。我们可以通过ll命令来查看

[test@test test]$ ls -l /usr/bin/passwd /etc/shadow  
-r-s--x--x    1 root     root        13476 Aug  7  2001 /usr/bin/passwd  
-rw-------    1 root     root         2423 Jun 25 14:29 /etc/shadow  

首先,文件/usr/bin/passwd为什么在owner组的属性中有一个s的属性。从它的所属来看这个文件是属于root的。普通用户也可以执行。而且成功了。可以成功地修改自己的密码,这是怎么回事呢?

第一,在/usr/bin/passwd文件中,other有x的权限==》这就意味着,我们可以对其进行执行。

第二,/etc/shadow文件中,owner有rw的权限==》这就意味着,可以对文件进行读写。

但是,可执行和读写毕竟不一样啊。是不是,other在执行/usr/bin/passwd命令,它有root的权限,这样才可以对/etc/shadow进行修改。答案,是这样的。

另一个问题,查看/发现tmp目录的属性

[test@test test]$ ls -l /  
drwxrwxrwt    2 root     root         4096 Jul 18 13:08 tmp  

 other中居然会有一个t的属性。后来,通过,以root用户登录,在tmp目录中建立目录a,设定目录a的权限为777;又以test用户登录,在tmp中,试图删除目录a,发现,出现警告的提示。但是相反这可以。由此,可以这样的理解这个属性t。文件或者目录只有owner或者root才有可以删除。

这个两个问题就是,文件的UID GID Sticky bit的属性。w-------    1 root     root        12447 Feb 14 23:22 .bash_history
-rw-r--r--    1 root     root           24 Jun 11  2000 .bash_logout