개발 일지/Linux

[Linux] 관리자 권한과 경로

미숫가루설탕많이 2022. 12. 19. 17:05

 컴퓨터를 사용하다 보면 관리자 권한으로 실행한다는 문구를 여러 번 본 적이 있다. 컴퓨터를 구매하고 유저 정보를 등록한 내가 관리자가 아닌가? 라는 생각을 가끔 했었는데 관리자 권한이 필요한 이유가 있다는 것을 알게 되었다. 바로 사용자와 관리자를 명확히 분리함으로써 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호한다는 것이다.

 

 

 

사용자와 관리자


 컴퓨터의 운영체제에는 사용자와 관리자가 있다. 사용자가 우리처럼 노트북이나 PC를 켜고 바탕하면에 진입하기 위해 로그인하는 계정이다. 그리고 관리자는 사용자가 접근할 수 없는 영역에 접근할 수 있는 높은 권한을 가지고 있다.

 

 Windows의 초기 버전에는 관리자 권한이 없었다고 한다. 정확히는 관리자와 사용자의 구분 없이, 항상 관리자 권한으로 프로그램을 설치, 변경, 삭제할 수 있었다. PC가 항상 관리자 권한으로 실행되다 보니, 개발에 대한 지식이 없는(없었던 나) 사용자는 좋지 않은 의도로 만들어진 프로그램을 설치하는 경우가 있었고 악성코드로 인해 흔히 말하는 해킹을 당하게 되는 것이다. 어렸을 때 아무것도 모르고 게임하면서 여러 프로그램을 설치하다가 컴퓨터가 먹통이 되었던 기억이 새록새록 떠오른다. 악성코드가 아니라도 시스템의 설정을 변경하는 몇몇 프로그램이 있는데 둘 이상의 프로그램이 충돌을 일으키면 시스템이 마비되어 화면에 블루 스크린이 출력된다.

 

 이러한 악성코드와 프로그램의 충돌로 인해 고통받는 고객을 보호하기 위해서 MS사는 Windows Vista에 '사용자 계정 컨트롤'을 탑재했다. 사용자 계정 컨트롤(User Account Control, UAC)은 시스템을 관리하는 관리자와 일상적으로 PC를 사용하는 사용자를 구분하고 사용자가 모르는 사이에 시스템 설정을 변경하는 악성코드가 실행될 때, 접근 권한을 막아 사용자를 보호한다. 또한, 하나의 PC에 여러 사용자를 등록할 수 있게 되었고 각 사용자는 다른 사용자의 영역을 침범할 수 없다.

 

 

 

 

절대 경로와 상대 경로


 경로는 명령어 pwd로 확인할 수 있는 절대 경로와 현재 위치로부터 상대적인 위치를 나타내는 상대 경로로 나뉜다.

 

 절대 경로는 기준점으로부터의 절대적인 위치를 나타내는데, 이 기준점을 루트 폴더(/)라고 한다. 절대 경로는 특정 폴더나 파일이 루트 폴더로부터 어떤 폴더로 진입하는 경우 만날 수 있는지를 나타낸다. 예를 들어, http://www.google.com 등을 모두 절대 경로라고 한다.

 

 상대 경로는 특정 폴더 또는 파일의 위치를 현재 위치에 기준하여 나타낸다. 현재 위치한 폴더는 점(.)으로 표시하고 상위 폴더는 두 개의 점(..)으로 표현한다. 현재 경로에 포함된 폴더나 파일을 확인하기 위해, 명령어 ls를 사용할 수 있고 명령어 ls를 통해 확인되는 폴더나 파일은 상대 경로로써 (./)을 붙여 표현할 수 있다. 간단히 말하면 '현재 위치한 곳을 기준'으로 해서 '특정한 곳의 위치'이다.

 

 

 

 

관리자(root) 권한


 절대 경로의 기준점인 루트 폴더(/)는 Linux의 관리자 영역이다. 일반 사용자의 권한으로는 어떤 폴더나 파일도 생성하거나 변경, 삭제할 수 없다.

 

 Linux 관리자의 가장 큰 특징은 무슨 일이 있더라도 일반 사용자에게 관리자 권한을 완전히 넘기지 않는다. 예를 들어, 사용자가 관리자 권한을 필요로 하는 경우는 새로운 프로그램을 설치하거나 변경, 삭제하는 경우이기 때문에 이에 해당하는 관리자 권한만 전달한다. 즉, 사용자와 관리자를 명확히 분리하여 사용자의 실수로 발생할 수 있는 시스템 에러로부터 운영체제를 보호한다.

 

 루트 폴더는 관리자의 영역이기 때문에 사용자 권한으로는 할 수 있는 일이 없고 사용자 권한은 [username] 폴더 내에서만 자유롭게 사용할 수 있지만 이는 해당 폴더 내에서 권한을 사용하도록 제한한다는 것을 의미한다. 반면에 관리자 권한을 이용하면 다른 사용자 폴더에도 영향을 끼칠 수 있고 시스템 자체에도 접근이 가능하다. 여기서 관리자 권한으로 변경한 내용은 사용자 권한으로 해결할 수 없다.

 

 

 

 

sudo : 관리자 권한을 획득하는 명령어


 명령어 sudo는 사용자 환경에서 관리자 권한을 획득하는 명령어이다.

 

 명령어 sudo는 한시적으로 관리자 권한을 갖기 때문에 항상 비밀번호와 함께 사용하며, 처음 리눅스 계정을 생성할 때 입력한 사용자의 비밀번호를 입력하면 된다. 처음 비밀번호를 입력할 때 화면에 출력되지 않아서 당황했는데 터미널에 정상적으로 입력되고 있기 때문에 정확하게 입력하고 Enter 버튼을 누르면 된다.

 

mkdir justMkdir 과 sudo mkdir sudoMkdir 명령어를 입력했을 때

위를 보면 mkdir justMkdir을 프롬프트에 입력했을 때 사용자 소유의 폴더라는 것을 알 수 있다. sudo 명령어를 추가한 sudo mkdir sudoMkdir을 프롬프트에 입력했을 때는 왼쪽에 root 문구를 통해 알 수 있듯이 관리자 권한으로 생성된 것을 알 수 있다. 그 둘의 차이점을 명령어 ls -l을 통해 확인해보았다.