成为管理员

问题

  1. 管理员可能会无意中访问论坛的机密部分
  2. 这种不当访问未被记录
  3. 管理员可能会因为其超级权限而错过配置错误,因为这会隐藏他们看到的正常体验

功能描述

与用户Impersonating a User功能类似,具有管理员权限的用户应该能够 成为管理员 以仅在必要时执行管理任务。

与“冒充用户”功能不同,此功能不需要注销即可恢复正常用户权限。

此功能将:

  1. 允许管理员像普通用户一样浏览网站,分享用户的日常体验;
  2. 防止管理员无意中访问论坛的私人空间;
  3. 通过实际的管理员访问日志来防止对这些私人空间的未经授权访问。

第一点很有用,因为管理员的体验与用户体验大相径庭,管理员可能无法意识到用户遇到的问题(例如,与类别或组上设置的错误权限相关的问题等)。

第二点在需要保密性的群组中可能至关重要:点击一个链接可能会导致管理员无意中闯入并破坏保密性。

第三点将使管理员能够对未经授权访问论坛机密部分的行为负责,而目前他们根本无法做到这一点。

如何实现?

  • 权限升级应仅提供给实际的管理员帐户;
  • “管理员”可以被视为一个额外的信任级别(例如,级别 5 [^l5]);
  • 返回“正常”模式将简单地切换回之前的 信任级别

管理员模式可以添加一个额外的用户界面层,而不是提供一个全新的“管理员视角”:

  • 突出显示 仅因您是管理员 而有效的链接
  • 突出显示 仅因您是管理员 而可以访问的类别
  • 突出显示 因您是管理员 而可以看到的组成员身份(例如,如果您是访问组成员身份受限的组成员,则不会应用突出显示)
  • 突出显示 仅管理员 可以看到的信息

[^l5]:引用克里斯·马克(Chris Marker)的电影 Level 5,其中一位程序员试图完成她已故丈夫关于冲绳战役的电子游戏,以克服悲伤。

3 个赞

我认为这与以下内容类似:

3 个赞

我明白它是如何相似的,但另一个讨论中的问题与这里的问题有关:

除了管理员之外,你无法看到一个链接到你通常无法访问的机密对话实际上是禁止的。这只是一个(昨天发生在我们身上并促使我开始这个话题的)例子,其中管理员和参与者的非分离可能会有问题。

此外,我看到 Discourse 团队有全员管理员的习惯,这是一种横向的超级大国,并且在文化上无助于区分正常使用和特权使用。并非所有社区都是横向的,有时拥有管理员权限的技术人员不应被信任论坛上的一切,这不是一个极端情况:自计算机系统诞生以来,root 就可以看到和做任何事情。特权当然伴随着责任,但有时仁慈是不够的,尤其是当一个人无法区分可以和不可以的时候。

虽然“使用另一个浏览器配置文件”的解决方案可以处理普通账户和管理员账户,但它并不实用,尤其是当我们都习惯于随时可以使用工具时。每次需要管理员功能时都启动一个新的浏览器可能会非常烦人(并非所有人都喜欢或能够承受在他们的机器上占用空闲资源)。它也不能阻止窥探的“Bastard Operator From Hell”(BOFH)情况发生。

时代在变。在这里,我们有一位管理员意外访问了影响他人生活的机密信息,而他们本不应该这样做。这是隐私泄露。这是一个安全问题。

我理解潜在的复杂性,但核心问题仍然存在,并且应该以某种方式解决。在我看来,随着代码库的成熟,现在重新审视这个问题并评估所提出的方法是否可行将会很有用。

是的!关于这种(侵入性)问题的警告和保护措施将会很有用。


关于现有插件:

鉴于上述所有原因,我宁愿使用经典且众所周知的 sudo 隐喻,在参与者和管理员之间实现真正清晰的分离。

1 个赞

我同意 sudo 机制——在 Windows 中是用户账户控制对话框——是一种让账户能够拥有管理员权限但并非始终拥有该权限的好方法。

在我的一家论坛上,我采用的方法是拥有一个管理员账户,但通常总是使用“模拟用户”功能以普通账户登录。当我需要以管理员身份操作时,我会注销并重新登录。这确实意味着需要两个账户。

两个账户的一个优点是,当我使用我的普通账户发帖或评论时,我不会显得像一个有权有势的重要人物。(有时,以管理员身份评论会被视为一种宣告或一种警察行动。这取决于读者的文化和期望。)

1 个赞

由于此功能(别忘了投票!)最终实现还需要一段时间,我们正在评估使用两个帐户。这意味着:将现有帐户转换为普通帐户。以下是它应该包含的内容(我将尝试编辑此帖子,或将其设为 wiki,以便我们保持最新的文档,涵盖注意事项)…

:warning: 尚未测试:这一切都是理论上的,凭空想象。

