如何删除该目录?

如何删除该目录?

我有一个目录,无法使用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

相关内容