Jenkins를 통해 스크립트 실행 [닫기]

Jenkins를 통해 스크립트 실행 [닫기]

사용자 x의 홈 디렉터리에 있는 jenkins를 통해 스크립트를 실행해야 합니다. /home/x/script.sh

.ssh이 스크립트는 폴더에서 구성 설정을 추출 하므로 사용자 x만 실행할 수 있습니다 .

현재 스크립트는 jenkins사용자를 통해 실행된다고 생각하기 때문에 실패합니다.

답변1

귀하의 행동은 귀하의 목적에 위배됩니다. 스크립트는 사용자별 자격 증명에 따라 다르지만 Jenkins는 사용자별 구성 및 자격 증명에서 빌드를 격리하도록 설계되었습니다. 이러한 충돌을 해결하는 방법에는 네 가지가 있습니다(모든 방법은 보안 위험을 초래할 수 있으므로 주의해서 진행하십시오).

  1. 작업을 수행하려면 Jenkins에 자격 증명을 부여하세요. (ssh 키 제공) 이것의 장점은 jenkins가 수행한 작업이 개발자가 아닌 jenkins에 기록되고 jenkins가 수행해야 하는 작업을 제한할 수 있다는 것입니다(예: 여기에서는 ssh force 명령이 유용합니다). 단점은 Jenkins가 공유 사용자이기 때문에 그의 자격 증명이 더 쉽게 유출된다는 것입니다.

  2. 스크립트가 실행되는 동안 사용자를 전환합니다. (해결 방법은 다음과 같습니다.) runuser 외에도 sudo 및 super도 살펴보세요. (이 사용 사례에서는 super를 선호합니다.) 장점은 스크립트를 작성한 동일한 사용자로 스크립트가 실행되기 때문에 문제 해결이 더 쉽다는 것입니다. 단점은 사용자로서 Jenkins가 수행한 작업이 사용자에게 귀속되어 사용자의 계정이 손상될 가능성이 더 높다는 것입니다. (이 문제는 jenkins 사용자에게 엄격한 sudo 또는 super 권한을 부여하고 jenkins에서 사용자에게 전달된 어떤 것도 신뢰하지 않음으로써 완화될 수 있습니다. Perl에는 이 문제가 taint 문서에 잘 문서화되어 있습니다.)

  3. 스크립트를 실행할 서버를 만듭니다. CGI, RPC 등

  4. 모든 것을 다시 생각해보세요. 자격 증명을 전혀 요구하지 않고 수행해야 하는 작업을 수행할 수 있는 방법이 있을 수 있습니다.

관련 정보