将现有的 Discourse 管理员帐户转换为普通用户帐户

由于我们不想丢失原始帐户的历史记录和“论坛经验”,因此在删除管理员特权之前,我们需要谨慎行事。

给定用户 me,电子邮件为 original-me@email.example

第一种情况:DISCOURSE_DEVELOPER_EMAILS 中的管理员帐户

如果管理员帐户的电子邮件包含在 DISCOURSE_DEVELOPER_EMAILS 中,则它无法降级为普通帐户。

  1. 创建一个新帐户,该帐户将成为管理员,例如 me2,电子邮件为 original-me+admin@email.example
  2. me,向新帐户 me2 授予管理员特权。
  3. 编辑 app.yml(如果您使用双容器设置,则编辑 web_only.yml),将 original-me@email.example 替换为 original-me+admin@email.example,然后重建容器。
  4. me2,降级 me 原始帐户。

现在您拥有一个具有所有经验的普通用户帐户(me)和一个新的仅管理员帐户(me2):转到“后续操作”。

第二种情况:从普通用户提升的管理员帐户

这更简单,因为您可以降级此用户,而无需重建容器。

  1. 创建一个新帐户,该帐户将成为管理员,例如 me2,电子邮件为 original-me+admin@email.example
  2. me,向新帐户 me2 授予管理员特权。
  3. me2,降级 me 原始帐户。

现在您拥有一个具有所有经验的普通用户帐户(me)和一个新的仅管理员帐户(me2):转到“后续操作”。

后续操作

以前,您拥有一个具有管理员特权的单个用户帐户:您会收到系统升级通知,可以查看标志,并且可以访问所有区域,包括您应该看到的区域(例如,如果未加密的私人用户消息)或您不属于的组限制的类别。所有这些都没了!现在您必须定期登录您的管理员帐户,才能执行您以前从唯一用户/管理员帐户执行的任何操作(这也是提议的功能有用的另一个原因)。您需要养成习惯,同时打开这两个帐户,如果您想要实时管理员通知(例如,使用 Firefox 中的隐私标签页,或适用于其他 Web 浏览器的等效功能)。

注意事项

不应该将您的管理员帐户用于除管理以外的任何其他用途

当您是管理员时,请勿浏览讨论!这些时间会影响您自己的信任级别增长,而且您永远不知道何时会点击对您个人而言是禁止的链接。

如果您在管理员帐户中阅读了某些内容并想做出反应,请切换到您的普通用户标签页并浏览到原始 URL,或者,如果您的普通用户无权访问该部分:立即忘记它(当然,除非您应该以管理员身份做出反应)。

应该配置您的管理员帐户以使其外观不同

更改您的头像,以确保您永远不会混淆您的管理员帐户和您的普通用户帐户。使您的个人资料不可见。更改您的背景图片或主题,将您的姓名更改为包含“ADMIN”或类似“此帐户不发帖”的内容等。只需确保您不想尝试使用您的管理员帐户发帖即可。

应该配置您的管理员帐户以过滤通知

待办:详细说明此部分

您应该设置您的管理员帐户以静默所有电子邮件通知(除非您想要接收此类通知,例如避免需要一直保持管理员标签页打开),并且您能够清楚地区分哪些是给您个人的,哪些是给您的管理员角色的。

您可能希望在桌面上收到通知,以捕获标志和重要消息。

如何处理_员工_类别和耳语?

是的,您遇到了使用两个单独帐户进行管理员和普通用户参与的另一个复杂问题。有时您必须以管理员身份在论坛上进行互动。这可能是不可避免的。尽量不要患上精神分裂症,并尽量将您的_员工_干预次数降到最低。请报告您处理此艰巨问题的策略,并激励所有管理员的 Discourse 团队实施此功能。 :wink:

双帐户解决方案的优点

  1. 参与和管理之间清晰的分离(某种程度上)
  2. 您不会在普通帐户中犯错
  3. 所有管理员操作都已正确记录
  4. 作为用户,您可以像任何其他用户一样体验论坛,因此可以轻松捕获权限问题
  5. 如果您碰巧以 admin 身份发帖但打算以自己身份发帖,则可以将所有权更改为您的其他帐户(但这有点违背了拥有两个帐户的初衷)。

所以管理员将是普通用户或 TL4,但可以开启“管理员模式”来使用特殊的管理员功能?
如果是这样,有什么能阻止管理员一直开启它?

2 个赞

这是一个有趣的说明。有没有办法缩小差距——允许一个小组来控制通知的发送,而不包含内容?“有标记的帖子” “有未读消息” “您的安装已过时”

1 个赞

这里有一个想法:管理员角色不能发布到公共类别或主题,也不能点赞帖子。

2 个赞

这也意味着该账户可能会像普通用户一样被忽略。如果我们想忽略管理员,就只会收到他们必要的更新。
确实很棒👍🏻

1 个赞