当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-02 22:45 

注册: 2009-03-16 15:43
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
我在ubuntu 8.10终端输入下面的命令:
administrator@administrator-desktop:~$ sudo -i
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir test
root@administrator-desktop:/tmp# chmod 007 test
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/tmp$ rmdir test
rmdir: 删除 “test” 失败: 操作不允许

这里为什么会出错呢?我看书上说如果有w权限就可以删除文件夹啊!这里我用chmod 007 test给others(其他用户)赋了7(rwx)的权限,为什么我在administrator普通帐户下无法删除这个test的文件夹呢?


最后由 wangaofang 编辑于 2009-04-03 9:20,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-02 22:50 

注册: 2005-11-09 19:48
帖子: 219
送出感谢: 0 次
接收感谢: 0 次
test在/tmp下,#rmdir test不在/tmp下执行,就是说路径不对。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 1:50 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
代码:
darasion@darasion-desktop:/$ ls -ld tmp
drwxrwxrwt 13 root root 4096 2009-04-03 01:46 tmp

楼主仔细看,/tmp的权限很特殊哦,最后一个字母是t。而不是rwx中任何一个。
:em09

这个t的叫做Sticky Bit;

在拥有这个权限的目录中创建文件或目录,只有root和所有者才可以删除,其他人都不能删。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 9:24 

注册: 2009-03-16 15:43
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
哦。我看到t了。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 9:46 

注册: 2009-03-16 15:43
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
针对二楼的回复,当时我目录的确是搞错了,是我复制命令的时候搞错了,1楼的帖子已经修改过来了,今天我又重新做了遍,结果如下:
administrator@administrator-desktop:/$ sudo -i
[sudo] password for administrator:
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir test
root@administrator-desktop:/tmp# chmod 007 test
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/$ cd /tmp
administrator@administrator-desktop:/tmp$ rmdir test
rmdir: 删除 “test” 失败: 操作不允许
3楼的能不能详细的给我们讲讲这个“t”是什么意思呢,我看书只有rwx(421),而没有这个t啊?


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 10:21 

