我们都知道,在Linux下一切皆文件,可见文件的重要性,那么Linux又是如何管理文件的呢?
Linux下的文件的权限分为三种,可读(r)、可写(w)、可执行(x)。
这里先查看一下/root目录下有哪些文件
[root@localhost ~]# ls -l /root/
total 108
-rw-------. 1 root root 1549 Dec 6 03:54 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Desktop
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Documents
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Downloads
-rw-r--r--. 1 root root 55379 Dec 6 03:54 install.log
-rw-r--r--. 1 root root 10608 Dec 6 03:51 install.log.syslog
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Music
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Pictures
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Public
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Templates
drwxr-xr-x. 2 root root 4096 Dec 6 11:49 Videos
第一列代表文件的类型与权限,第三列和第四列分别代表该文件的属主和属组是谁。
第一列中第一个字符代表文件的类型,比如说[d]代表目录,而[-]代表文件。
接下去的9个字符可以分为3组,分别是文件所有者的权限、组内用户的权限和其它用户的权限。以上面结果中的install.log来说明,它的文件权限为-rw-r--r--.可以看出,它是一个文件,文件所有者对它有读写的权限,而组内其它用户和组外的其它用户对它只有读的权限。
对于文件的权限,这个很容易也很好理解,r就表示可以读取该文件的内容,w表示可以修改该文件的内容,x表示可以执行该文件。
这里重点要讲的是目录的权限,也许对目录的r和w权限还比较好理解,那么x权限又代表什么呢?为了方便理解,这里以一个例子来说明目录的权限。
[root@localhost tmp]# ls -ld dir
drwxr-xr--. 2 root root 4096 Dec 6 00:15 dir
[root@localhost tmp]# ls -l dir/
total 0
-rw-r--r--. 1 root root 0 Dec 6 19:32 test.txt
在/tmp/目录下有个子目录dir,它的属主和属组都是root,其它用户对目录dir只有读的权限。在dir目录下有个文件test.txt,同样的,属主和属组都是root。然后我们以另一个用户user1登录并对该文件夹进行操作,看有什么结果。
[user1@localhost tmp]$ cd dir/
-bash: cd: dir/: Permission denied
[user1@localhost tmp]$ ls -l dir/
ls: cannot access dir/test.txt: Permission denied
total 0
-????????? ? ? ? ? ? test.txt
[user1@localhost tmp]$ touch dir/temp.txt
touch: cannot touch `dir/temp.txt': Permission denied
从以上结果可以看出,user1用户无法进入dir目录,但却可以查看dir目录下的文件,只是无法查看文件的具体权限,并且,user1用户也无法在dir目录下创建文件。
其实,目录的读(r)权限代表你可以通过ls命令查看目录下的文件。写(w)权限代表你可以在该目录下创建或删除文件,至于能否读写执行文件就要看该文件的权限了。执行(x)权限代表你可以通过cd进入该目录。这样空着讲可能有点不好理解,有兴趣的朋友还是自己敲一敲命令,很容易就能理解的!我自己本来也不是很理解,后来自己玩了一下,一下子印象就很深刻了。
再举一个例子吧,比如在用户user1的家目录下有个test.txt文件,它的权限如下:
-rw-r-----. 1 root root 0 Dec 6 19:50 test.txt
虽然这个目录是user1的家目录,但它对test.txt却没有任何权限,即不能对test.txt进行读写和执行。那么如果我对它执行删除操作呢?结果能否成功呢?
[user1@localhost ~]$ rm test.txt
rm: remove write-protected regular empty file `test.txt'? y
[user1@localhost ~]$ ls
答案是肯定的,为什么呢?由于test.txt在user1的家目录下,毋庸置疑,user1对于该目录拥有所有权限,所以user1可以对家目录下的文件进行删除操作,即使user1对该文件没有写的权限。
-------------------------------------我是分割线---------------------------------------------
如果哪里写的不严谨或者哪里错了,还望大家指出