如何正确创建 chroot jail(在 Ubuntu 或其他一些 Linux 上,如果不适用)以使用户能够编辑系统设置(例如 with ifconfig
)并能够与外部脚本通信?
用例是使用户能够使用 SSH 进行身份验证,然后能够从命令行执行非常有限的一组操作。不幸的是,棘手的部分是访问系统设置。
我考虑了多种选择,另一种选择是设置假 SSH 服务器(例如使用 Twisted),尝试使用受限 shell(但是,我似乎仍然需要 chroot),或者在 shell 之上编写脚本(?)。
如何正确创建 chroot jail(在 Ubuntu 或其他一些 Linux 上,如果不适用)以使用户能够编辑系统设置(例如 with ifconfig
)并能够与外部脚本通信?
用例是使用户能够使用 SSH 进行身份验证,然后能够从命令行执行非常有限的一组操作。不幸的是,棘手的部分是访问系统设置。
我考虑了多种选择,另一种选择是设置假 SSH 服务器(例如使用 Twisted),尝试使用受限 shell(但是,我似乎仍然需要 chroot),或者在 shell 之上编写脚本(?)。
最近我正在研究一些请求签名算法,结果发现关于在随后签名的部分中包含查询字符串的观点是“多样化的”。
长话短说,反对在签名字符串中包含查询字符串的人的论点是可以更改查询字符串(例如,可以更改值,可以删除/添加参数,可以更改顺序)。
此外,我从未在代理或负载平衡器中经历过这种行为,即使我经历过隐藏Authorization
标头(例如通过 Apache/WSGI)、更改请求方法(通过负载平衡器,可能是亚马逊的服务器做这样的事情)。我知道可以使用一些自定义脚本/规则在反向代理或负载平衡器上启用这种行为,但它可以通过请求的任何部分来完成。
基于应该包含查询字符串的假设已经完成了很多工作,而且不签署请求的最重要部分之一看起来很愚蠢。因此,我需要知道以原始形式包含查询字符串(因为它在 URL 中传递)将来是否会成为问题。
所以我的问题是:
任何代理或负载均衡器更改查询字符串是否很常见?这对我来说似乎很愚蠢。您知道默认情况下执行此操作的任何代理或负载平衡器(软件或其安装)吗?
我确信在这种情况下我们可以在代理/负载平衡器级别处理签名验证,但如果这在我们无法控制的中介中很常见,这可能是一个可行的论点。
请让我知道你对它的了解。如果您有任何问题,请告诉我。
作为澄清,我所说的查询字符串?arg1=val1&arg2=val2
是指以下 URL 的“”部分:
http://example.com/something/else?arg1=val1&arg2=val2
通过“改变查询字符串”,我的意思是任何可能使客户端和服务器看起来不同的操作(服务器看到的查询字符串与客户端使用的不同)。
我有一个类似的问题:Apache : Map one virtualhost to a subdirectory of another virtualhost
除了我的是关于在 Django 的域内提供 PHP 服务:
example.com
服务于 Django,使用 WSGI 等,example.com/some_app
需要完全基于PHP,不能通过Django,我怎样才能做到这一点?我相信这是可能的,但你能给我任何关于如何实现它的线索吗?