Secure Path 변경하기

otto_dev·2022년 11월 7일
0

문제 발생


docker-compose를 이용해야 하는데 권한 문제 때문에 sudo를 이용해서 실행을 했어야 했다.
그런데 sudo를 이용하니 커맨드를 찾을 수 없다는 문구가 출력된다.


sudo which docker-compose를 한 결과 /sbin, /bin, /usr/sbin, /usr/bin 모두에서 찾을 수 없다고 나온다. 반면 which docker-compose를 해보니 /usr/local/bin/docker-compose에 있다고 나온다.

리눅스 디렉토리와 용도

디렉토리용도예시
/bin모든 사용자를 위해 단일 사용자 모드에서 사용 가능해야 하는 명령어 바이너리cat, ls, cp
/sbin필수 시스템 바이너리init, ip, mount
/usr/bin모든 사용자의 비 필수 명령어 바이너리
/usr/sbin비 필수 시스템 바이너리다양한 네트워크 서비스 데몬
/usr/local로컬 데이터의 3차 계층, 이 호스트에만 적용.
bin/, sbin/같은 서브 디렉토리를 가짐.
package manager로부터 관리되지 않는 binaries들

리눅스 디렉토리 더 알아보기

sudo와 Secure Path

sudo

  • 명령어를 다른 계정의 권한(주로 root)으로 실행시켜주는 명령어.
  • 계정 전환 없이 명령어를 실행할 수 있다는 장점이 있음.
  • 보안상 문제가 발생할 수 있기 때문에 sudoers라는 설정파일을 통해 이 명령을 사용할 수 있는 계정의 범위를 지정.
  • SecurePath 보안 기능 제공.

Secure Path

  • sudo 명령을 실행할 때 사용하는 가상 쉘의 PATH정보를 설정
  • Secure Path: 명령을 찾을 경로를 나열한 환경 변수 PATH 값.
  • 트로이목마 해킹 공격에 대한 일차적인 방어 기능을 제공.

해결 방법1: 명령어의 절대 경로를 입력해서 명령을 실행

해결 방법2: Secure Path 수정

visudo를 이용하여 sudoers의 Secure Path 수정.
(추가하고자 하는 디렉토리가 믿을만한 경로여야함)

$ sudo visudo
(...)
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
(...)

마지막에 /usr/local/bin을 추가해줬다.

참고자료

bin directory와 sbin directory의 차이
[Linux] Sudo 명령의 Secure Path
위키백과, 파일시스템 계층구조 표준

profile
공부 및 아카이브용 계정

0개의 댓글