我在 encfs 容器中有一个文件夹 foo(来源:/local/home/me/Documents mountpoint:/u/me/Documents),我无法删除它。
> pwd
/u/me/Documents
> mount
[..]
encfs on /local/home/me/Documents type fuse.encfs (rw,nosuid,nodev,default_permissions,user=me)
> ls -la foo
drwxr-xr-x 2 me mygrp 4096 Nov 6 10:35 ./
drwx------ 31 me mygrp 4096 Nov 6 10:47 ../
> mv foo bar
> ls -lad bar
drwxr-xr-x 2 me mygrp 4096 Nov 6 10:35 bar/
> rm -rf bar
rm: cannot remove ‘bar’: Directory not empty
> lsof bar
> echo $?
1
> mv bar /tmp
mv: inter-device move failed: ‘bar’ to ‘/tmp/bar’; unable to remove target: Is a directory
> echo "Arghhhhghgh"
Arghhhhghgh
> uname -a
Linux mybox 3.8.0-33-generic #48-Ubuntu SMP Wed Oct 23 09:16:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
> stat bar
File: ‘bar’
Size: 4096 Blocks: 8 IO Block: 1048576 directory
Device: 1ch/28d Inode: 81005508 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 4711/ me) Gid: ( 311/ mygrp)
Access: 2013-11-06 10:56:47.594878110 +0100
Modify: 2013-11-06 10:35:10.000000000 +0100
Change: 2013-11-06 10:56:47.591878043 +0100
Birth: -
Run Code Online (Sandbox Code Playgroud)
当退出代码与 0 不同时,我用“echo $?”明确表示。
编辑:我刚刚重新启动了盒子,以防在安装了一些更新后我错过了。结果保持不变。即使重新安装也无济于事。encfs 有一些 fsck 吗?
编辑:我发现了另一个可能有用的信息:容器本身是通过 Drobox 同步的。我确定了相应的文件夹(它有一个加密的文件名),并在一个.dropbox.attr文件中找到了一个行为相同的文件,这实际上是我认为安装的文件夹不可移动的原因。我禁用了 Dropbox 客户端,卸载了容器,但仍然无法删除,甚至无法重命名!chown 也没有用。除了 chmod 之外的所有内容都拒绝了我的许可。即使有了root我也没有成功。该文件是一个文本文件,我能够打开它:
{"mac": {"com.apple.FinderInfo": {"data": "AAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}}}
Run Code Online (Sandbox Code Playgroud)
甚至更改内容并保存它。
请仔细检查您拥有的权限。
我无法删除它的原因是,该文件夹是通过 NFS 挂载的,所以我的本地根无法执行任何操作。包含该.dropbox.attr文件的文件夹只有读取和可执行权限,因此rm .dropbox.attr无法以普通用户身份工作。