매개 변수로 비밀번호와 함께 sudo 사용 [닫힘]


83

스크립트에 사용할 수 있도록 암호를 매개 변수로 사용하여 sudo를 실행하고 싶습니다. 나는 시도했다

sudo -S mypassword execute_command

그러나 성공하지 못했습니다. 어떤 제안?


2
스크립트가 "root"에 의해 실행되는지 확인해야합니다. 암호를 메아리로의 나쁜, 그것은 ... 역사에서 찾을 수
kbdjockey

4
sudo이러한 더러운 해킹을 피하기 위해 특정 프로그램 / 사용자 / 그룹에 대한 암호를 묻지 않도록 올바르게 구성 하는 것이 훨씬 좋습니다 .
러시

답변:


183

-S 스위치는 sudo가 STDIN에서 암호를 읽도록합니다. 이것은 당신이 할 수 있음을 의미합니다

echo mypassword | sudo -S command

sudo에 암호를 전달하려면

그러나 사용자가 루트인지 확인하는 것과 같이 명령의 일부로 암호를 전달하는 것과 관련이없는 다른 사람들의 제안은 보안상의 이유로 훨씬 더 나은 아이디어 일 것입니다.


그 일을 많이 감사합니다 !!
normalUser

제 하루를 구해 주셨습니다. 감사합니다 !!!
AdrianES 2015-07-29

그것과 폴더 실행 전용 권한을 모두 제공하는 전용 폴더에 두는 것은 sudo chmod -R 0100 myScriptFolder어떻습니까? 이것이 보안 문제를 해결하지 않겠습니까 (귀하의 컴퓨터를 루트로 사용하는 사람이 없다면)?
Brōtsyorfuzthrāx 2015 년

또는 내 로컬 네트워크 외부의 해커가 특정 상황에서 실행되는 스크립트 텍스트를 어떻게 든 볼 수 있습니까?
Brōtsyorfuzthrāx 2015 년

이것은 내 OSX 상자에서 나를 위해 챔피언처럼 작동했습니다! 솔루션을 공유해 주셔서 감사합니다!
Wulf

51

s스크립트가 필요하지 않고 sudo루트로 실행 되도록 비트를 설정할 수 있습니다 (스크립트에 루트 암호를 쓸 필요가 없습니다).

sudo chmod +s myscript

+1. 이것은 다른 방법보다 훨씬 더 안전합니다.
Burkhard

1
끈적한 비트는 나쁜 습관입니다.
kbdjockey

@kbdjockey- +ssetuid 비트입니다. +t끈적한 비트입니다.
Robᵩ

@ 롭 - 명확히 주셔서 감사합니다
kbdjockey

4
대부분의 OS는 해석 된 스크립트 파일에 대해이 플래그를 무시합니다. 이것은 바이너리에서 잘 작동합니다.
Magnar

26
echo -e "YOURPASSWORD\n" | sudo -S yourcommand

내 명령에 대한 논쟁이있을 때는 작동하지 않습니다. 예를 들면. echo -e "YOURPASSWORD\n" | sudo -S "run -x". 그것은 말한다 sudo: run -x: command not found. 이 문제를 해결하는 방법을 아십니까?
꿀벌

1
@Bhathiya는 "인용문"을 사용하지 마십시오. 예 : echo -e "YOURPASSWORD \ n"| sudo는 -S LS -l / 루트
matteomattei

감사합니다 ...
Bee

3

한 가지 옵션은 sudo에 -A 플래그를 사용하는 것입니다. 이것은 암호를 묻는 프로그램을 실행합니다. 요청하는 대신 프로그램을 계속할 수 있도록 암호를 뱉어내는 스크립트를 사용할 수 있습니다.


-3
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

4
이것은 OP의 질문에 대답하지 않습니다.
codeforester
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.