这里只是写一些自己的理解罢了。
首先,为什么要给文件(或目录)设定属性。
举个例子:你有份密信,而你又不希望,被别人看到的话,你会怎么做了?
这个嘛。想都不用想,保存起来,最好,是把它放进保险箱里,其钥匙随身细带。
思考:把这个情景放进计算机里面,又会该如何做呢?
就是设立一些属性,来进行区别。因为,计算机里面的用户不止一个,而你可能今天建立一个用户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
浙公网安备 33010602011771号