我有一个目录,无法使用rmdir
.我总是收到permission denied
错误。但是当列出目录(带有ls -l
)时我得到这个:
drwxrwxrwx 2 user user 4096 Aug 28 09:34 directory
stat
给我的是:
File: `directory/'
Size: 4096 Blocks: 16 IO Block: 32768 directory
Device: 12h/18d Inode: 102368771 Links: 2
Access: (0777/drwxrwxrwx) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2015-08-31 03:00:20.630000002 +0200
Modify: 2015-08-28 09:34:16.772930001 +0200
Change: 2015-08-31 12:25:04.920000000 +0200
那么如何删除该目录。
答案1
如果您尝试删除目录foo/bar/
,则权限bar
不是相关因素。bar
从目录中删除名称foo
是对foo
.所以你需要对 的写权限foo
。
在您的情况下,请检查当前目录的权限ls -ld .
你可能会发现这是“为什么允许 rm 删除不同用户所有权下的文件?”的答案启发性的。
答案2
其中dir
一定是一个没有所需权限的文件。尝试将所有者更改recursively
为 all dir
,然后将其删除。
$ sudo chown -R user:user dir/
$ rm -rf dir/
从man rm
-r, -R, --recursive
remove directories and their contents recursively
-f, --force
ignore nonexistent files, never prompt
答案3
另一种可能性是在此目录上设置了“不可变位”。您可以使用 检查它ls -d <directory>
。设置的权限chattr
不会显示在stat
输出中:
stephan@x230 ~ % stat testdir
File: ‘testdir’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 13713629 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ stephan) Gid: ( 1000/ stephan)
Access: 2015-08-31 14:05:49.957299346 +0200
Modify: 2015-08-31 14:05:25.657267292 +0200
Change: 2015-08-31 14:05:42.685289494 +0200
Birth: -
stephan@x230 ~ % lsattr -d testdir
----i--------e-- testdir`
您必须是 root 才能删除不可变位:
chattr -i testdir