스크립트에서 su에 비밀번호를 전달할 수 없습니다.

스크립트에서 su에 비밀번호를 전달할 수 없습니다.

빌드 스크립트를 작성 중입니다. 이 스크립트는 결국 파일을 복사해야 합니다. 이 파일은 다른 사용자 홈 디렉토리에 배치되며 파일이 이 두 번째 사용자에게 속해야 합니다. 내 첫 번째 시도는 다음과 같이 su를 사용하는 것이었습니다.

su fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

이것은 명령줄에서 작동하지만 이것을 스크립트에 넣을 때 자동으로 입력되는 암호가 필요합니다. 그래서 다음 명령을 시도했습니다.

echo Password | su -S fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

그러나 나는 다음과 같은 결과를 얻습니다.

su: must be run from a terminal

이것을 작동시키려면 어떻게 해야 합니까?

답변1

이 특정 프로세스에 대해 sudo 설정을 고려하고 특정 명령 NOPASSWD:를 설정하면 일반 텍스트 비밀번호를 에코할 필요가 없습니다(어떤 경우에도 매우 나쁨). 또한 TTY를 요구하거나 요구하지 않을 수 있는 sudo 플래그가 있습니다.

예.

/etc/sudoers.d/mycmd:

theuser ALL=(fgbs) NOPASSWD: cp fbgs.jar /home/fbgs/server/plugins

my-build-script.sh:

#!/bin/sh
/usr/bin/sudo -H -u fbgs cp fbgs.jar /home/fbgs/server/plugins

관련 정보