DevOps/Linux

[Linux] 관리자 권한과 sudo

아임다디 2022. 4. 26. 13:21

쉘을 다루다보면 빠질 수 없는 관리자 권한. 그냥 명령어를 입력했다가는 permission denied 에러가 출력되는 것을 많이 볼 수 있을 것이다.

이번 글에서는 관리자 권한과 sudo에 대해 알아보자!

관리자 권한이 필요한 이유


관리자 권한은 왜 필요할까? 사용자의 실수로 시스템 에러가 발생하거나, 해커의 공격으로 인해 운영 체제에 시스템 에러가 발생할 수 있는 경우를 막기 위해 만들어둔 안전장치가 관리자 권한이다.

컴퓨터를 사용하다 보면 블루 스크린을 한 번쯤은 들어보거나 겪어보았을 텐데, 블루 스크린은 예상치 못한 프로그램의 충돌로 시스템이 마비될 때 생기는 현상이다.

관리자(root) 권한


리눅스의 관리자 영역은 절대 경로의 기준점인 루트 폴더(/)에 해당한다.

리눅스 관리자의 큰 특징은 어떤 일이 있더라도 일반 사용자에게 모든 관리자 권한을 넘기지 않는다.

이렇게, 사용자와 관리자를 명확히 분리하여 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호하는 것이 리눅스 관리자의 역할이다.

sudo : 관리자 권한 획들을 위한 명령어


리눅스 명령어에서 앞에 sudo가 붙은 명령어들을 많이 봤을 것이다.

sudo는 한시적으로 사용자가 관리자 권한을 가질 수 있도록 하는 명령어로, 반드시 사용자 비밀번호를 입력해야 사용할 수 있는 명령어이다.

mkdir을 통한 관리자와 사용자 차이 알아보기


예제에 앞서, 리눅스의 ~ 폴더는 무엇인지 알아보자

~ 디렉토리는 루트 폴더로부터 사용자 폴더까지의 경로를 축약한 것으로, pwd를 해보면 다음과 같은 결과가 나올 것이다

$ pwd
/Users/사용자이름 # Mac M1 쉘 기준

현재 로그인 된 사용자를 확인하려면 whoami 명령어를 사용하면 된다

whoami를 통해 확인가능한 사용자 이름은 폴더 형태로 존재하는 것을 알 수 있다

이제 홈 디렉토리(~)에서 그냥 mkdirsudo mkdir을 했을 때의 결과를 비교해보자

$ mkdir 폴더이름 # 사용자 소유의 폴더를 생성함
$ sudo mkdir 폴더이름 # 관리자 권한으로 폴더를 생성함

ls -l을 통해 차이를 확인할 수 있다

sudo로 만든 것은 이름이 생성자가 root이다