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

The*_*Gnu 5 permissions git ntfs

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

在此输入图像描述

那么,背景信息:

ntfs分区;

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

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

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

编辑:我需要能够使用 Windows 中的文件

gee*_*ley 1

正如挂载选项表中所述您可以通过多种方式挂载 ntfs-3g。

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

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

因此,为了确保 chmod 不会失败,只需不要在挂载选项中指定任何这些( uidgidfmaskdmask)即可。umask您有一些替代方案,具体取决于您是想像 Windows 那样处理权限还是完全忽略 Linux 的权限。

如果您只想忽略所有访问控制(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,但定义权限,并且未找到用户映射文件
或何时:[...]找到用户映射文件

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

UUID=0123456789ABCDEF /windows ntfs noatime,users,windows_names
Run Code Online (Sandbox Code Playgroud)


usr*_*etc 1

根据这个答案sudo git ...(或同等地运行 git root)可能会有所帮助——它对我有帮助。

尽管根本问题是 NTFS 不支持 Unix 权限,但 chmod 对普通用户失败但对 root 用户却失败,这有点愚蠢。当您有条件时,更改安装选项是很好的选择。

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

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