我有一个在Ubuntu上运行的现有软件包,它使用chroot jail,因此需要以root身份运行。 我想从Ubuntu上运行的Tomcat6中运行的Java Web应用程序执行此操作,所以推测必须以Tomcat6身份运行Tomcat6,而不是Tomcat6用户。
我如何去改变tomcat6而不是tomcat6用户运行?
我猜这与先前的问题有关?
Ubuntu – 非root用户可以在chroot jail中运行进程吗?
以root身份运行Tomcat … *
假设您已经从Ubuntu存储库安装了tomcat6软件包,请编辑/etc/init.d/tomcat6文件并更改下列行:
TOMCAT6_USER=tomcat6
读书
TOMCAT6_USER=root
话虽如此…
在不受信任的客户端(如Internet)访问的环境中,不build议以root身份运行Tomcat。 问题是,如果Tomcat或其中运行的某个Web应用程序以某种方式被利用,则它们可以完全访问底层系统。 他们可以修改文件,执行进程等。
当然,这个机会很渺茫,但是最好的计划是最坏的和最好的希望。
更安全的方法是继续运行Tomcat作为默认的tomcat6用户,并以更孤立的方式调用外部chroot进程。 你如何做到这一点取决于正在调用的过程和需要发生的事情。
如果您发布被调用stream程的信息,它在做什么以及为什么其他人将能够帮助您find实现这一目标的最佳方式。 例如,您可以设置一个监视器,在目录内容发生更改时执行chroot任务,或者Tomcat可以调用的本地Web服务来运行该进程。
难道你不能设置软件包可执行的粘性位? 这将始终作为文件的所有者运行,在这种情况下,它将是root。
使所有用户(或者至less包括tomcat6的组)都可执行二进制文件,并设置用户粘滞位。
$ sudo chmod + x binary
要么
$ sudo chmod 750二进制文件//(在文件组的组中有tomcat6)
然后
$ sudo chmod u + s二进制文件
那应该这样做,除非没有。 我没有chroot的实际经验,但在一个标准的设置,这将工作。
另外,可以添加tomcat6 sudoers文件,并允许它运行这个“二进制”没有密码validation?
想想看。