gpt4 book ai didi

security - 在 SVN 二进制文件上设置 SUID/SGID 位是否存在安全风险?

转载 作者:行者123 更新时间:2023-12-02 21:48:55 34 4
gpt4 key购买 nike

每当提交完成时,我想使用 SVN 存储库 (Unfuddle) 的回调功能来 ping 我的服务器上的 URL。我有一个 PHP 脚本接受消息并尝试调用 shell 脚本来执行“svn update”。

我面临的问题是 Apache 在用户“www-data”下运行,并且无权访问本地存储库:“.svn/lock”权限被拒绝。我已经阅读了有关在 shell 脚本上设置 SUID/SGID 的所有内容,以及大多数 *NIX 操作系统由于涉及安全风险而根本不支持它。

但是我可以在位于/usr/bin/svn 的 SVN 二进制文件上设置 SUID/SGID 位。通过允许任何用户在任何存储库上发出 SVN 命令,可以缓解该问题;不是最理想的...

我的问题是实现这种类型设置的最合乎逻辑/合理/安全的方法是什么,如果我确实将位设置保留在 svn 二进制文件上,是否会带来我没有意识到的重大安全风险?

很抱歉这篇冗长的帖子;这是我的第一个问题,我想问得更彻底。

谢谢

最佳答案

针对此类问题有两种类型的解决方案:轮询或事件驱动。

轮询解决方案的一个示例是在服务器上运行一个 cronjob,每 N 分钟更新一次。如果它适合您,这可能是最容易维护的。您可以通过从正确的帐户运行 cron 来回避整个权限问题。

您介绍的解决方案是事件驱动的解决方案。它们通常资源密集度较低,但可能更难设置。事件驱动解决方案的另一个示例是让 www-data 属于 svn 组。设置 SGID 位并将存储库目录 chown 为 svn 组。这应该允许该组中的任何人 checkin / checkout 。

如果需要限制更新,可以提升权限或临时更改用户。您可以使用 ssh 单一用途 key (也称为命令 key )以具有正确权限的用户身份进行 ssh 登录。然后可以使用单一用途 key 进行更新。

升级权限的另一种方法是使用sudo -u [用户] [命令]。更新 /etc/sudoers 文件以允许 www-data 将用户升级/更改为可以执行更新的用户。

无论如何,我都不会使用 SUID/SGID 脚本。

关于security - 在 SVN 二进制文件上设置 SUID/SGID 位是否存在安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021027/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com