GIT 在克隆 repo 时更改文件权限后,OSX 终端 bash 权限被拒绝

GIT 在克隆 repo 时更改文件权限后,OSX 终端 bash 权限被拒绝

我是 OSX/Unix 命令行的初学者。

我有一个在 OSX 计算机上创建的 GIT 存储库。最近我克隆了存储库并通过 ./BashFile.sh 在存储库中运行 bash 脚本。这给了我一个权限被拒绝的错误。所以我运行了 chmod 777 ./BashFile.sh。下次我运行 ./BashFile.sh 时,它成功了,只是 bash 文件调用了其中的其他文件,然后出现了“权限被拒绝”错误。然后我通过 sudo -s 以超级用户身份登录到终端会话并运行 ./BashFile.sh 命令,但我仍然收到权限被拒绝的错误。

我该如何解决这个问题,我需要递归地 chmod 777 整个 repo 目录吗?为什么使用 Sudo 不允许我获得权限?

需要注意的一点是,当我最初在计算机上创建 repo 时,我可以毫无问题地运行所有命令。自从克隆 repo 以来,我一直遇到权限被拒绝的错误。

答案1

您无法直接执行未设置执行权限位的文件。使用sudo将允许您(尝试)执行设置了任何执行位的文件,但如果未设置执行位,则无论您以谁的身份运行,都将收到“权限被拒绝”的信息。

你可以通过运行来检查 git 是否认为文件权限与实际权限不同git status- 如果文件权限发生了变化,它将显示文件已修改;如果是这样,你可以按照说明进行修复在 stackoverflow 上

如果 git 认为一切都很好,但是你的源存储库和克隆存储库之间的权限不同,那么可能是你使用了一些奇怪的文件系统,这让 git 对文件应该具有的权限的概念感到困惑,或者你可能设置了 git config 选项(请参阅同一问题的旧答案)。无论原因是什么,您都需要做同样的事情:复制原始权限并将其应用于您的克隆;这之前已经回答过这里

相关内容