免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1796 | 回复: 10
打印 上一主题 下一主题

问个权限问题 请进(暂算已经解决了吧) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-04 09:53 |只看该作者 |倒序浏览
[dozec@IDE tmp]$ ll -d dir1
drwx------ 3 dozec root 4096 Jan  4 12:12 dir1
[dozec@IDE tmp]$ ll -d dir1/dir2/
drwx------ 2 root root 4096 Jan  4 12:12 dir1/dir2/
[dozec@IDE tmp]$ cd dir1
[dozec@IDE dir1]$ ls
dir2
[dozec@IDE dir1]$ rm -rf dir2
rm: cannot chdir from `.' to `dir2': Permission denied

dir1/dir2目录均为700权限, dir1目录的对象所有者为dozec,dir2目录的对象所有者为root.
当使用dozec登陆时,可以进入dir1目录,并成功执行ls,但无法删除dir2,不解。
“目录权限高于其下的文件权限”->这句话对不对。


当把dir1/dir2目录权限改为默认时的755时,就可以成功删除dir2了。

[ 本帖最后由 dozec 于 2007-1-4 23:11 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-04 11:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2007-01-04 12:36 |只看该作者
原帖由 lovegqin 于 2007-1-4 11:30 发表
我认为首先这两种权限可以分开
因为目录权限代表着设置了以后其中的权限
而文件权限是以目录权限为前提,而后有自已的权限。
所以有LZ的问题


我的理解思路可能和lovegqin同学的不太相同。
我是从文件系统角度来看目录文件的r/w权限:
如果目录文件有r权限,那么就可以读取该目录项(例如:目录A)->相关联(目录A)的inode->相关联的(目录A)的block->从而可以ls列出block中所记录的内容(列出目录A下面的文件)[这个应该是正确的]
如果目录文件有w权限,那么就应该可以写目录项。不过这个从我的问题上可以看出来 ,好像不正确。问题出在哪?sticky位或者 其它。。。。搞不明白

论坛徽章:
0
4 [报告]
发表于 2007-01-04 12:46 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2007-01-04 13:10 |只看该作者
文件权限高于目录权限
文件的默认权限继承于目录

论坛徽章:
0
6 [报告]
发表于 2007-01-04 14:51 |只看该作者
原帖由 pishafa 于 2007-1-4 13:10 发表
文件权限高于目录权限
文件的默认权限继承于目录




这个这个~~ 差太多了吧
pishafa同学 这2句话是从份资料上引用来的。
------------------------
前一句没印象。
后一句我想你是不知道umask才这么说的 吧。

论坛徽章:
0
7 [报告]
发表于 2007-01-04 18:50 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
8 [报告]
发表于 2007-01-04 20:05 |只看该作者
原帖由 jamesr 于 2007-1-4 18:50 发表
权限和文件系统的实现是分开的:
删除文件的前提是对文件有w权限,同时对文件所在的目录有wx权限。目录有w权限,目录内的文件没有w权限,你怎么删除那个文件呢?


Thanks.有道理.

论坛徽章:
0
9 [报告]
发表于 2007-01-04 21:40 |只看该作者
刚过了实验 ,悟明白了怎么回事。 jamesr   同学说的不太对劲。

下面的试验过程和结论如下:
[root@IDE /]# mkdir -p dir1/dir2
[root@IDE /]# cd dir1/
[root@IDE dir1]# echo 123 > file2
[root@IDE dir1]# cd ..
[root@IDE /]# chmod -R 700 dir1
[root@IDE /]# chown nie dir1
[root@IDE /]# ll -d dir1
drwx------ 3 nie root 4096 01-05 00:02 dir1
[root@IDE /]# ll dir1/
总计 8
drwx------ 2 root root 4096 01-05 00:02 dir2
-rwx------ 1 root root    4 01-05 00:02 file2
[root@IDE /]#


实验过程:
1。使用nie用户登陆后, nie用户可以进入dir1目录并成功ls -->因为nie用户具有相应的r/x权限
2。nie用户无法cat file2文件的内容  -->因为nie用户对file2文件无r权限
     但nie用户可以rm -rf file2删除file2文件  -->因为nie用户对于dir1目录拥有其w权限。故可以删除dir1目录文件中相应于fil2文件的目录项。
3。nie用户无法rm -rf dir2删除目录,原因是虽然nie用户对于dir1目录拥有其w权限 , 但rm -rf dir2操作首先要删除dir2目录下的2个目录项 .  与 ..      ,而nie用户对于dir2目录无任何权限 故会输出:
rm: cannot chdir from `.' to `dir2/': Permission denied

当执行chmod 701 dir2后,执行rm -rf dir2操作输出提示如下:
rm: cannot open directory `dir2/': Permission denied

只有当chmod 707 dir2后,才成功执行rm -rf dir2操作。


最后结论如下:
1.对一个目录拥有r权限  , 可以成功读取该目录项->inode->block   效果是ls 目录OK
2.对一个目录拥有w权限, 可以删除该目录下的任何文件(对该文件无权限也可),但删除目录文件时需要一并删除目录文件下的  .  与  ..  2个目录项, 故需要拥有该目录的rwx权限
3.对一个目录有x权限 , 大家都知道了 可以进入目录当中。


至于 jamesr   同学说的“权限与文件系统是分开的”。
我查了一下linux device driver3nd. 其中capable()用于检验进程是否具胡指定的权能。但后跑到内核源码树的fs目录下grep capable *   and grep capable */*一下 你会发现文件系统的操作无时不刻 都在调用 该函数来检查进程是否有权限操作。  文件系统源码没有深研读   只是表像 供大家参考

论坛徽章:
0
10 [报告]
发表于 2007-01-05 05:30 |只看该作者
You should  be able to rm -rf dir2 if the permission on dir2 is 705 not necessary 707.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP