![SSH를 통한 sudo에 대한 조언](https://linux55.com/image/217046/SSH%EB%A5%BC%20%ED%86%B5%ED%95%9C%20sudo%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%A1%B0%EC%96%B8.png)
로컬 서버와 SSH 실행에서 스크립트를 실행하려면 두 가지 제안이 필요합니다.
1. sudoer 업데이트 방법
서버에는 경로가 있습니다
/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
두 경우 모두 원격 실행을 위해 전체 명령을 인용하는 것이 완벽하게 가능하지만 여기서는 그렇게 하지 않았습니다.