웹사이트 검색

Linux에서 Sudo 명령을 사용하여 쉘 스크립트를 실행하는 방법


sudo는 보안 정책에 정의된 대로 '허용된 사용자'가 다른 사용자(기본적으로 수퍼유저)로서 명령을 실행할 수 있게 해주는 강력한 명령줄 도구입니다. 모든 Linux 시스템은 아니더라도 대부분의 보안 정책은 /etc/sudoers 파일에 의해 결정됩니다.

더 읽기: Linux에서 'sudo' 설정을 위한 10가지 유용한 Sudoers 구성

따라서 쉘 스크립트나 프로그램을 루트로 실행하려면 sudo 명령을 사용해야 합니다. 그러나 sudo/etc/sudoerssecure_path에 지정된 디렉터리에 있는 명령만 인식하고 실행합니다. secure_path를 사용하면 아래와 같은 오류에 대응하게 됩니다.

이는 스크립트가 PATH 환경 변수의 디렉토리에 존재하는 경우에도 발생합니다. 사용자가 sudo를 호출하면 PATH가 <으로 대체되기 때문입니다. Strong>보안_경로.

echo  $PATH
ls  -l
sudo proconport.sh 80

위 시나리오에서 /home/aaronkilik/bin 디렉토리는 PATH 환경 변수에 있고 /home/aaronkilik/bin 스크립트를 실행하려고 합니다. /proconport.sh(포트에서 수신 대기 중인 프로세스 찾기) 루트 권한이 있습니다.

그런 다음 /home/aaronkilik/binsudo secure_pathsudo: proconport.sh: 명령을 찾을 수 없습니다" 오류가 발생했습니다. > 다음 스크린샷과 같습니다.

이 문제를 해결하려면 /etc/sudoers 파일을 편집하여 visudo 명령을 사용하여 sudo secure_path에 스크립트가 포함된 디렉터리를 추가해야 합니다. 다음과 같이.

sudo visudo

주의: 이 방법은 특히 인터넷에서 실행되는 서버의 보안에 심각한 영향을 미칩니다. 이렇게 하면 secure_path에 추가된 안전하지 않은(수퍼유저 권한 없이) 디렉토리에 액세스하는 공격자가 sudo 명령<을 사용하여 악성 스크립트/프로그램을 실행할 수 있기 때문에 시스템이 다양한 공격에 노출될 위험이 있습니다. /강하게>.

보안상의 이유로 sudo 웹사이트에서 secure_path와 관련된 취약점을 설명하는 다음 기사를 확인하세요. https://www.sudo.ws/sudo/alerts/secure_path.html

바람직하게는 sudo를 사용하여 스크립트를 실행하는 동안 스크립트에 대한 절대 경로를 제공할 수 있습니다.

sudo ./proconport.sh 80

그게 다야! sudo 명령에 관한 기사 목록을 따를 수 있습니다.

  1. Linux에서 비밀번호를 입력하지 않고 'sudo' 명령을 실행하는 방법
  2. Linux에서 'sudo' 비밀번호 시간 초과 세션을 더 오래 유지하는 방법
  3. "사용자 이름이 sudoers 파일에 없습니다." 수정 방법 이 사건은 우분투에서 "보고됩니다"
  4. 잘못된 비밀번호를 입력하면 Sudo가 당신을 모욕하게 하세요

이 기사와 관련하여 질문이나 생각이 있으시면 아래 의견 양식을 통해 공유해 주세요.