白名单、封禁和管理员权限:那些行为与你预期不符的服务器命令
白名单不会踢出已在线的玩家,/ban 需要一个理由才有用,而管理员权限等级比管理员列表更重要。这些是让服务器所有者头疼的细节。
管理员命令看起来很简单,而且大部分确实如此。但有三种行为并非从语法上就能明显看出,这会导致操作失败。
白名单不会移除已在线的玩家
/whitelist on 从那一刻起开始强制执行列表。任何已经连接的玩家都会保持连接,即使他们不在列表中。要解决这个问题的命令是:
/whitelist reload
reload 会重新读取 whitelist.json 并踢出所有不在列表中的已连接玩家。开启白名单后就置之不理是经典的错误。
还有两个细节:
/whitelist add <name>会通过 Mojang 的 API 解析名称,因此服务器需要处于在线模式并已连接。离线服务器必须手动编辑whitelist.json,填入正确的 UUID。- 管理员默认会绕过白名单,这就是为什么你自己的账户永远无法证明白名单有效。请使用第二个账户进行测试。
/ban 需要一个理由,而 /ban-ip 是另一个列表
/ban <player> [reason]
/ban-ip <address|player> [reason]
理由是可选的,但省略它是一个错误——这是被封禁的玩家会看到的内容,也是未来的你在 /banlist 中试图回忆原因时会读到的内容。如果没有理由,条目只会显示“被管理员封禁”。
/ban 和 /ban-ip 会写入不同的文件(banned-players.json、banned-ips.json)。解除一个封禁并不会清除另一个,这是“已解除封禁”的玩家仍然无法连接的常见原因。请同时使用 /pardon 和 /pardon-ip。
管理员权限等级,而不仅仅是管理员列表
/op 默认授予等级 4,这是完全访问权限,包括 /stop。这四个等级是真实存在的,可以在 server.properties 中通过 op-permission-level 进行设置:
| 等级 | 授予权限 |
|---|---|
| 1 | 绕过出生点保护 (spawn protection) |
| 2 | 大部分作弊命令、命令方块 |
| 3 | 玩家管理——踢出、封禁、授予管理员权限 |
| 4 | 所有权限,包括 /stop |
需要 /kick 和 /ban 的版主需要等级 3,而不是 4。将等级 4 授予所有协助管理的人,是服务器因账户被盗而遭到破坏的原因。
function-permission-level 是独立的,它控制着数据包函数可以运行的权限——将其保持在 2 而管理员权限等级为 4 是“我的函数什么也没做”的常见原因。
列表命令
/banlist players、/banlist ips 和普通的 /banlist 都存在,如果从服务器终端运行,它们会将内容打印到控制台而不是聊天中。/whitelist list 只显示名称,不显示 UUID——当你需要检查身份时,请阅读 whitelist.json。
在 Server Admin Command Builder 中,你可以按照正确的参数顺序构建这些命令,它涵盖了 ban、ban-ip、pardon、kick、op、deop 和 whitelist 等命令,只需一个表单即可完成。