我正在CentOS上运行Jenkins的最新版本。 在我的Jenkins工作中,我可以运行构build后步骤,并包含此命令,
sudo /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war
与错误一起死亡
sudo: sorry, you must have a tty to run sudo
有没有办法我可以重写上面的命令通过一个tty壳? 在我们的/ etc / sudoers文件中,我们有这个行
Defaults requiretty
但是我们的系统pipe理员已经禁止我们评论它。
如果/usr/java/jboss/server/default/deploy/myclient-1.0.war
被root删除,你可能会做错了什么。 我想不出一个好的理由,那就是文件需要被root所有。
另一个选项是看你的系统pipe理员如何看待这个命令的requiretty。
Cmnd_Alias NOTTYCMD = /bin/rm /usr/java/jboss/server/default/deploy/myclient-1.0.war Defaults!NOTTYCMD !requiretty
但是我们的系统pipe理员已经禁止我们评论它。
他只能为jenkins
用户禁用:
Defaults:jenkins !requiretty
部署目录中的文件由拥有755个
jenkins
的jboss
用户拥有,Jenkins在用户jenkins
下运行。
或者使deploy
文件夹组可写并设置SGID位:
chmod -R g+w /usr/java/jboss/server/default/deploy/ chmod g+s /usr/java/jboss/server/default/deploy/
并将jenkins
用户添加到jboss
组:
usermod -a -G jboss jenkins
那么你可以删除/usr/java/jboss/server/default/deploy/myclient-1.0.war
而不使用sudo
。
当我尝试以jboss用户身份启动jboss时,我也遇到了这个问题。 通过以下方式更改文件/etc/init.d/jboss中的一行来解决问题:
before:su – $ JBOSS_USER -c“LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG”2>&1> $ JBOSS_CONSOLE_LOG&
之后:su – $ JBOSS_USER -c“LAUNCH_JBOSS_IN_BACKGROUND = 1 JBOSS_PIDFILE = $ JBOSS_PIDFILE $ JBOSS_SCRIPT -c $ JBOSS_CONFIG 2>&1> $ JBOSS_CONSOLE_LOG&