빌드 스크립트를 작성 중입니다. 스크립트는 마지막에 파일을 복사해야 합니다. 파일은 다른 사용자의 홈 디렉터리에 저장되며 해당 파일은 두 번째 사용자에게도 속해야 합니다. 내 첫 번째 시도는 다음과 같이 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