我有一个在 Ubuntu 上运行的现有软件包,它使用 chroot jail,因此需要以 root 身份运行。我想从 Ubuntu 上的 Tomcat6 中运行的 Java Web 应用程序执行此操作,因此大概我必须以 root 身份而不是 Tomcat6 用户身份运行 Tomcat6。
我该如何将 tomcat6 更改为以 root 身份而不是 tomcat6 用户身份运行?
答案1
我猜这与之前的一个问题有关?
Ubuntu - 非 root 用户可以在 chroot jail 中运行进程吗?
以 root 身份运行 Tomcat...*
假设您已经从 Ubuntu 存储库安装了 tomcat6 包,编辑 /etc/init.d/tomcat6 文件并更改以下行:
TOMCAT6_USER=tomcat6
读书
TOMCAT6_USER=root
话虽如此...
在不受信任的客户端(例如互联网)可以访问 Tomcat 的环境中,不建议以 root 身份运行 Tomcat。问题是,如果 Tomcat 或在其中运行的某个 Web 应用程序以某种方式被利用,它们将拥有对底层系统的完全访问权限。例如,它们可以修改文件、执行进程等。
尽管这种情况发生的可能性很小,但最好还是做最坏的打算,抱最好的希望。
更安全的方法是继续以默认 tomcat6 用户身份运行 Tomcat,并让其以更隔离的方式调用外部 chrooted 进程。如何执行此操作取决于被调用的进程以及需要发生的情况。
如果您发布有关被调用进程的信息,包括它在做什么以及为什么这样做,其他人将能够帮助您确定实现此目的的最佳方法。例如,您可以设置一个监视器,每当目录内容发生变化时执行 chrooted 任务,或者设置 Tomcat 可以调用来运行进程的本地 Web 服务。
答案2
您无法设置软件包可执行文件的粘性位吗?这样它就会始终以文件所有者的身份运行,在本例中就是 root。
使所有用户(或至少包括 tomcat6 的组)可执行二进制文件,并设置用户粘滞位。
$sudo chmod + x 二进制
或者
$sudo chmod 750 binary //(将 tomcat6 置于文件组的组中)
然后
$sudo chmod u+s 二进制
除非不行,否则应该可以。我没有使用 chroot 的实际经验,但在标准设置中这会起作用。
另外,是否可以将 tomcat6 添加到 sudoers 文件中,并允许它运行无需密码验证的“二进制文件”?
想一想。