Xia*_*gyu 208 git cve-2022-24765
我发现 Apache 2 的错误日志是致命的:
unsafe repository ('/home/repon' is owned by someone else)
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为我有git rev-parse --symbolic-full-name --abbrev-ref HEAD'PHP 代码,而且看起来新的 Git 安全更改不再允许www-data运行此 Git 命令。
运行以下命令不起作用:
git config --global --add safe.directory /homerepon
Run Code Online (Sandbox Code Playgroud)
有解决方法来解决这个问题吗?
Git 版本:2.35.3
PHP 版本:7.4
Apache2 版本:2.4.41
8ct*_*pus 159
随着 Git 2.35.2 安全更新的发布,这种情况开始出现,该更新修复了此处描述的漏洞。致谢@Juan-Kabbali
以下是四种可能的解决方案:
git config --global --add safe.directory /home/repon
Run Code Online (Sandbox Code Playgroud)
这会将safe组添加到文件~/.gitconfig中,如本示例所示:
[safe]
directory = /home/repon
Run Code Online (Sandbox Code Playgroud)
sudo -u ubuntu -- git status
Run Code Online (Sandbox Code Playgroud)
注意:这需要用户www-data具有以用户身份执行 Git 命令的权限ubuntu(假设ubuntu是存储库所有者)。为此,您需要在其中添加一个/etc/sudoers.d/包含以下内容的新文件:
www-data ALL=(ubuntu) NOPASSWD: /usr/bin/git
Run Code Online (Sandbox Code Playgroud)
这可能会产生安全隐患,因此请先咨询您的安全人员。
www-datasudo chown -R www-data:www-data /home/repon
Run Code Online (Sandbox Code Playgroud)
apt install git-man=1:2.17.0-1ubuntu1 git=1:2.17.0-1ubuntu1
Run Code Online (Sandbox Code Playgroud)
注意:至少在 Windows 上,可弹出驱动器上的所有 Git 存储库似乎都被认为是不安全的,并且更改所有权似乎不起作用。
小智 151
这是因为 Git 安全更新。
要使 Git 信任任何目录,您可以在PowerShell中运行以下命令:
git config --global --add safe.directory *
Run Code Online (Sandbox Code Playgroud)
在Bash中,您应该转义*以避免扩展:
git config --global --add safe.directory '*'
Run Code Online (Sandbox Code Playgroud)
仅在 Git 2.36 中添加了支持*,如:Git 2.36 的亮点和评论中的 genonymous所提到的。
如果您只信任一个目录,则可以运行此命令
git config --global --add safe.directory your-directory
Run Code Online (Sandbox Code Playgroud)
Hub*_*mas 117
对于 Windows,我必须执行以下操作:
\n右键单击发生错误的 Git 存储库文件夹,然后选择“属性”
\n选择安全选项卡,然后选择“高级”(左图:按“Erweitert”)
\n检查新打开的窗口顶部区域的所有者属性(右图:“Besitzer”)并进行调整(右图:按“\xc3\x84ndern”)。这必须是您的工作 Windows 帐户
\n按OK并等待,直到权限设置完毕,然后 Git 错误消息应该成为历史记录
\n\n如果您之后移动或重命名该目录,此解决方案也适用。在我看来,你应该更喜欢这个解决方案
\ngit config --global --add safe.directory <repo-path>\nRun Code Online (Sandbox Code Playgroud)\n每次对目录名称进行更改时都必须执行此操作。您还可以手动调整.gitconfig文件
\nC:\\Users\\<username>\\.gitconfig\nRun Code Online (Sandbox Code Playgroud)\n添加到安全列表后。
\ntlb*_*erd 11
除了Huber Thomas 对 Windows 的 回答之外,我还必须使用PowerShell或CMD,因为我在源代码控制管理文件夹中有一堆文件,我已从一个位置移动到另一个位置。TAKEOWN命令很好地处理了这个问题(虽然有点慢)。
takeown /f . /r /d Y这将递归地处理当前文件夹中的所有文件夹,并将所有权设置为登录用户(大概是您)。
以前的答案中的解决方案都不适合我,但更改存储库的所有权却对我有用。我正在运行Ubuntu 20.04.4 (Focal Fossa) LTS,并且运行了以下命令:
sudo chown -R username:group directory
Run Code Online (Sandbox Code Playgroud)
小智 7
作为自动化的一部分,我们的场景涉及多次调用一个脚本,并且我们事先不知道工作区。
因此,在我们的例子中,git config --global --add safe.directory *在 中创建了多个条目~/.gitconfig。
git config --global --replace-all safe.directory '*'帮助我们确保没有重复的条目。
sudo git config --system --add safe.directory /homerepon
Run Code Online (Sandbox Code Playgroud)
--system将存储库标记为对所有用户都是安全的,包括www-data.
小智 5
您只需打开 Git bash 并输入以下命令即可
git config --global --add safe.directory '*'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175662 次 |
| 最近记录: |