我正在 Linux 环境中设置初级 CTF(夺旗战)。我会提出一些问题,告诉用户运行特定的命令。
我遇到的问题是将用户限制在某个目录中并且只能运行某些命令。
例如玩家需要改变目录然后使用“ls”找到flag并完成挑战。
但我不希望玩家看到服务器中的其他目录,或者让人们能够 cd 到不应该去的地方。
任何帮助将非常感激。
答案1
调查使用受限外壳对于用户来说。结合修改 PATH 来指定一个目录,该目录只包含您允许用户运行的命令(您可以创建这样的目录,然后将指向原始命令的符号链接或硬链接放在那里),它可能会满足您的需要。
答案2
我有两个可能的解决方案:
- 仅授予 ctf 用户对其主目录的权限,每个挑战都需要一个不同的用户。每次他们尝试退出目录时都将被拒绝。
我发现另一篇帖子建议使用 adduser 命令:
adduser --home/restricted/directory restricted_user
- 使用docker并在不同的环境中运行每个级别。
希望这可以帮助!