今天,我将向您介绍Tomcat如何在Linux下对非根用户执行特权操作。很多人可能不太了解。为了让大家更好的了解,边肖为大家总结了以下内容,希望大家能从这篇文章中有所收获。
以下是Apache开源项目Commons Daemon,中一个名为JSVC的工具。
介绍
官网是这样介绍JSVC的。
Jsvc是一系列应用程序和类库的集合,用于让Java应用程序更容易在UNIX上运行。Jsvc允许应用程序执行一些特权操作,比如root(比如绑定一个小于1024的端口),然后切换回非特权用户。Cygwin模拟器可以用于Win32,然后Windows用户更喜欢使用Procrun将应用程序运行到Windows服务中。
这样,使用Jsvc,我们不再需要以root身份运行Tomcat来使用端口80。接下来,让我们看看如何使用Jsvc。
在CATALINA_HOME/bin目录中,有这样一个文件:commons-daemon-native.tar.gz。通过编译这个文件,我们可以得到Jsvc。按如下方式编译命令:
cd $CATALINA_HOME/bin
塔尔xffz commons-daemon-native.tar.gz
CD commons-daemon-1 . 0 . x-native-src/UNIX。/configure
制造
cp jsvc./.
激光唱片./.
然后,当使用Jsvc执行以下命令时,Tomcat将作为daemon.运行。/bin/jsvc \
-类路径$ CATALINA _ HOME/bin/bootstrap . jar : $ CATALINA _ HOME/bin/Tomcat-juli . jar \
-outfile $ CATALINA _ BASE/logs/CATALINA . out \
-err file $ CATALINA _ BASE/logs/CATALINA . err \
-dcatalina . HOME=$ CATALINA _ HOME \
-dcatalina . BASE=$ CATALINA _ BASE \
-djava . util . logging . manager=org . Apache . juli . classloaderlogmanager \
-djava . util . logging . config . file=$ CATALINA _ BASE/conf/logging . properties \
org . Apache . catalina . startup . bootstrap
当然,Jsvc有很多有用的参数可以使用。例如,切换前面提到的非特权用户可以由用户指定。如果要让JVM进程在服务器模式下运行,可以指定- server参数。更多的参数可以通过帮助查看,所有参数的列表将被返回。
在这里,假设您以- user作为根用户启动Tomcat,则需要禁用org . Apache . catalina . security . security listener的检查,否则启动将不会成功。我们前面提到,非根用户可以通过该选项使用特权端口。虽然指定了普通用户,但是也可以使用特权端口。
让我们继续开头的话题。在Linux系统中,我们希望运行Tomcat作为一个服务,它可以在系统启动时自动启动。我们通常在/etc/init.d目录中创建一个启动脚本。如果在创建服务时使用了Jsvc,那么已经为我们考虑了Tomcat。在CATALINA_HOME/bin/目录中,有一个daemon.sh,的脚本可以作为模板。
作为守护进程运行时,需要注意的一个问题是commons-daemon.jar必须位于Tomcat的类路径中,因为在MANIFEST中有这个jar的依赖语句。bootstrap.jar的MF:
Class-Path:公地守护程序. jar
如果在运行时遇到异常,比如ClassNotFoundException,只需将jar包添加到类路径中。也就是说,可以指定jsvc的-cp参数。
看完以上内容,你对Tomcat在Linux下作为非根用户如何执行特权操作有了更好的理解吗?如果您想了解更多知识或相关内容,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/138401.html