1. Linux文件的属性
关于Linux文件的属性的说明和设置请参考鸟哥Linux私房菜:Linux 的文件权限与目录配置
2. 目录和文件的权限意义
在Linux系统中,每个文件都有三种身份的权限配置,而每个身份都有三种权限(rwx)。这三种权限对于普通的文件很好理解,如下表所示,
表格 1 普通文件的rwx权限位意义
权限 |
说明 |
r |
文件内容可读 |
w |
文件内容可修改 |
x |
文件可执行 |
在Window系统中,文件是否可执行是通过文件扩展名来进行识别,例如.exe或.bat等。而在Linux系统下,文件扩展名只是为了给用户直观说明文件内容的类型而已,文件是否可执行则是通过是否设置了x权限位来决定的(当然,你如果非要给一个不能执行的普通文本文件设置成可执行,那我也没办法,事实上它也执行不了)。
对于目录的rwx权限位则需要特殊进行说明了。
目录主要的内容在记录文件名列表,文件名与目录有强烈的关连啦! 所以如果是针对目录时,那个 r, w, x 对目录是什么意义呢?
- r (read contents in directory):
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!- w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:
总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!
- 建立新的文件与目录;
- 删除已经存在的文件与目录(不论该文件的权限为何!)
- 将已存在的文件或目录进行更名;
- 搬移该目录内的文件、目录位置。
- x (access directory):
咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!
关于目录的r权限和x权限的验证测试:
下面我们通过对subdir目录进行操作来进行验证测试。目录subdir下具有两个文件file1和file2,
linuxidc@linux$ ls -l subdir/ total 0 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 22:33 file1 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 22:33 file2
linuxidc@linux$ sudo chown -R root:root subdir [sudo] password for linuxidc: linuxidc@linux$ sudo chmod o-rx subdir linuxidc@linux$ ls -l total 3 drwxr-x--- 2 root root 4096 Dec 12 22:33 subdir
linuxidc@linux$ cd subdir/ bash: cd: subdir/: Permission denied linuxidc@linux$ ls -l subdir/ ls: cannot open directory subdir/: Permission denied
我们将subdir的其他人权限添加r权限后,
linuxidc@linux$ sudo chmod -R o+r subdir linuxidc@linux$ ls -l total 4 drwxr-xr-- 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ ls -l subdir ls: cannot access subdir/file1: Permission denied ls: cannot access subdir/file2: Permission denied total 0 -????????? ? ? ? ? ? file1 -????????? ? ? ? ? ? file2 linuxidc@linux$ cd subdir bash: cd: subdir: Permission denied
linuxidc@linux$ sudo chmod o+x subdir linuxidc@linux$ ls -l total 4 drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ ls -l subdir total 0 -rw-r--r-- 1 root root 0 Dec 12 22:33 file1 -rw-r--r-- 1 root root 0 Dec 12 22:33 file2 linuxidc@linux$ cd subdir linuxidc@subdir$
关于目录的w权限的验证测试:
linuxidc@linux$ ls -l total 4 drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir linuxidc@linux$ cd subdir/ linuxidc@subdir$ ls -l total 4 drw-r----- 2 root root 4096 Dec 12 23:18 dir1 -rw-r----- 1 root root 0 Dec 12 22:33 file1
linuxidc@subdir$ cat file1 cat: file1: Permission denied linuxidc@subdir$ touch file3 touch: cannot touch ‘file3’: Permission denied linuxidc@subdir$ rm file1 rm: remove write-protected regular empty file ‘file1’? y rm: cannot remove ‘file1’: Permission denied linuxidc@subdir$ rmdir dir1 rmdir: failed to remove ‘dir1’: Permission denied linuxidc@subdir$ mkdir dir2 mkdir: cannot create directory ‘dir2’: Permission denied
linuxidc@linux$ sudo chmod o+w subdir linuxidc@linux$ ls -l total 4 drwxr-xrwx 3 root root 4096 Dec 12 23:18 subdir linuxidc@linux$ cd subdir linuxidc@subdir$ ls -l total 4 drw-r----- 2 root root 4096 Dec 12 23:18 dir1 -rw-r----- 1 root root 0 Dec 12 22:33 file1 linuxidc@subdir$ rm file1 rm: remove write-protected regular empty file ‘file1’? y linuxidc@subdir$ touch file2 linuxidc@subdir$ rmdir dir1 linuxidc@subdir$ mkdir dir2 linuxidc@subdir$ ls -l total 4 drwxr-xr-x 2 linuxidc linuxidc 4096 Dec 12 23:24 dir2 -rw-r--r-- 1 linuxidc linuxidc 0 Dec 12 23:24 file2
由此可见目录的w权限如此之重要。切莫轻易给其他人开启目录的w权限。
(done)