实例解析Linux下目录的权限
来源:互联网 发布:淘宝集市店铺差评影响 编辑:程序博客网 时间:2024/05/21 17:34
实例解析Linux下目录的权限
说明:如果对umask,权限值,文件的权限r,w,x都不了解的朋友,请先去补一下这方面的知识,这里不做介绍,直接进入正题.
希望通过实例讲解,能让更多的初学者对目录的权限更清晰,更明白!
本实例用到两个帐号:root 和 一般用户(root用户的提示符 "#" 号,一般用户的提示符 "$" 号).下面例子中有些地方就不再明确说明当前是用的哪个帐号操作,看命令提示符就明白了.
首先用root用户运行以下命令:
# umask 得到root用户的默认权限掩码值为:0022
也就是说如果root用户新建一个目录,目录的权限值为755(即自己对目录有rwx权限,同组用户对目录有rx权限,其它用户对目录有rx权限).
接着运行如下命令:
# cd /home 进入 home 目录,因为其它用户都能直接进入此目录,故在这里做测试
# mkdir test 新建 test 目录作为此次测试的目录
# ls -l 主要查看此目录的权限信息
在其后的操作中我们只关注 ls -l 命令输出信息中关于 test 目录(drwxr-xr-x 2 root root 1024 07-19 21:55 test)的第一栏(drwxr-xr-x )的后三位(r-x )(即其它用户对此目录的操作权限).
1.测试目录的执行权限(x)的含义
我们会发现其它用户对 test 目录具有读和执行的权限.接着
# chmod o-x test 去掉其它用户对 test 目录的执行权限
# ls -l 输出结果:drwxr-xr-- 2 root root 1024 07-19 21:55 test
现在用一般用户操作
$ cd /home/test 尝试进入 root 用户建立的 /home/test 目录
显示错误信息为:-bash: cd: /home/test: 权限不够;
接着用 root 用户运行:
# chmod o+x test 加上其它用户对 test 目录的执行权限
# ls -l 输出结果:drwxr-xr-x 2 root root 1024 07-19 21:55 test
用一般用户操作:
$ cd /home/test 无错误提示证明已经进入 test 目录
$ ls -l 输出信息:总计 0
结论1:如果要进入一个目录,必须具备该目录的执行权限.
2.测试目录的只读权限(r)的含义
有必要说明,上面的测试完成后, test 目录的权限(用 ls -l 查看:drwxr-xr-x 2 root root 1024 07-19 21:55 test),我们看到其它用户对此目录具备只读权限.
用 root 用户运行以下命令:
# chmod o-r test 去掉其它用户对 test 目录的只读权限(r)
# ls -l 输出信息:drwxr-x--x 2 root root 1024 07-19 21:55 test
然后用一般用户
$ cd /home/test 进入到 test 目录
$ ls -l 想查看 test 目录下的内容
错误提示信息:ls: .: 权限不够.但是在上例中有($ ls -l 输出信息:总计 0).
结论2:如果用户对目录 test 不具备只读权限(具备执行权限),当它进入 test 目录后,是无法查看 test 目录下的内容的(如运行命令 ls -l 等).
3.测试目录的可写权限(w)的含义
有必要说明,上面的测试完成后, test 目录的权限(用 ls -l 查看:drwxr-x--x 2 root root 1024 07-19 21:55 test),我们看到其它用户对此目录不具备可写权限.
用 root 用户运行:
# cd /home 进入到 home 目录
# chmod o+r,o+w test 为其它用户添加只读,可写权限
# ls -l 输出信息:drwxr-xrwx 2 root root 1024 07-19 21:55 test
可以看出其它用户对 test 目录具备所有权限(读,写,执行).
# cd /home/test 进入到 test 目录
# touch rootfile 建立一个名为 rootfile 空的档案
# ls -l 输出信息:-rw-r--r-- 1 root root 0 07-19 22:49 rootfile
可以看到其它用户对 root 用户建立的文件 rootfile 只具备读的权限.
用一般用户运行:
$ cd /home/test
$ vi rootfile
编辑 rootfile,你会发现在 vi 编辑器的底部提示:W10: 警告: 正在修改一个只读文件,不管它,我们随便输入几行文字,然后
!wq 强行保存退出.
$ ls -l 输出信息:-rw-r--r-- 1 liufeng liufeng 5 07-19 23:09 rootfile
你会发现:虽然其它用户对 rootfile 文件只具备读权限,但其它用户还是能强行改写rootfile 文件,保存后 rootfile 文件的用户和属组都发生改变了,这是为什么呢?会不会是因为 rootfile文件在/home/test 目录下,而其它用户对 test 目录具备写权限呢?带着问题我们继续测试.
root 用户:
# cd /home 进入 home 目录
# chmod o-w test 去掉其它用户对 test 目录的可写权限
# ls -l 输出信息:drwxr-xr-x 2 root root 1024 07-19 23:09 test
# cd test
# rm rootfile rm:是否删除 一般文件 “rootfile”? y 删除rootfile
# touch rootfile1 再次建立空档案,命名为 rootfile1
# ls -l 输出信息:-rw-r--r-- 1 root root 0 07-19 23:19 rootfile1
接下来,我想不说大家也明白,就是用一般用户去编辑 root 用户刚才新建立的空档案,你会发现,编辑完成后就是用强行保存退出(!wq)都不行,提示说:"rootfile1" E212: 无法打开并写入文件.只能是强行退出(!q)了.接着:
$ mkdir file1 错误信息:mkdir: 无法创建目录 “file1”: 权限不够
$ touch file2 错误信息:touch: 无法触碰 “file2”: 权限不够
你会发现,此时建立目录和文件都不允许(不妨试一下,在其它用户对 test 目录具备写权限时是可以在 test 目录下建立目录和文件的).
结论:如果用户对目录具备写权限,就能够创建/删除/修改该目录中的所有文件和子目录,即使是其它人的文件或子目录.
这里没有讲到 SUID,SGID和t等特殊权限,以后有时间会发上来.最后做一个简单的总结:
1. 对目录的只读权限也不允许进入那个目录,要进入目录,必须拥有目录的执行权限x.
2. 如果设置了可执行权限,只要存在下面的条件,就能够访问目录中的文件:
1> 知道它们的名称
2> 能读文件
3. 要列出目录中的内容(如 ls 等)并且进入一个目录,需要拥有目录的读和执行两个权限
4. 如果用户对目录具备写权限,就能够创建/删除/修改该目录中的所有文件和子目录,即使是其它人的文件或子目录.
转载来自:http://www.linuxdiyf.com/bbs/thread-100008-1-1.html
- 实例解析Linux下目录的权限
- 【Linux】Linux下的目录权限
- linux下的目录解析
- linux下的目录解析
- linux下的目录解析
- linux下的文件和目录权限
- linux下的文件和目录权限!
- linux下目录的权限解说
- linux下的文件和目录权限
- linux下的文件和目录权限
- linux下的文件和目录权限!
- Linux下目录的权限详解
- linux下的文件和目录权限!
- linux 下的访问目录文件权限
- Linux下目录和文件的权限
- linux下网站的目录权限问题
- linux下的文件和目录权限!
- Linux下的文件权限与目录权限
- 关于DES加密算法的C++实现
- 第四章 输出文字
- 男人四种花钱方法可以让女人开心
- 中南大学本科毕业设计/论文:
- ant和xmlbean的综合应用
- 实例解析Linux下目录的权限
- csdn上一些技术员的悲哀
- Powerdesigner的逆向工程将sqlserver数据库生成PDM
- C语言文件操作
- Poderosa 连接Cygwin 错误的解决方案
- 程序员的十层楼
- VS 2010 测试功能学习(八) - RnP与Coded UI测试(继续篇)
- 默爱,一万年
- LINUX WEBSITE