HISTIGNORE를 " sudo -S "로 설정하십시오.
$ export HISTIGNORE='*sudo -S*'
그런 다음 sudo에 안전하게 암호를 전달하십시오.
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE"는이 명령을 기록에 저장하지 않음을 의미합니다. 메모리 또는 "~ / .bash_history"파일의 기록입니다.
예를 들어, 아래는 비밀번호 기록을 유지하지 않고 비밀번호를 sudo 명령으로 안전하게 파이프합니다.
“-S”는 비밀번호에 stdin을 사용하는 것을 의미합니다.
“-k”는 캐시 된 자격 증명을 무시하여 sudo가 항상 요청하도록합니다. 이것은 일관된 동작을위한 것입니다.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
위의 방법의 단점은 나중에 기록에서 실행 한 명령을 보려면 거기에 없을 것이라는 것입니다. 또 다른 방법은 sudo 인증 신임 캐시를 업데이트 한 후 (기본값은 5 분 제한 시간으로 설정 됨) sudo를 별도로 실행하는 것입니다. 그러나 이것의 단점은 5 분 캐시를 알고 있어야한다는 것입니다.
예를 들면 다음과 같습니다.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
참고 기본값은 5 분이므로 sudo 캐시가 업데이트되도록 각 명령 전에 sudo를 실행했습니다. 그렇습니다. whoami는 5 분이 걸리지 않지만 일관성을 위해 각 명령 전에 실행해야 할 수도 있습니다. "export HISTIGNORE = ' sudo -S를 넣을 수도 있습니다.~ / .bashrc 파일에 ' "를 입력 한 다음"로로드하십시오. ~ / .bashrc "또는 로그 오프 한 다음 로그인하십시오. 그러나 스크립팅 목적으로이 스크립트를 사용하려고 생각하므로 최상의 보안을 위해 모든 스크립트의 최상위에 유지하겠습니다."echo ""| sudo -S -v "대신 변수를 사용하는 것이 좋습니다. 루트 권한이 필요한 각 명령 전에 변수를 실행하십시오. Janar의 주석을 참조하십시오."John T "의 주석에는"-k "매개 변수도 포함되어야합니다. "-k"없이 "sudo -S"를 실행하고 sudo 인증 캐시에 이미 자격 증명이 있고 여전히 유효한 sudo 인증 캐시가 5 분인 것처럼 bash는 대신 암호를 명령으로 실행합니다. 나쁜.
halt
루트로 실행 해야 합니다.