【发布时间】:2025-12-27 00:30:10
【问题描述】:
我有一个传统的 Rails 4 应用程序,带有用户模型和用于身份验证的魔法。 User 模型有一个 'admin' 标志。实现管理员暂时成为另一个用户(以查看用户看到的内容以帮助调试问题)然后重新成为其原始的、启用管理员的用户的最佳方法是什么?
【问题讨论】:
我有一个传统的 Rails 4 应用程序,带有用户模型和用于身份验证的魔法。 User 模型有一个 'admin' 标志。实现管理员暂时成为另一个用户(以查看用户看到的内容以帮助调试问题)然后重新成为其原始的、启用管理员的用户的最佳方法是什么?
【问题讨论】:
【讨论】:
我不知道 rails,但是在 Unix 下,你的可执行文件需要被允许在用户模式之间切换。这是通过在可执行文件上设置“s”位并将所有者和/或组设置为执行您希望应用程序能够执行的任何操作所需的。 (即大多数情况下,您使用 root 作为所有者,使用 srwxr-xr-x 作为权限,即 4755 作为模式编号)。
一旦你有了它,你的应用程序就可以使用函数setuid(<uid>)。如果您使用 root,
在 Linux 下,您还有 seteuid()、setfsuid() 和 setreuid()。
为确保您做的是正确的事情,我建议您阅读相应的手册页。
【讨论】:
我没有这方面的经验,但也许你可以在你的用户模型中添加一个超级用户标志。如果您是超级用户,您可以调整管理员标志。超级用户的唯一目的就是能够关闭或打开管理员权限。现在,您可以在用户或管理员之间切换,并查看用户看到的内容。完成后,您启用 admin 并恢复您的管理界面。
这可行,但我不知道这是否是您用例的最佳解决方案。这里只是理论。 :)
【讨论】: