git init 显示“错误:chmod ... .git/config.lock 失败:操作不允许”

git init 显示“错误:chmod ... .git/config.lock 失败:操作不允许”

在 Ubuntu 中,文件权限对我来说是最糟糕的事情。这次我遇到了这个问题:

在此处输入图片描述

背景信息如下:

它是ntfs分区;

我已经跑了sudo chown *username*:*username* -R partition_mount_point

我可以在那里创建/删除目录,而无需sudo

git init在Linux 文件系统上运行时没有错误消息;

编辑:我需要能够处理 Windows 中的文件

答案1

正如解释的那样这里在 Mount Options 表中,您可以通过多种方式挂载 ntfs-3g。

如果您像下面这样挂载它,权限由挂载选项决定,而不是由文件元数据 (ACL) 决定。因此 chmod 将无法更改权限,并且会失败并出现错误。

模式:所有文件和目录具有相同的所有权(uid、gid)和权限(受 fmask、dmask 和 umask 限制)
时间:已定义 uid 或 gid 或 fmask 或 dmask 或 umask,并且未找到用户映射文件

因此,为了确保 chmod 不会失败,请不要在挂载选项中指定任何这些( uidgidfmask或)。您可以根据是否要像 Windows 那样处理权限或完全忽略 Linux 的权限dmask来选择其他方法。umask

如果您只想忽略所有访问控制(chmod、chown 和权限检查不会执行任何操作或返回任何错误),请按以下方式挂载它。这是最简单的方法:

模式:无权限检查
时间:无 uid、gid、fmask、dmask、umask、权限或 acl 选项,且未找到用户映射文件

如果您想要启用与 Windows 兼容的访问控制,则可以使用permissionsmount 选项(而不是前面提到的其他选项)。
但是,这会限制对私人文件夹的访问C:\Users\<You>,因此您可能必须指定用户映射文件(C:\.NTFS-3G\UserMapping),以将您的 Windows 用户 SID 映射到您的 Linux 用户 UID。这更复杂,因此我建议您忽略权限(如果可以的话)。

模式:根据所有权和模式进行标准权限检查,但不使用 POSIX ACL(忽略 uid、gid、fmask、dmask 和 umask)
时间:未定义 uid、gid、fmask、dmask、umask 或 acl,但定义了权限,并且未找到用户映射文件
或时间:[...] 找到用户映射文件

silent示例 fstab 条目(由于我没有指定其他选项,因此相关隐含选项有效):

UUID=0123456789ABCDEF /windows ntfs noatime,users,windows_names

答案2

按照这个答案sudo git ...(或者等效地运行 git root)可能会有帮助——它对我有帮助。

chmod 对普通用户失败,但对 root 却能成功,这有点可笑,尽管根本问题是 NTFS 不支持 Unix 权限。如果您有条件,更改挂载选项是个不错的选择。

此外,如果尚未这样做,请编辑.git/config并设置。也会这样做,但会遇到相同的锁文件权限问题。filemode = falsegit config core.fileMode false

回答只是因为这是“.git/config.lock 失败:操作不允许”搜索结果中的第一个条目

相关内容