본문 바로가기
IT/Linux_리눅스

[Linux/CentOS]su / su - / sudo 의 비교 및 차이점

by 무브영/movewoo0 2021. 3. 7.
728x90
반응형

안녕하세요. 이번 포스팅에서는 리눅스에서 권한과 관련된 명령어인 su / su - / sudo 명령어에 대해 알아보도록 하겠습니다.

 

su / su - / sudo

 

 

 


 

0. su / su - / sudo

 

우선 리눅스에서는 아래와 같은 두 주요 개념이 있습니다.

 

리눅스는 Multi-User System OS / 다중 유저 접속 시스템이다.
리눅스에서는 각 유저들에 대한 권한의 중요성이 높다.

 

리눅스에는 다중 유저 접속 시스템으로써 동시에 여러 사용자들이 접속할 수 있습니다. 그리고 이는 어떤 서비스를 위한 서버의 기능으로 작동하기 때문에 각각의 유저들에 대한 권한(읽기, 쓰기, 실행 등)의 범위 관리가 매우 중요합니다.

 

리눅스에서 최고의 권한을 가지고 있는 계정은 슈퍼 유저 / Root 입니다.


Root 계정은 리눅스 상의 모든 명령을 실행할 수 있고 이 권한이 있을 때만 실행이 가능한 프로그램들도 있습니다.

 

때문에 리눅스 유저들은 Root의 권한을 빌려야 하는 순간들이 필요하기에 이를 가능하게 하는게 su 명령어입니다.

 

1). su 명령어

su 명령어는 현재의 사용자를 로그아웃하지 않고 바로 다른 사용자의 계정으로 전환하는 명령어입니다. 전환 시에 대상 계정의 패스워드를 요구합니다.

su 명령어는 현재 계정이 가진 환경변수 설정들을 그대로 유지한채로 대상 계정으로 전환합니다.

$ su (전환하려는 계정명)

2. su - 명령어

su - 명령어 또한 단순히 su만 썼을 때와 큰 차이는 없어보입니다. 전환 시에 대상 계정의 패스워드를 요구하는 것도 같습니다.

다만 su - 명령어는 su 명령어와 달리 전환할 계정의 환경변수 설정들을 불러옵니다. 완벽하게 전환된다고 할 수 있습니다.

$ su - (전환하려는 계정명)

3. sudo

sudo 명령어는 일반 사용자가 슈퍼 유저 / root의 권한을 잠시 빌려서 명령을 실행하게 하는 명령어입니다.

sudo 명령어는 root 권한을 빌려서 실행하는 명령어 한번만 그 권한으로 실행합니다. 단순히 권한을 잠시 빌리는 것이기 때문에 이력(log)가 남는 작업을 했을 때, 빌려온 root 권한이 아닌 해당 사용자의 계정이 남습니다.

이 sudo 명령어를 아무나 사용하는 것은 문제가 되기 때문에
/etc/sudoers 그룹에 사용자의 계정이 등록되어 있어야 사용할 수 있습니다.

$ sudo (명령어)

4. sudo -s / sudo su

위와 같이 sudo 명령어를 실행하면 단 한번만 권한을 빌려오기 때문에 root 권한이 여러번 필요할 땐 번거로울 수 있습니다.

 

sudo -s 또는 sudo su 명령어는 root 계정의 권한을 반영구적으로 빌리고 root로 로그인한 상태의 쉘을 사용할 수 있습니다.

 

$ sudo su 또는
$ sudo -s

 

위 두개의 차이는 전환의 완전함의 차이라고 할 수 있습니다.

 

sudo su로 root를 전환하게 됬을 때, home 디렉토리가 /root 로 설정됩니다.

이는 환경변수 설정들을 root 계정의 상태로 완전히 전환합니다.

 

sudo -s는 root를 전환하게 됬을 때, home 디렉토리가 사용자의 홈 디렉토리로 설정됩니다. 이는 현재 계정의 환경변수들이 유지된 채로 환경변수들을 root로 넘길 뿐입니다.

 

 


 

본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.

인용 시 출처와 같이 공개해주세요!

도움이 되셨다면 댓글 또는 공감 부탁드립니다!

728x90
반응형

댓글