答案1
正如解释的那样这里在 Mount Options 表中,您可以通过多种方式挂载 ntfs-3g。
如果您像下面这样挂载它,权限由挂载选项决定,而不是由文件元数据 (ACL) 决定。因此 chmod 将无法更改权限,并且会失败并出现错误。
模式:所有文件和目录具有相同的所有权(uid、gid)和权限(受 fmask、dmask 和 umask 限制)
时间:已定义 uid 或 gid 或 fmask 或 dmask 或 umask,并且未找到用户映射文件
因此,为了确保 chmod 不会失败,请不要在挂载选项中指定任何这些( uid
、gid
、fmask
或)。您可以根据是否要像 Windows 那样处理权限或完全忽略 Linux 的权限dmask
来选择其他方法。umask
如果您只想忽略所有访问控制(chmod、chown 和权限检查不会执行任何操作或返回任何错误),请按以下方式挂载它。这是最简单的方法:
模式:无权限检查
时间:无 uid、gid、fmask、dmask、umask、权限或 acl 选项,且未找到用户映射文件
如果您想要启用与 Windows 兼容的访问控制,则可以使用permissions
mount 选项(而不是前面提到的其他选项)。
但是,这会限制对私人文件夹的访问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 = false
git config core.fileMode false
回答只是因为这是“.git/config.lock 失败:操作不允许”搜索结果中的第一个条目