루트가 되는 쉘 스크립트

루트가 되는 쉘 스크립트

루트가 되는 쉘 스크립트를 어떻게 작성합니까? 즉, 메시지가 표시될 때 비밀번호를 입력하고 싶지 않습니다. 비밀번호는 스크립트 자체 내에 있어야 합니다. 하려고 노력했지만 실패했습니다. 가능합니까? 그렇다면 설명해주세요.

답변1

다음을 사용하여 스크립트를 작성할 수 있습니다.예상되는도구.

Redhat에서는 Expect 패키지가 기본값입니다. 하지만 우분투에서는 별도로 설치해야 합니다.

명령을 사용하여 다음을 확인할 수 있습니다.

$ rpm -qa | grep expect 레드햇의 경우

$ dpkg -l expect우분투의 경우

다음 스크립트가 작업을 수행합니다.

#!/usr/bin/expect

spawn su -
expect "Password: "
send "password\r"
interact

답변2

루트 비밀번호의 일반 텍스트를 파일에 저장하는 것은본질적으로 위험하다- 복구하는 방법은 다양합니다.

이것은 XY 문제인 것 같습니다.

Unixy가 권한을 위임하는 방식은 setuid 비트를 통해 이루어집니다. 그러나 이는 쉘 스크립트가 아닌 바이너리 실행 파일에만 적용됩니다. jordanm이 말했듯이 쉘 자체에 setuid를 적용하는 것은 매우 위험합니다. 이것이 sudo가 존재하는 이유입니다. setuid 비트가 있고 세밀한 액세스 제어를 위해 sudoers 파일에 대해 사용자 요청을 인증합니다. 그러나 sudo에도 몇 가지 문제가 있습니다.

답변3

가장 쉬운 방법은 쉘의 suid 복사본을 만드는 것입니다.

cp /bin/bash $HOME/bin/becomeroot
sudo chown root $HOME/bin/becomeroot
sudo chmod 4750 $HOME/bin/becomeroot
hash -r

Run은 becomeroot루트로 실행되는 bash 하위 쉘을 시작합니다.

그러나 내가 당신에게 다음과 같은 조언을 하지 않는다면 나는 태만해질 것입니다. 그러지 마십시오. 맬웨어가 자신의 권한을 그렇게 쉽게 루트로 승격하도록 허용하는 것은 현명하지 않습니다. 대신 루트로 무언가를 실행해야 할 때마다 설치 sudo하고 사용법을 배우십시오.

답변4

SUID 고정 비트를 설정할 수 있습니다.

chmod 2664 your-file

이렇게 하면 소프트웨어가 파일의 소유자로 실행됩니다. 물론 소유권을 루트로 변경해야 합니다.

sudo chown root your-file

(sudoers 파일에서 찾았고 sudo가 설치되어 있다고 가정)

관련 정보