通过tty运行一个命令,而不用注释掉“requiretty”

我正在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个jenkinsjboss用户拥有,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&