感谢支持
我们一直在努力

Linux基础知识:关于Linux目录及文档权限的研究

前面学习了Linux文档的权限(见 http://www.linuxidc.com/Linux/2011-11/47894.htm ),鸟哥说,文件rwx的权限是读取写入与执行的权限,但与删除文件并没有关系。而目录rwx则代表读取目录列表,添加删除目录中的文件,切换进入目录!对于此,我做了一项权限问题的试验。

首先,以sunjiebin用户测试下test文件的rwx权限问题:

当只有r权限时:
[sunjiebin@rhel6 test]$ ll
总用量 4
-r——–. 1 sunjiebin sunjiebin 6 10月  1 17:34 test
[sunjiebin@rhel6 test]$ echo hello2 >>test
-bash: test: 权限不够
[root@rhel6 test]# ./test
-bash: ./test: 权限不够
[sunjiebin@rhel6 test]$ cat test
hello
可以看出是不可以写入与执行的。但可以查看。

当只有w权限时:
[sunjiebin@rhel6 test]$ chmod u=w test
[sunjiebin@rhel6 test]$ ll
总用量 4
–w——-. 1 sunjiebin sunjiebin 6 10月  1 17:34 test
[sunjiebin@rhel6 test]$ cat test
cat: test: 权限不够
[sunjiebin@rhel6 test]$ echo test1 >>test
[sunjiebin@rhel6 test]$ ./test
-bash: ./test: 权限不够
我们用root来看看写入是否成功
[root@rhel6 test]# cat test
hello
test1
可以看出可以写入成功了,但sunjibin用户自己却不能查看写入的文件
由上可知,当只有w权限时,可以写入文件,但不可读,不可执行。
 

注意:这里不能用vi来编辑test。如果用vi,我在vi里面输入test3,结果如下:
[sunjiebin@rhel6 test]$ vi test
test3
— 插入 — W10: 警告: 正在修改一个只读文件
:wq! [root@rhel6 test]# cat test
test3
可以看出,在用vi编辑的时候,我们并不能看到test文件中的内容,而且编辑后的文件,也已经没有了一开始的内容。为什么没有原来的内容了呢?其实这本质上vi并没有编辑真正的修改test文件,而是在编写一个同名的test文件。在保存的时候,再将原来的test覆盖掉。覆盖其实就是执行了删除和新建的动作。所以,原来的test文件就没有了!下面在讲目录权限的时候,我会验证这句话的正确性!

当只有x权限时:
[sunjiebin@rhel6 test]$ chmod u=x test
[sunjiebin@rhel6 test]$ ll
总用量 4
—x——. 1 sunjiebin sunjiebin 6 10月  1 17:59 test
[sunjiebin@rhel6 test]$ cat test
cat: test: 权限不够
[sunjiebin@rhel6 test]$ echo test >>test
-bash: test: 权限不够
[sunjiebin@rhel6 test]$ ./test
bash: ./test: 权限不够
咦,怎么执行权限也没有了呢?读写权限都没有了可以理解,那么执行权限怎么会没有呢?因为我们执行一个文件的时候,肯定是先要读取文件啊,读都不能读了,怎么进行下面的执行呢?当我们改为rx权限时,执行结果如下:
[sunjiebin@rhel6 test]$ chmod u=rx test
[sunjiebin@rhel6 test]$ ./test
./test: line 1: test3: command not found
可以看到,没有说权限不够了吧~ 所以啊,要文件能执行,必需还要有r权限哦。

文件权限的组合这里就不说了。下面以sunjiebin用户来说说文件夹test的rwx权限。


当只有r权限时
[sunjiebin@rhel6 test]$ chmod 400 test
[sunjiebin@rhel6 test]$ ll -d test
dr——–. 2 sunjiebin sunjiebin 4096 10月  1 18:16 test
[sunjiebin@rhel6 test]$ ll test/
ls: 无法访问test/test1: 权限不够
ls: 无法访问test/test2: 权限不够
总用量 0
-????????? ? ? ? ?            ? test1
-????????? ? ? ? ?            ? test2
[sunjiebin@rhel6 test]$ cd test/
-bash: cd: test/: 权限不够
[sunjiebin@rhel6 test]$ cp test/test1 .
cp: 无法获取”test/test1″ 的文件状态(stat): 权限不够
[sunjiebin@rhel6 test]$ ll test1
ls: 无法访问test1: 没有那个文件或目录
[sunjiebin@rhel6 test]$ cat test/test1
cat: test/test1: 权限不够
可以看到,我们可以列出test文件夹下的目录,但不能切换进去!也不能执行复制查看文件里面的内容等操作。为什么不能查看文件里面的内容呢?其实这还需要x权限才行。在下面讲组合权限时我会验证说明的。


当只有w权限时
[sunjiebin@rhel6 test]$ ll
总用量 4
d-w——-. 2 sunjiebin sunjiebin 4096 10月  1 18:16 test
[sunjiebin@rhel6 test]$ cd test/
-bash: cd: test/: 权限不够
[sunjiebin@rhel6 test]$ ls test/
ls: 无法打开目录test/: 权限不够
[sunjiebin@rhel6 test]$ touch test/test3
-bash: test/test3: 权限不够
[root@rhel6 test]# ll
总用量 8
-rw-rw-r–. 1 sunjiebin sunjiebin 3 10月  1 18:16 test1
-rw-rw-r–. 1 sunjiebin sunjiebin 3 10月  1 18:16 test2

瞧,竟然读写切换功能全没了!不是有写的权限吗?怎么不能写呢?其实如果写入目录,首先你得能切换进目录啊!这个问题我会在组合权限wx时验证。所以文件夹仅仅只有一个w权限是没有任何作用的。


当只有x权限时
[sunjiebin@rhel6 test]$ chmod u=x test/
[sunjiebin@rhel6 test]$ ll
总用量 4
d–x——. 2 sunjiebin sunjiebin 4096 10月  1 18:32 test
[sunjiebin@rhel6 test]$ touch test/test4
touch: 无法创建”test/test4″: 权限不够
[sunjiebin@rhel6 test]$ ls test/
ls: 无法打开目录test/: 权限不够
[sunjiebin@rhel6 test]$ cd test/
[sunjiebin@rhel6 test]$ ls
ls: 无法打开目录.: 权限不够
可以看出,这时候我们仅仅只能切换进test目录,但是不能查看里面的文件,也不能改变里面的文件。


————————————————————————————————–


有了上面的基础,我们再讲讲目录的组合权限


当权限为rw时
[sunjiebin@rhel6 test]$ chmod u=rw test/
[sunjiebin@rhel6 test]$ ll
总用量 4
drw——-. 2 sunjiebin sunjiebin 4096 10月  1 18:32 test
[sunjiebin@rhel6 test]$ cd test/
-bash: cd: test/: 权限不够
[sunjiebin@rhel6 test]$ ls test/
ls: 无法访问test/test1: 权限不够
ls: 无法访问test/test3: 权限不够
ls: 无法访问test/test2: 权限不够
test1  test2  test3
[sunjiebin@rhel6 test]$ rm -f test/test3
rm: 无法删除”test/test3″: 权限不够
[sunjiebin@rhel6 test]$ ls test/
ls: 无法访问test/test1: 权限不够
ls: 无法访问test/test3: 权限不够
ls: 无法访问test/test2: 权限不够
test1  test2  test3
[sunjiebin@rhel6 test]$ touch test/test4
touch: 无法创建”test/test4″: 权限不够
可以看出,rw权限其实是和r权限等效的。也就是只有查看列表的权限,并不能写入和删除里面的文件!明明我有了w写入权限,为什么删除不了呢?原因就在于,你要写入或删除文件,你必需先要有x切换进去的权限!

当权限为rx时
[sunjiebin@rhel6 test]$ chmod u=rx test/
[sunjiebin@rhel6 test]$ ll
总用量 4
dr-x——. 2 sunjiebin sunjiebin 4096 10月  1 18:40 test
[sunjiebin@rhel6 test]$ cd test/
[sunjiebin@rhel6 test]$ ls
test1  test2  test3
[sunjiebin@rhel6 test]$ rm test3
rm: 无法删除”test3″: 权限不够
[sunjiebin@rhel6 test]$ cat test/test1
aa
可以看出,这时候可以切换进去,也可以列出列表,但不能添加删除文件。但我们可以查看里面文件的内容。也可以执行里面的文件。因为查看文件内容首先你要能切换进目录才可以。

当权限为wx时
[sunjiebin@rhel6 test]$ chmod u=wx test/
[sunjiebin@rhel6 test]$ ll
总用量 4
d-wx——. 2 sunjiebin sunjiebin 4096 10月  1 18:40 test
[sunjiebin@rhel6 test]$ cd test/
[sunjiebin@rhel6 test]$ ls
ls: 无法打开目录.: 权限不够
[sunjiebin@rhel6 test]$ touch test/test3
[root@rhel6 test]# ls test/
test1  test2  test3
[sunjiebin@rhel6 test]$ rm -f test3
[root@rhel6 test]# ls
test1  test2
可以看到我们虽然不能查看目录下的文件,但是我们却可以对目录下的文件进行添加删除的操作!


综上所述:


当我们具有rw权限,我们可以做的是有:查看目录列表。
不可以做的事有:删除添加目录下的文件,查看目录下文件中的内容,执行文件。


当我们具有rx权限时,我们可以做的事有:1,切换进目录;2,查看目录列表;3,查看目录下文件的内容;4,执行目录下的文件
不可以做的事有:添加删除目录下的文件


如果我们具有wx权限,那么可以做的事情有:1,添加删除目录下的文件;2,读取目录下文件的内容;3,执行目录下的文件  前提是你要知道目录下该文件的名字!
不可以做的事有:查看目录列表


下面我们验证下当目录权限为rwx,文件却没有任何权限时,vi命令的执行方式。[sunjiebin@rhel6 test]$ ll
总用量 8
drwx——. 2 sunjiebin sunjiebin 4096 10月  1 19:19 test
[sunjiebin@rhel6 test]$ ll test3
———-. 1 root root 13 10月  1 19:19 test3
[root@rhel6 test]# cat test3
echo aa
test
这时可以看到test3文件位于文件夹test下,sunjiebin用户对文件夹test有完全控制权限,但对文件test3没有任何权限。这时候我们vi test3之后,结果如下
[sunjiebin@rhel6 test]$ ll test3
———-. 1 sunjiebin sunjiebin 14 10月  1 19:25 test3
[root@rhel6 test]# cat test3
sunjiebin vi
会看到其所属者已经改变。其内容也已经改变!


这时候,我们去掉目录test的w权限!
[sunjiebin@rhel6 test]$ chmod u=rx test
[sunjiebin@rhel6 test]$ ll
总用量 8
dr-x——. 2 sunjiebin sunjiebin 4096 10月  1 19:25 test
再用vi来偿试改变test3,用:wq!保存会出现
“test3”
“test3” E212: 无法打开并写入文件
请按 ENTER 或其它命令继续
这时候你会发现,你已经无法用vi去改写你没有权限的test3了。因为这时候test目录你没有了w权限,也就无法删除原来的test3了。所以vi失败。

赞(0) 打赏
转载请注明出处:服务器评测 » Linux基础知识:关于Linux目录及文档权限的研究
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