Linux에서 Sudo 명령을 사용하여 쉘 스크립트를 실행하는 방법
sudo는 보안 정책에 정의된 대로 '허용된 사용자'가 다른 사용자(기본적으로 수퍼유저)로서 명령을 실행할 수 있게 해주는 강력한 명령줄 도구입니다. 모든 Linux 시스템은 아니더라도 대부분의 보안 정책은 /etc/sudoers 파일에 의해 결정됩니다.
더 읽기: Linux에서 'sudo' 설정을 위한 10가지 유용한 Sudoers 구성
따라서 쉘 스크립트나 프로그램을 루트로 실행하려면 sudo 명령을 사용해야 합니다. 그러나 sudo는 /etc/sudoers의 secure_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/bin이 sudo 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 명령에 관한 기사 목록을 따를 수 있습니다.
- Linux에서 비밀번호를 입력하지 않고 'sudo' 명령을 실행하는 방법
- Linux에서 'sudo' 비밀번호 시간 초과 세션을 더 오래 유지하는 방법
- "사용자 이름이 sudoers 파일에 없습니다." 수정 방법 이 사건은 우분투에서 "보고됩니다"
- 잘못된 비밀번호를 입력하면 Sudo가 당신을 모욕하게 하세요
이 기사와 관련하여 질문이나 생각이 있으시면 아래 의견 양식을 통해 공유해 주세요.