背景 :
我创建了一个名为myappwith的应用程序Spring-boot。它由一个可自我执行的 jar 组成,并与 systemd 服务兼容。现在,我正在尝试将它与 jenkins 集成。
我想要的是:
我希望詹金斯能够:
问题:
到目前为止,只有 sudoers 可以启动/停止服务。我不希望 jenkins 成为 sudoer(看起来很乱)。
当前结构:
我有一个用户myapp有一个/home/myapp文件夹。生成的 jar 被调用myapp并放置在/home/myapp. 用户myapp是生成的 jar 的所有者:
myapp@myserver:~/backend$ ll
total 53900
drwxrwxr-x 2 myapp myapp 4096 Apr 25 17:09 ./
drwxr-xr-x 6 myapp myapp 4096 Apr 25 17:08 ../
-rw-rw-r-- 1 myapp myapp 511 Apr 20 16:13 application.properties
-rwxr--r-- 1 myapp myapp 55175294 Apr 20 19:06 backend-1.0-SNAPSHOT.jar*
lrwxrwxrwx 1 myapp myapp 24 Apr 20 19:20 myapp -> backend-1.0-SNAPSHOT.jar*
-rw-r--r-- 1 myapp myapp 179 Apr 20 19:26 myapp.service
Run Code Online (Sandbox Code Playgroud)
我放置了一个 ssh 密钥,以便 jenkins 可以登录为myapp@myserver.
作为myappjar 的所有者,我认为可能有一个选项允许用户myapp调用systemctl start/stop myapp. 实际上,我可以打电话systemctl status myapp但不能start/stop(要求root密码)。
有什么建议?
bre*_*ent 31
sudo是要走的路。创建一个新组(appadmin例如),将您的jenkins用户放入其中,然后使用visudo添加一个包含有限命令列表的新条目,例如:
Cmnd_Alias MYAPP_CMNDS = /bin/systemctl start myapp, /bin/systemctl stop myapp
%appadmin ALL=(ALL) MYAPP_CMNDS
Run Code Online (Sandbox Code Playgroud)
如果您希望该appadmin组无需先输入密码即可操作服务(例如,如果用户仅通过 SSH 密钥进行身份验证,则很有用),
Cmnd_Alias MYAPP_CMNDS = /bin/systemctl start myapp, /bin/systemctl stop myapp
%appadmin ALL=(ALL) NOPASSWD: MYAPP_CMNDS
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35817 次 |
| 最近记录: |