Tim*_*nst 30 osx permissions directory files mv
尽管目录所有者设置为我的用户并且用户权限设置为 7 Music,mv但我在尝试移动文件夹时获得权限被拒绝。这是怎么回事?
(我知道我可以使用 sudo 但我想找出问题所在。这里有些东西闻起来很腥)。Ps:我在 Mac OS X El Capitan 上。
小智 52
我使用的是适用于 Linux 的 Windows 子系统。我在不同的 bash 实例中打开了该目录。关闭它让我移动目录。
Kon*_*rak 26
做笔记,在文件夹的时候a,移动b到c的文件夹权限a决定你能做什么。
在这种情况下,权限.将是最重要的。
请注意,权限比简单的更复杂rwx。您的music文件夹@末尾.有一个,文件夹末尾有一个+。
xattr -h以确定@符号的复杂权限。getfacl来确定ACL的+符号。Tim*_*nst 12
似乎在该目录深处的某处至少有 1 个文件没有正确的权限。
所以,我所做的是:
sudo chown -R valmar ./Music
sudo chmod -R 755 ./Music
Run Code Online (Sandbox Code Playgroud)
现在它起作用了。
这里的问题可能与 Music 文件夹的访问控制列表 (ACL) 有关。ACL 是一个单独的权限系统,与通常由ls -l. Home 文件夹和其他地方的一些其他目录也有 ACL。
要查看主目录中的 ACL,请使用:
/bin/ls -le ~
Run Code Online (Sandbox Code Playgroud)
您可能会看到类似0: group:everyone deny deleteMusic 目录的规则。正如您所指出的,您可以使用sudo. 如果您不想(或不能)这样做,那么您还有其他选择,因为您是文件的所有者。您可以根据其索引(在我上面给出的示例中为 0),从 Music 目录的 ACL 中删除有问题的条目:
/bin/chmod -a# 0 Music
Run Code Online (Sandbox Code Playgroud)
或者您可以删除 ACL 中的所有条目:
/bin/chmod -N Music
Run Code Online (Sandbox Code Playgroud)
现在您可以移动目录(取决于常规 POSIX 权限)。如果要在移动后放回 ACL,可以使用:
/bin/chmod +a "group:everyone deny delete" Music_tmp
Run Code Online (Sandbox Code Playgroud)
并/bin/ls -le再次使用以确认 ACL 是否符合您的要求。查看 ACL 示例以man chmod获取更多信息。特别是,这个介绍很有帮助:
每个文件都有一个 ACL,其中包含一个有序的条目列表。每个条目都引用一个用户或组,并授予或拒绝一组权限。在用户和组存在同名的情况下,用户/组名称可以以“user:”或“group:”为前缀,以指定名称的类型。
我不认为手册页解释了有关排序的规则,但此页面清楚地解释了 ACL 的顺序规则。特别是,显式deny规则将在显式allow规则之前应用。因此,只要该group:everyone deny delete条目就位,就不可能通过allow规则授予您的用户删除权限。这是因为该everyone组(包括您)的权限被拒绝,并且将首先应用该规则。
| 归档时间: |
|
| 查看次数: |
143607 次 |
| 最近记录: |