在这里删除文件夹为什么会出错?

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
wangaofang
帖子: 52
注册时间: 2009-03-16 15:43

在这里删除文件夹为什么会出错?

#1

帖子 wangaofang » 2009-04-02 22:45

我在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 次。
kentty
帖子: 219
注册时间: 2005-11-09 19:48

Re: 在这里删除文件夹为什么会出错?

#2

帖子 kentty » 2009-04-02 22:50

test在/tmp下,#rmdir test不在/tmp下执行,就是说路径不对。
头像
darasion
帖子: 1153
注册时间: 2007-12-05 12:25

Re: 在这里删除文件夹为什么会出错?

#3

帖子 darasion » 2009-04-03 1:50

代码: 全选

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和所有者才可以删除,其他人都不能删。
wangaofang
帖子: 52
注册时间: 2009-03-16 15:43

Re: 在这里删除文件夹为什么会出错?

#4

帖子 wangaofang » 2009-04-03 9:24

哦。我看到t了。
wangaofang
帖子: 52
注册时间: 2009-03-16 15:43

Re: 在这里删除文件夹为什么会出错?

#5

帖子 wangaofang » 2009-04-03 9:46

针对二楼的回复,当时我目录的确是搞错了,是我复制命令的时候搞错了,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啊?
wangaofang
帖子: 52
注册时间: 2009-03-16 15:43

Re: 在这里删除文件夹为什么会出错?

#6

帖子 wangaofang » 2009-04-03 10:21

如果说按照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$
头像
darasion
帖子: 1153
注册时间: 2007-12-05 12:25

Re: 在这里删除文件夹为什么会出错?

#7

帖子 darasion » 2009-04-03 11:46

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和名字等等这些东西的特殊的文件。
wangaofang
帖子: 52
注册时间: 2009-03-16 15:43

Re: 在这里删除文件夹为什么会出错?

#8

帖子 wangaofang » 2009-04-03 11:49

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和名字等等这些东西的特殊的文件。
谢谢你的解释,我正处于初学阶段,你的话有些还看不懂,等我仔细研究了仍然有不懂的再问你。
头像
darasion
帖子: 1153
注册时间: 2007-12-05 12:25

Re: 在这里删除文件夹为什么会出错?

#9

帖子 darasion » 2009-04-03 11:53

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和名字等等这些东西的特殊的文件。
谢谢你的解释,我正处于初学阶段,你的话有些还看不懂,等我仔细研究了仍然有不懂的再问你。
我也初学,只不过我是看了鸟哥的那些文字才知道这些的。
回复