注册: 2009-03-16 15:43
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
如果说按照3楼的说法,这这里为什么又可以删除成功呢(这里先把用touch创建的testing(属性为-rw------- 1 root root 0 2009-04-03 10:15 testing)删除,然后再删除的文件夹,均成功了,这是什么原因呢?
administrator@administrator-desktop:/$ sudo -i
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir testing
root@administrator-desktop:/tmp# chmod 744 testing
root@administrator-desktop:/tmp# touch testing/testing
root@administrator-desktop:/tmp# chmod 600 testing/testing
root@administrator-desktop:/tmp# chown administrator testing
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/tmp$ ls -l
总用量 120
drwxr-xr-x 2 administrator administrator 60 2009-04-03 09:29 acroread_1000_1000
drwx------ 2 administrator administrator 100 2009-04-03 08:42 keyring-Tv9Iya
drwx------ 2 administrator administrator 640 2009-04-03 09:39 orbit-administrator
drwx------ 2 administrator administrator 40 2009-04-03 09:13 plugtmp
drwx------ 2 administrator administrator 80 2009-04-03 08:42 pulse-administrator
-r-------- 1 administrator administrator 2097176 2009-04-03 09:11 pulse-shm-4016370375
srwxr-xr-x 1 administrator administrator 0 2009-04-03 08:42 scim-bridge-0.3.0.socket-1000@localhost:0.0
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-helper-manager-socket-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-panel-socket:0-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-socket-frontend-administrator
drwxr--r-- 2 administrator root 60 2009-04-03 10:15 testing
drwx------ 3 administrator administrator 80 2009-04-03 08:42 Tracker-administrator.5457
drwx------ 2 administrator administrator 40 2009-04-03 08:42 virtual-administrator.65GXO8
administrator@administrator-desktop:/tmp$ cd testing
administrator@administrator-desktop:/tmp/testing$ ls -l
总用量 0
-rw------- 1 root root 0 2009-04-03 10:15 testing
administrator@administrator-desktop:/tmp/testing$ rm testing
rm:是否删除有写保护的 普通空文件 “testing”? y
administrator@administrator-desktop:/tmp/testing$ cd ..
administrator@administrator-desktop:/tmp$ rmdir testing
administrator@administrator-desktop:/tmp$


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 11:46 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
wangaofang 写道:
如果说按照3楼的说法,这这里为什么又可以删除成功呢(这里先把用touch创建的testing(属性为-rw------- 1 root root 0 2009-04-03 10:15 testing)删除,然后再删除的文件夹,均成功了,这是什么原因呢?
administrator@administrator-desktop:/$ sudo -i
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir testing
root@administrator-desktop:/tmp# chmod 744 testing
root@administrator-desktop:/tmp# touch testing/testing
root@administrator-desktop:/tmp# chmod 600 testing/testing
root@administrator-desktop:/tmp# chown administrator testing
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/tmp$ ls -l
总用量 120
drwxr-xr-x 2 administrator administrator 60 2009-04-03 09:29 acroread_1000_1000
drwx------ 2 administrator administrator 100 2009-04-03 08:42 keyring-Tv9Iya
drwx------ 2 administrator administrator 640 2009-04-03 09:39 orbit-administrator
drwx------ 2 administrator administrator 40 2009-04-03 09:13 plugtmp
drwx------ 2 administrator administrator 80 2009-04-03 08:42 pulse-administrator
-r-------- 1 administrator administrator 2097176 2009-04-03 09:11 pulse-shm-4016370375
srwxr-xr-x 1 administrator administrator 0 2009-04-03 08:42 scim-bridge-0.3.0.socket-1000@localhost:0.0
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-helper-manager-socket-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-panel-socket:0-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-socket-frontend-administrator
drwxr--r-- 2 administrator root 60 2009-04-03 10:15 testing
drwx------ 3 administrator administrator 80 2009-04-03 08:42 Tracker-administrator.5457
drwx------ 2 administrator administrator 40 2009-04-03 08:42 virtual-administrator.65GXO8
administrator@administrator-desktop:/tmp$ cd testing
administrator@administrator-desktop:/tmp/testing$ ls -l
总用量 0
-rw------- 1 root root 0 2009-04-03 10:15 testing
administrator@administrator-desktop:/tmp/testing$ rm testing
rm:是否删除有写保护的 普通空文件 “testing”? y
administrator@administrator-desktop:/tmp/testing$ cd ..
administrator@administrator-desktop:/tmp$ rmdir testing
administrator@administrator-desktop:/tmp$


:em20 好长。。。我觉得你不应该再用administrator这样长长的用户名了,windows那个用户名并不好看。

是这样的,t仅对拥有这个权限的目录本身有效,并不会传递给子目录。

你已经把/tmp/testing目录的所有者改成了administrator,而且administrator拥有/tmp/testing这个目录的wx权限,这说明administrator可以删除、修改这个目录中的文件或子目录了。

目录在文件系统中应该是这样:一个inode指向一堆block,这堆block里边记录着这个目录中所有文件和子目录的 名字、inode等,因此,对目录的w权限就是对这一堆block的修改权限,而删除子项目必须能够进入该目录,就必须有这个目录的x权限。

换句话说,在文件系统中,目录就是一种记录在这个目录下各种目录和文件的inode和名字等等这些东西的特殊的文件。


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 11:49 

注册: 2009-03-16 15:43
帖子: 52
送出感谢: 0 次
接收感谢: 0 次
darasion 写道:
wangaofang 写道:
如果说按照3楼的说法,这这里为什么又可以删除成功呢(这里先把用touch创建的testing(属性为-rw------- 1 root root 0 2009-04-03 10:15 testing)删除,然后再删除的文件夹,均成功了,这是什么原因呢?
administrator@administrator-desktop:/$ sudo -i
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir testing
root@administrator-desktop:/tmp# chmod 744 testing
root@administrator-desktop:/tmp# touch testing/testing
root@administrator-desktop:/tmp# chmod 600 testing/testing
root@administrator-desktop:/tmp# chown administrator testing
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/tmp$ ls -l
总用量 120
drwxr-xr-x 2 administrator administrator 60 2009-04-03 09:29 acroread_1000_1000
drwx------ 2 administrator administrator 100 2009-04-03 08:42 keyring-Tv9Iya
drwx------ 2 administrator administrator 640 2009-04-03 09:39 orbit-administrator
drwx------ 2 administrator administrator 40 2009-04-03 09:13 plugtmp
drwx------ 2 administrator administrator 80 2009-04-03 08:42 pulse-administrator
-r-------- 1 administrator administrator 2097176 2009-04-03 09:11 pulse-shm-4016370375
srwxr-xr-x 1 administrator administrator 0 2009-04-03 08:42 scim-bridge-0.3.0.socket-1000@localhost:0.0
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-helper-manager-socket-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-panel-socket:0-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-socket-frontend-administrator
drwxr--r-- 2 administrator root 60 2009-04-03 10:15 testing
drwx------ 3 administrator administrator 80 2009-04-03 08:42 Tracker-administrator.5457
drwx------ 2 administrator administrator 40 2009-04-03 08:42 virtual-administrator.65GXO8
administrator@administrator-desktop:/tmp$ cd testing
administrator@administrator-desktop:/tmp/testing$ ls -l
总用量 0
-rw------- 1 root root 0 2009-04-03 10:15 testing
administrator@administrator-desktop:/tmp/testing$ rm testing
rm:是否删除有写保护的 普通空文件 “testing”? y
administrator@administrator-desktop:/tmp/testing$ cd ..
administrator@administrator-desktop:/tmp$ rmdir testing
administrator@administrator-desktop:/tmp$


:em20 好长。。。我觉得你不应该再用administrator这样长长的用户名了,windows那个用户名并不好看。

是这样的,t仅对拥有这个权限的目录本身有效,并不会传递给子目录。

你已经把/tmp/testing目录的所有者改成了administrator,而且administrator拥有/tmp/testing这个目录的wx权限,这说明administrator可以删除、修改这个目录中的文件或子目录了。

目录在文件系统中应该是这样:一个inode指向一堆block,这堆block里边记录着这个目录中所有文件和子目录的 名字、inode等,因此,对目录的w权限就是对这一堆block的修改权限,而删除子项目必须能够进入该目录,就必须有这个目录的x权限。

换句话说,在文件系统中,目录就是一种记录在这个目录下各种目录和文件的inode和名字等等这些东西的特殊的文件。

谢谢你的解释,我正处于初学阶段,你的话有些还看不懂,等我仔细研究了仍然有不懂的再问你。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 在这里删除文件夹为什么会出错?
帖子发表于 : 2009-04-03 11:53 
头像

注册: 2007-12-05 12:25
帖子: 1153
送出感谢: 0 次
接收感谢: 0 次
wangaofang 写道:
darasion 写道:
wangaofang 写道:
如果说按照3楼的说法,这这里为什么又可以删除成功呢(这里先把用touch创建的testing(属性为-rw------- 1 root root 0 2009-04-03 10:15 testing)删除,然后再删除的文件夹,均成功了,这是什么原因呢?
administrator@administrator-desktop:/$ sudo -i
root@administrator-desktop:~# cd /tmp
root@administrator-desktop:/tmp# mkdir testing
root@administrator-desktop:/tmp# chmod 744 testing
root@administrator-desktop:/tmp# touch testing/testing
root@administrator-desktop:/tmp# chmod 600 testing/testing
root@administrator-desktop:/tmp# chown administrator testing
root@administrator-desktop:/tmp# exit
logout
administrator@administrator-desktop:/tmp$ ls -l
总用量 120
drwxr-xr-x 2 administrator administrator 60 2009-04-03 09:29 acroread_1000_1000
drwx------ 2 administrator administrator 100 2009-04-03 08:42 keyring-Tv9Iya
drwx------ 2 administrator administrator 640 2009-04-03 09:39 orbit-administrator
drwx------ 2 administrator administrator 40 2009-04-03 09:13 plugtmp
drwx------ 2 administrator administrator 80 2009-04-03 08:42 pulse-administrator
-r-------- 1 administrator administrator 2097176 2009-04-03 09:11 pulse-shm-4016370375
srwxr-xr-x 1 administrator administrator 0 2009-04-03 08:42 scim-bridge-0.3.0.socket-1000@localhost:0.0
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-helper-manager-socket-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-panel-socket:0-administrator
srw------- 1 administrator administrator 0 2009-04-03 08:42 scim-socket-frontend-administrator
drwxr--r-- 2 administrator root 60 2009-04-03 10:15 testing
drwx------ 3 administrator administrator 80 2009-04-03 08:42 Tracker-administrator.5457
drwx------ 2 administrator administrator 40 2009-04-03 08:42 virtual-administrator.65GXO8
administrator@administrator-desktop:/tmp$ cd testing
administrator@administrator-desktop:/tmp/testing$ ls -l
总用量 0
-rw------- 1 root root 0 2009-04-03 10:15 testing
administrator@administrator-desktop:/tmp/testing$ rm testing
rm:是否删除有写保护的 普通空文件 “testing”? y
administrator@administrator-desktop:/tmp/testing$ cd ..
administrator@administrator-desktop:/tmp$ rmdir testing
administrator@administrator-desktop:/tmp$


:em20 好长。。。我觉得你不应该再用administrator这样长长的用户名了,windows那个用户名并不好看。

是这样的,t仅对拥有这个权限的目录本身有效,并不会传递给子目录。

你已经把/tmp/testing目录的所有者改成了administrator,而且administrator拥有/tmp/testing这个目录的wx权限,这说明administrator可以删除、修改这个目录中的文件或子目录了。

目录在文件系统中应该是这样:一个inode指向一堆block,这堆block里边记录着这个目录中所有文件和子目录的 名字、inode等,因此,对目录的w权限就是对这一堆block的修改权限,而删除子项目必须能够进入该目录,就必须有这个目录的x权限。

换句话说,在文件系统中,目录就是一种记录在这个目录下各种目录和文件的inode和名字等等这些东西的特殊的文件。

谢谢你的解释,我正处于初学阶段,你的话有些还看不懂,等我仔细研究了仍然有不懂的再问你。


我也初学,只不过我是看了鸟哥的那些文字才知道这些的。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译