2017-11-04 2 views
0

sudo 프로그램이 스크립트 실행을 중단시키는 것을 어떻게 막을 수 있습니까?
Sudo는 암호를 묻는 메시지를 표시하고 첫 번째 시도에서 항상 실패하고 두 번째 시도는 성공하지만 스크립트 완료를 중지합니다.
스크립트가 중지되고 암호 입력을 요구 한 후 명령이 실행되지 않습니다.
스크립트의 7 번 줄에있는 hi는 실행되지 않습니다.
sudo가 나머지 스크립트를 종료하는 것을 어떻게 막을 수 있습니까?sudo 스크립트 완료를 중지하십시오.

sudo bash << 'END' 
    cat << 'DONE' > /usr/bin/hi 
     echo hi 
DONE 
    sudo chmod +x /usr/bin/hi 
END 
hi 
+0

sudo는 암호를 입력 할 때까지 기다립니다. 그것은 당신이 '멈추다'라고 말하는 것입니까? – anishsane

+0

또한 이미'sudo'에서 실행 중이기 때문에'chmod' 호출 전에'sudo'가 필요 없습니다. – anishsane

+0

나는 그 질문을 편집했다. 내가 멈추는 것이 의미하는 것은 sudo가 패스워드를 물어 본 다음 스크립트의 다음 명령을 모두 실행하지 못하게하는 것이다. – FireInTheSky

답변

0

스크립트에 루트 권한이 필요한 경우 어느 시점에서 제공해야합니다. 스크립트를 루트로 실행하십시오.

0

나는 당신이 일을하려고하는 것은 더 추측 : 난 당신이 자신을 변경하지 않는,이 파일이 실행되고 싶어하는 것 같이 /usr/bin/hi 파일의 아웃 chmod를 이동

sudo bash << 'END' 
    cat << 'DONE' > /usr/bin/hi 
     echo hi 
DONE 
    chmod +x /usr/bin/hi 
END 
hi 

노트 진상.

나는 또한 이미 sudo 컨텍스트에있는 것처럼 쓸모없는 두 번째 sudo를 제거했습니다.

편집 : 다음과 같은 질문 편집 : 당신이와 sudo 명령을 수행 할 때, 당신은 (보통) "잠시 동안"개최 비밀번호, 다음 루트 자격 증명을 줄 필요가 실제로

, 그 이유는 처음에는 암호를 묻는 메시지가 표시되지만 두 번째는 표시되지 않습니다.

암호를 묻지 않으려면 sudoers 파일 (visudo 명령 사용)을 편집하고 암호를 묻지 않고 허용되는 명령에 실행할 프로그램을 추가해야합니다 (파일의 설명서를 읽거나 man sudoers). 그럼에도 불구하고 이러한 종류의 무제한 제한을 제공하는 것은 매우 위험합니다.이 경우 프로그램은 bash이 될 것이므로이 경우에는 루트로 콘솔을 실행할 수 있습니다. 루트 권한으로 sudo를 할 수 있다는 것은 이미 큰 책임입니다. 패스워드가 없으면 루트 권한으로 셸을 사용하는 것과 거의 같습니다. 따라서 매우 위험합니다 (특히 스크립트의 명령이나 업데이트를 수행하는 중에 실수로 시스템을 사용하는 경우).

+0

나는 큰 실수 인 질문 예제를 편집 할 것이다. 그 점을 지적 해 주셔서 감사합니다. – FireInTheSky

0

sudosudo 이후의 명령 실행을 중지하지 않습니다.
이 모든 명령은 아래에서sudo 아래에 실행 중입니다.
즉, sudo이 먼저 실행됩니다. 그런 다음 bash을 호출하고 여기에 다른 명령이 제공됩니다.

sudo -S bash << 'END' 
root123 
    cat << 'DONE' > /usr/bin/hi 
     echo hi 
DONE 
    chmod +x /usr/bin/hi 
END 
hi 

여기에 사용자의 암호로 root123 교체 :

당신은 다음과 sudo-S 옵션을 사용할 수 있습니다. 스크립트에 일반 텍스트로 입력해야합니다.

효과적으로, here-doc은 sudo + bash에 의해 소비됩니다.

시도 할 수있는 다른 옵션은 SUDO_ASKPASS입니다. 자세한 내용은 man sudo을 확인하십시오.

+0

password ='제니스 - 패스워드'; echo $ password. 작동하지 않습니다. – FireInTheSky

+0

^^ 스크립트 시작 부분에 다음 줄을 추가해보십시오.'export SUDO_ASKPASS = "zenity --password"' – anishsane

+0

여전히 작동하지 않습니다. – FireInTheSky

관련 문제