Answers:
请注意,在文件夹中a
,移至b
时c
,文件夹权限a
确定您可以做什么。
在这种情况下,上的权限.
将是最重要的。
请注意,权限比简单更复杂rwx
。您的music
文件夹@
的末尾.
有一个,文件夹+
的末尾有一个。
xattr -h
以确定@符号的复杂权限。getfacl
来确定ACL的+符号。man xattr
可能是一个很好的起点。
ls -la@e
。最有可能在这里,有一个deny delete
ACL也阻止了重命名。
好像在该目录中某个位置的深处至少有一个文件没有正确的权限。
因此,我所做的是:
sudo chown -R valmar ./Music
sudo chmod -R 755 ./Music
现在可以了。
chmod 755
删除了Music文件夹上的特殊“ @”权限?
chmod -a 'everyone deny delete' Music
要这样做。埃尔卡皮坦的情况可能有所不同。
这里的问题可能与Music文件夹的访问控制列表(ACL)有关。ACL是通常由列出的常规POSIX的独立许可系统ls -l
。主文件夹和其他目录中的某些其他目录也具有ACL。
要查看主目录中的ACL,请使用:
/bin/ls -le ~
您可能会看到类似0: group:everyone deny delete
“音乐”目录的规则。如您所述,您可以使用解决问题sudo
。如果您不想这样做(或不能这样做),则可以选择其他方法,因为您是文件的所有者。您可以根据音乐目录的ACL索引(在我上面给出的示例中为0)从音乐目录的ACL中删除有问题的条目:
/bin/chmod -a# 0 Music
或者,您可以剥离ACL中的所有条目:
/bin/chmod -N Music
现在,您可以移动目录(受常规POSIX权限的限制)。如果要在移动后放回ACL,可以使用:
/bin/chmod +a "group:everyone deny delete" Music_tmp
并/bin/ls -le
再次使用以确认ACL是否符合您的要求。请参阅中的ACL示例以man chmod
获取更多信息。特别地,此介绍很有帮助:
每个文件都有一个ACL,其中包含一个有序的条目列表。每个条目均指一个用户或组,并授予或拒绝一组权限。如果用户和组名称相同,则用户/组名称可以以“ user:”或“ group:”为前缀,以指定名称的类型。
我不认为该手册页解释了有关订购的规则,但是此页清楚地解释了ACL的订购规则。特别是,显式deny
规则将在显式allow
规则之前应用。因此,只要group:everyone deny delete
条目到位,就不可能授予用户使用allow
规则删除的权限。这是因为拒绝everyone
包括您在内的组的权限,并且该规则将首先应用。
everyone deny delete
macOS默认主目录上的ACL条目是无法移动或删除目录的实际原因。(也请注意,操作系统可能随时重新创建它们。)
当一组程序正在我要删除的目录中运行时,我遇到了这个问题。为了移动目录,我必须首先杀死该目录中所有正在运行的程序。
在以下命令中,请谨慎选择程序名称。我使用了以下命令,以供参考:
ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep
# make sure that you are only about to kill the programs you want to kill
ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep | awk '{print $2}' | sudo xargs kill -9
sudo mv /usr/local/[DIR_FOR_ANNOYING_PROGRAM] /usr/local/[DIR_FOR_ANNOYING_PROGRAM]2
通用程序为:
kill -9
非常小心)目录中的所有程序grep
并仔细检查搜索字词时提供任何警告。无论您要投入的是什么,grep
都将从所有正在运行的程序的池中进行选择,并且kill
具有root特权...