관리 메뉴

피터의 개발이야기

[Linux] sudo 명령어의 -E 옵션 알아보기 본문

Linux

[Linux] sudo 명령어의 -E 옵션 알아보기

기록하는 백앤드개발자 2024. 12. 4. 21:05
반응형

ㅁ 들어가며

 알면 쉽지만 모르면 어려운 것이 Linux 명령어이다. 보안상 권한이 막혀 고생했는데. 옵션 하나면 해결될 문제였다.

Linux에서 자주 사용되는 sudo 명령어의 -E 옵션에 대해 정리하였다.

 

ㅁ 트러블 내용

$ sudo dnf update
Rocky Linux 9 - BaseOS                                                                                                                                                                                                                                                                     0.0  B/s |   0  B     03:02
Errors during downloading metadata for repository 'baseos':
  - Curl error (28): Timeout was reached for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=BaseOS-9 [Failed to connect to mirrors.rockylinux.org port 443: Connection timed out]
Error: Failed to download metadata for repo 'baseos': Cannot prepare internal mirrorlist: Curl error (28): Timeout was reached for https://mirrors.rockylinux.org/mirrorlist?arch=x86_64&repo=BaseOS-9 [Failed to connect to mirrors.rockylinux.org port 443: Connection timed out]

 linux 명령이 이상하게 동작하지 않았다. 특정 단계에서 시간이 오래 걸리며 시간 초과 에러가 발생하였다. 그래서 Docker로 환경구성하여 세팅 테스트도 진행해 보았다. [Docker] Rocky Linux9 설치 및 실행방법  방법에는 문제가 없어 보였다. 

해결 방법으로 프록시 서버를 통해 인터넷 접근이 가능한데, 그 설정은 https_proxy, http_proxy 환경 변수로 정의한다. 하지만 내가 간과한 부분은 환경 변수에 있었다. 

  sudo bash 명령은 환경 변수 유지 없이 root로 bash를 실행한다. 그러면 프록시 서버 정보인  세팅인 https_proxy, http_proxy 환경 변수가 누락되면서 접속이 되지 않는 문제가 발생한다. 

 

ㅁ sudo -E 옵션이란?

sudo -E 옵션은 "preserve environment"의 약자로, 현재 사용자의 환경 변수를 유지한 채로 root 권한으로 명령을 실행할 수 있게 해준다.

ㅁ 왜 -E 옵션을 사용할까?

일반적으로 sudo를 사용하면 보안상의 이유로 대부분의 환경 변수가 초기화된다. 하지만 때로는 현재 사용자의 환경 변수를 유지한 채로 root 권한이 필요한 작업을 수행해야 할 때가 있다. 이럴 때 -E 옵션이 유용하다. 아니면 절대 할 수 없는 작업이 있다.

 

ㅁ 사용 예시

sudo -E command

이렇게 사용하면 현재 사용자의 환경 변수를 유지한 채로 command를 root 권한으로 실행할 수 있다.

 

ㅁ 주의사항

-E 옵션을 사용할 때는 보안에 주의해야 한다. 악의적인 환경 변수 설정이 root 권한으로 실행되는 것을 방지하기 위해, 꼭 필요한 경우에만 사용하는 것이 좋다.

 

ㅁ 마무리

 sudo -E 옵션은 현재 사용자의 환경을 유지하면서 root 권한으로 명령을 실행해야 할 때 매우 유용한 도구이지만 보안을 위해 신중하게 사용해야 한다. 이상으로 sudo -E 옵션에 대한 설명을 마치겠습니다. 리눅스 시스템 관리에 도움이 되셨기를 바랍니다!

 

ㅁ 함께 보면 좋은 사이트

환경 변수를 유지한 채 sudo가 필요할 때

sudo 명령어 옵션 설명

[Linux] sudo 명령시 환경변수 유지하기

반응형
Comments