具有正确权限的目录不可写


1

我在新机器上安装了高级sierra,然后从我的时间机器外部磁盘复制到我家中的一些目录。

备份是使用与新安装中最近创建的用户名相同的用户的另一台计算机和操作系统版本创建的。

90%的事情都没问题。

由于未知原因,我家的一些子目录(从备份中复制)是不可写的。

我已经尝试了chmod命令的所有可能组合,理论上一切都应该正常工作:

  • cmd + i,一般:
    • 项目未锁定
    • 项目未共享
  • cmd + i,分享和许可:
    • myuser:读写
    • 工作人员:只读
    • 大家:只读
  • stat 说明:
    • 访问:(0755 / drwxr-xr-x)Uid:(501 / myuser)Gid:(20 /工作人员)
    • 501是我当前用户的正确ID

我认为这不是一个unix权限问题,因为权限应该按原样运行。

我也试过chflags nouchg my_folder没有运气。

不确定是什么原因引起的。


什么是ls -leO@d对他们的表现?
戈登戴维森

此命令是否产生任何输出?-sudo find "$HOME" ! -user "$(id -un)"
fd0

@GordonDavisson我已经cd到my_folder然后执行了ls -leO@d生成的命令:drwxr-xr-x+ 20 myuser staff - 640 May 6 11:26 . 0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown。我怀疑'每个人都否认'是罪魁祸首
莱昂纳多

@ fd0那个命令没有产生任何输出
莱昂纳多

1
嗯,这很好。它确认您拥有主文件夹中的所有文件。
fd0

Answers:


1

文件/文件夹模式,用户标志,非所有权,访问控制列表(ACL)和/或扩展属性可能会阻止写入权限。以下是一些可以修复这些类型错误的命令。

注意:我假设my_folder不包含任何符号链接。如果存在符号链接,则可能需要修改这些命令。

您可以使用下面给出的命令递归地将文件夹模式更改为755(drwxr-xr-x)。

find my_folder -type d -execdir chmod 755 {} \;

您可以使用下面给出的命令递归地将常规文件模式更改为644(-rw-r - r--)。

find my_folder -type f -execdir chmod 644 {} \;

您可以使用下面给出的命令递归删除用户标志。

sudo chflags -R nouchg,nohidden,noopaque,dump,nouappnd my_folder

您可以使用下面给出的命令递归更改文件和文件夹的用户所有权。

sudo chown -R $USER my_folder

您可以staff使用下面给出的命令递归更改文件和文件夹组。

sudo chgrp -R staff my_folder

您可以使用下面给出的命令递归删除任何访问控制列表(ACL)。

chmod -RN my_folder

您可以使用下面给出的命令以递归方式删除任何扩展属性。

xattr -rc my_folder

经常搜索锁定的文件和/或文件夹可能很有用。以下是此命令。

find my_folder -flags +uchg -exec ls -dF {} \;

chmod -RN my_folder似乎工作,所有其他命令什么也没做
莱昂纳多
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.