사용자 정의 배치 파일에서 비밀번호 입력을 자동화하는 방법은 무엇입니까?

사용자 정의 배치 파일에서 비밀번호 입력을 자동화하는 방법은 무엇입니까?

이것이 여러분 대부분에게 순진하게 들릴 것이라는 것을 알고 있지만 저는 아직 Linux를 처음 접하는 사람이므로 양해해 주시기 바랍니다.

몇 가지 명령을 자동화하기 위해 배치 파일을 만들려고 합니다.
이러한 명령 중 하나는 sudo -i루트의 일부 파일에 액세스해야 하기 때문입니다.

지금까지 내 스크립트는 다음과 같습니다.

#!/bin/bash
sudo -i
cd my-server/bin
./run-server.sh

비밀번호를 묻는 메시지가 표시된 후에 sudo -i이를 스크립트에서 에뮬레이트할 수 있습니까?

답변1

sudo스크립트에서 꺼내 사용자가 를 사용하여 스크립트를 호출하도록 할 수 있습니다 sudo scriptname.

sudo -i스크립트에서 줄을 제거 하고 다음으로 바꿉니다.

# Must prefix with sudo when calling script
if ! [[ $(id -u) == 0 ]]; then
    echo You must call this script using sudo. Aborting.
    exit 99
fi

답변2

공정한 질문입니다. 그러나 현재 시도/구상하고 있는 방식으로 진행하지 않는 것이 좋습니다. 귀하의 접근 방식을 피하는 이유는 다른 사용자/공격자가 읽을 수 있는 텍스트 파일에 비밀번호를 입력해야 하기 때문입니다. 이제 사용자(및 루트)만 읽을 수 있도록 파일을 600 권한으로 설정할 수 있지만 스크립트 하위 명령이 어딘가에 기록되어 잠재적인 공격자가 암호를 다시 사용할 수 있는지 확실하지 않습니다. . 실제 질문은 루트로 자동 로그인하기 위해 스크립트가 필요한 이유는 무엇입니까?

자동화된 프로세스인가요, 아니면 스크립트를 있는 그대로 실행할 때 표시되는 비밀번호 프롬프트에 간단히 응답할 수 없는 다른 이유가 있나요? 자동화된 프로세스인 경우 sudo 줄을 제거하고 루트 사용자 cron에 스크립트 호출을 추가하면 됩니다. 간단한 Google 검색으로 크론 작업을 설정하는 방법에 대한 수많은 문서가 있지만 다음으로 시작할 수 있습니다.이것)

게다가 이것은 단순히 다른 스크립트를 호출하는 스크립트이다. run-server.sh를 루트에서만 실행 가능하게 만든 다음 이를 사용하여 sudo su루트에 로그인한 다음 /my-server/bin/run-server.sh. 다시 말하지만, 일정에 따라 자동화해야 하는 경우 이를 루트의 크론에 추가할 수 있습니다.

경고:스크립트를 작성하지 마세요.특히명령줄에 입력하지 마세요(기록됩니다).

echo 'PASSWORD' | sudo -S /my-server/bin/run-server.sh

관련 정보