Linux下文件和目录的权限详解

我们都知道,在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对该文件没有写的权限。


-------------------------------------我是分割线---------------------------------------------

如果哪里写的不严谨或者哪里错了,还望大家指出微笑







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值