我需要两个建议来使我的脚本从本地服务器运行以及 ssh 执行
1. 如何更新sudoers
在服务器中我有一条路径
/var/log/数据/状态/
Parent 和 Child_dir 的所有文件均归 tomcat 用户和组所有。
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221119.status
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221116.status
-rw-rw-r-- 1 tomcat tomcat 0 Feb 17 02:23 20221112.status
我希望名为 new_user 的用户能够重命名 /var/log/data/status/ 下的文件,作为我的脚本的一部分。我尝试像下面这样编辑我的 sudoers 文件,但它无需密码即可运行,因为 tomcat 是应用程序用户没有密码,不确定如何对其进行 sudoers 更改。
new_user ALL=NOPASSWD: /bin/bash /path/my_script [a-z_]* 20[0-9]*
我想要实现的是,无需任何密码即可运行
sudo -u new_user /bin/bash /path/my_script
2.通过ssh运行脚本
我的另一个要求是通过 ssh 从其他服务器运行相同的脚本,如果可能,请帮助解决语法
- 在服务器 A 上(以我的用户 iamsage 身份登录)-
我需要运行这样的东西
ssh new_user@remote_host "sudo -u new_user /path/my_script arg1 arg2"
答案1
你的sudoers
线路不太对。试试这个
your_user ALL=(new_user) NOPASSWD: /path/my_script
然后确保您的脚本可执行并且具有#!/bin/bash
第一行。
远程调用建议的一个大问题是您尝试以新用户身份登录,因此您不需要使用sudo
.尝试其中任何一个,但不要混合使用:
ssh remote_host sudo -u new_user /path/my_script arg1 arg2
ssh new_user@remote_host /path/my_script arg1 arg2
在这两种情况下,完全可以引用用于远程执行的整个命令,但我在这里没有这样做