tomcat中exec引起的权限问题
一、场景描述
在之前的工作中与某第三方集成(接入他们的某个功能),需要获取服务器Mac地址鉴权;在开发过程中一点问题没有(开发环境是windows),测试环境也测试通过(测试环境是linux,但tomcat用的root启动),但部署到准生产环境后(准生产环境使用的是普通用户启动tomcat),签章的过程中抛出Exception,提示未授权,并且获取到的Mac为空。
出现这个情况后,怀疑可能是部署应用的user可能没有获取Mac地址的权限,当即使用XShell连接到准生产服务器用启动应用的user执行ifconfig -a(通过反编译看到他们获取Mac地址的代码是使用的这个命令)看能否获取到Mac地址,不出意料的是完全具有权限,可以获取到Mac地址。当即与第三方对接人员联系,他们回复说可能是没有权限,当他们知道user具有ifconfig -a的权限时,给出答复说他们那边看看怎么回事(结果是他们那边试了没有问题,叫我们用root启动试试。。。。。。。。。);后来用root启动后,果然一点问题没有,但生产环境我们不允许使用root启动tomcat应用。。。。。。。
后来使用tomcat的远程调试功能进行调试(catalina.sh jpda start),发现完全么有一点问题,Mac能够正常获取,能够正常鉴权,功能使用正常;但是通过startup.sh启动tomcat做测试时,仍旧抛出Exception,提示未授