리눅스 su, sudo 차이 (sudo 사용이 권고되는 이유)

리눅스에서 susudo는 root 계정의 권한으로 명령어 수행이 필요할 때 사용된다는 점에서 비슷합니다. 그러나 둘은 다릅니다. su는 계정 자체의 전환을 의미하며, sudo는 권한을 일시적으로 빌리는 방식입니다. 리눅스 운영 시엔 되도록 sudo를 이용하는 편이 안전합니다.

1. sudo란?

sudo는 superuser do의 약자입니다. 명령어 맨 앞에 붙이면 루트에 상응하는 권한 수준으로 명령어를 수행할 수 있습니다. 예를 들어, 시스템 종료, 재부팅, 시스템 파일 편집, 방화벽 오픈, 패키지 설치, 일부 서비스 실행 등 작업에 필요합니다.

1-1. sudo 사용 방법

사용 방법은 명령어 시작 전 맨 앞에 sudo 문자를 붙이는 것입니다.

sudo systemctl mysqld start # mysql 서비스 시작
sudo yum install nginx # nginx 설치
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp # 3306 포트 개방

sudo 사용 시엔 현재 사용자의 패스워드를 입력합니다. 루트의 패스워드가 필요하지 않습니다. 루트 계정의 비밀번호를 몰라도 루트에 상응하는 작업을 할 수 있다는 의미입니다.

 

아래 옵션을 사용하면 아예 루트 계정처럼 사용하도록 세션을 전환할 수도 있습니다.

sudo -i

1-2. sudoers 등록 방법

계정이 sudo를 사용하기 위해선 /etc/sudoers 목록에 해당 계정을 포함시켜야 합니다. sudoers를 수정하기 위해선 권한이 필요하기 때문에 이때는 root 계정 접속이 필요합니다.

 

sudoers 파일을 편집하고 root 밑에 다른 계정을 추가합니다. 예를 들어, sudoTest라는 계정이면 아래와 같이 추가하면 됩니다.

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
sudoTest ALL=(ALL)       ALL

1-3. root 계정 사용 대신 sudo 명령 사용하는 이유

sudo는 리눅스를 좀 더 안전하게 사용할 수 있게 해줍니다. root로 로그인한 상태에선 무엇이든 할 수 있으며, 명령어 실행에 제약을 받지 않습니다. 한마디로 실수에 치명적입니다.

 

예를 들어, 현재 위치 기준 하위 경로를 삭제하려고 rm -rf ./*를 쓰려다가 실수로 rm -rf *를 쓰면 한순간에 시스템이 다 날아가는 것입니다. 일반 사용자 계정이었다면, 그것도 끔찍하긴 하지만 해당 계정이 액세스 가능한 폴더만 날아가겠죠. 이외에도 다양한 위험 요소가 있습니다.

 

반면 sudo사용 시엔 필터링이 작용합니다. sudo라는 명령어를 입력하면서 "중요한 명령어를 실행한다"는 심리적 인식이 생기고, 명령 실행 시 비밀번호를 물어보면서 다시 한번 체크할 수 있는 여지를 줍니다.

2. su란?

su는 switch user의 약자입니다. 계정을 전환하는 명령어입니다. 일반 계정에서 루트 계정으로 전환하는 명령어는 아래와 같습니다. 계정 전환 시엔 전환하려는 계정의 비밀번호가 필요합니다. 

su -

2-1. su 사용 방법

su는 루트 뿐만이 아니라 다른 계정으로의 전환에도 사용할 수 있습니다.

su -test

루트 계정에서 일반 계정으로 전환 시 비밀번호를 묻지 않습니다. 일반 계정에서 루트 계정 또는 일반 계정으로 전환 시 전환하려는 계정의 비밀번호가 필요합니다.

 

-를 사용하지 않고 계정을 전환할 수도 있습니다.

su test

다만 -를 사용해서 전환해야 사용자의 권한뿐만 아니라 환경 변수 등까지 모두 적용됩니다.

su, sudo 차이 정리

su와 sudo의 차이를 간단히 정리하면 아래와 같습니다.

  • sudo는 계정 전환을 하지 않고 권한을 상승시켜 명령어를 사용할 수 있게 해 줍니다.
  • sudo를 사용하기 위해서는 /etc/sudoers에 계정을 등록해야 합니다.
  • su는 특정 계정으로의 전환을 할 때 사용합니다.
  • sudo 명령 사용 시엔 현재 계정의 비밀번호가 필요합니다. su 명령 사용 시엔 전환하려는 계정의 비밀번호가 필요합니다.
반응형

댓글

Designed by JB FACTORY