在为Java应用程序开发共享托pipe解决scheme时,我们遇到了一个问题,因为用户可以上传他们自己的jar,我们如何限制他们运行Linux命令(如df -h或free -g)与这些jar? 当然,我们有我们的权限的情况下,他们无法绕过他们自己的文件,但这些命令是我们遇到的问题。
当你可以控制那个Java虚拟机,那么你可以使用java策略来指定什么是允许的,什么不是。
有了它们,您可以限制访问文件系统的某些部分,特定的端口等
这里有一个很好的教程:
http://docs.oracle.com/javase/tutorial/security/tour2/step2.html
但是您必须强制用户在激活安全pipe理器的情况下运行jvm。 如果您无法执行此操作,则可以简单地禁用策略。
这些用户可以写入的每个文件系统树必须挂载noexec 。
您可以通过为它们创build一个组来阻止对它们的所有二进制文件的访问,并将一个ACL enry添加到/bin , /sbin , /usr/bin […],以防止该组访问该目录:
for dir in /bin ...; do setfacl -mg:javausers:- "$dir" done
你创build一个新目录/whitelisted_binaries并硬链接他们需要的所有二进制文件(比如java本身,并把这个目录作为用户$PATH一部分,这些硬链接可能需要在包更新后重新创build。