Linux – sudo와 su의 차이




su와 sudo 모두 root권한으로 명령을 내리는데 사용된다. root는 윈도우에서 Administrator와 같은 개념으로 시스템에 대한 모든 권한을 갖고 작업을 할 수 있다. 일반 사용자 계정의 경우 작업 내용과 보안 수준에 따라 필요한 권한만을 가지고 시스템에서 작업을 한다. 예로, 시스템에 새로운 프로그램을 설치하거나 특정 디렉토리에 접근이 안될 수 있다. 만약 이러한 작업을 수행해야한다면 su나 sudo로 권한을 획득할 수 있다.

su를 아무런 옵션 없이 실행하면 root계정으로 사용자를 전환(switch user)할 수 있다. 이때 root계정의 암호를 입력해야 한다. 물론 아시다시피 root계정뿐만 아니라 다른 사용자 계정으로 전환이 가능하다. 예로, su keepdelight를 입력하고 keepdelight계정의 암호를 입력하면 keepdelight계정으로 전환이 된다.
root계정으로 작업을 수행한 후에는 exit로 빠져나와 다시 원래 – 제한된 권한이 부여된 – 계정으로 돌아와야 한다.

이에비해 sudo는 root권한으로 한 번 명령어를 실행한다. 만약 sudo command(root권한으로 실행할 명령어)를 입력하면 명령어를 실행하기 전에 먼저 현재 사용자 계정의 비밀번호를 물어본다. 비밀번호 입력 후 실행되는 명령은 일반 사용자 권한이 아닌 root 권한으로 실행하게 된다.

이상이 su와 sudo의 주요 차이점이다. su는 사용자를 아예 root사용자로 전환시키는데 비해(root계정의 비밀번호 입력 필요) sudo는 사용자 전환 없이 단일 명령에 대해 root권한을 부여하게 된다.(root계정의 비밀번호를 입력하지 않는다.)

참고로 su를 sudo처럼, 그리고 sudo를 su처럼 사용할 수도 있다.

su -c 'command'

 
su에 c 옵션을 줘서 sudo처럼 입력한 command에 한해 root권한으로 실행할 수 있다. 다만, sudo와는 달리 이때에도 root계정의 비밀번호를 입력해야 한다.

sudo –i

 
sudo에 i옵션을 주면 root계정으로 전환된다. 이때도 역시 root계정의 암호 대신 현재 사용자의 암호를 입력하게 된다.

 

howtogeek 번역 및 정리 (원문보기)

ref : http://plaboratory.org/archives/4398

반응형

+ Recent posts