본문 바로가기

Cloud/Server

[LINUX] root와 사용자 계정 개념, 계정 정보 및 계정 전환 방법 정리

LINUX는 사용자 중심의 시스템으로, 사용자 계정이 있어야 접속할 수 있다.

각 계정은 권한을 부여받는데, 모든 것을 할 수 있는 관리자 권한의 계정을 root라고 한다.

 

 

root

시스템을 관리할 수 있는 관리자 권한의 계정이자 슈퍼 유저

리눅스 파일 체제의 최상위 디렉토리( / )로도 표현한다.

 

root 권한이 있으면 모든 파일과 디렉토리에 대해 읽고 쓸 수 있고, 생성할 수도 있지만 제거할 수도 있다.

시스템 구성을 변경할 수도 있다. 그래서 매우 편하지만 조심히 행동해야 하는 계정이다.

 

 

 

일반 사용자 계정

root가 useradd 명령어를 통해 생성한 모든 계정

root와 달리 권한이 있는 파일과 디렉토리에 대해서만 읽고 쓸 수 있다.

 

권한도 누가? root가 부여한다.

 

그냥 쉽게 리눅스라는 집 안에 건물주(root)가 모든 곳을 들락날락 할 수 있지만

세입자(사용자 계정)는 계약한 공간 안에서만 생활할 수 있다고 생각하면 된다. 어디서 자본주의 냄새가..ㅋ..

 

+ 리눅스 설치 시 기본으로 생성되는 시스템 계정이나, APP 설치 시 필수로 생성해야 하는 솔루션 계정도 있다~

 

 

 

 

 

 

 

 

명령어를 통한 계정 전환

 

 

윗 줄에 생각없이 써넣은 비유랑은 좀 다르게, root와 일반 사용자 계정은 서로 전환할 수 있다.

ex. 사용자 계정으로 로그인했다가 권한이 필요하면 명령어를 통해 root 권한을 득할 수 있음

 

 

su (Switch User)

현재 계정을 로그아웃하지 않고 다른 계정으로 전환하는 명령어

 

 

 ># su [ 계정명 ]     // 현재 계정의 환경변수를 유지한 채 전환

 ># su - [ 계정명 ]     // root 계정의 환경변수까지 적용되어 전환

 

 

su root 혹은 su - root를 입력하면 현재 계정이 root 계정으로 전환된다.

당연히 그냥은 아니고, 이어서 root 패스워드를 입력해야 한다.

 

 

 

sudo (Superuser DO)

현재 계정에서 일시적으로 root 권한이 필요할 경우에 사용하는 명령어

 

 

 ># sudo [ 명령어 ]

 

 

su 명령어는 아예 계정이 전환되지만, sudo 명령어는 그냥 명령어 단위로 root 권한만 빌린다.

마찬가지로 명령어 실행 시 root 패스워드를 입력해야 한다.

 

 

 

이렇게 전환하다 보면 지금 내가 무슨 계정이더라? 까먹을 수 있다.

 

 ># whoami     // 현재 나의 계정을 알 수 있음

 ># exit     // 전환하기 전의 계정으로 돌아감 (logout도 마찬가지)

 

 

 

 

 

 

 

 

계정 정보 한 눈에 보는 법

 

 

리눅스는 자신이 갖고 있는 계정 정보를 텍스트 파일에 담아 관리한다.

기본적으로 계정의 목록은 /etc/passwd 파일에 저장되어 있다.

 

 

># cat /etc/passwd

 

예시 1

그럼 계정 정보가 사진처럼 복잡하게 보여질텐데,

이 한 줄 한 줄이 하나의 계정에 대한 설명이라고 보면 된다.

 

보고싶은 계정만 grep으로 스윽 긁어보면 편하다.

 

 

 

 

예시 2 : 예시 1의 첫 줄

어려워 보이지만 의미를 알면 구분하기 쉽다.

각 필드는 콜론(:) 으로 구분하고, 사진 속 용어에 대해 간단히 설명을 적자면 아래와 같다.

 

 

 

계정 명

말 그대로 사용자의 계정 명을 의미한다.

ex. root, oracle, ftp 등

 

 

 

패스워드

해당 계정의 패스워드로

당연히 패스워드가 x는 아니고, /etc/shadow 파일에 암호화되어 저장된다.

 

 

 

UID (User IDentifier)

계정을 식별하기 위한 고유 번호.

회사 임직원의 사번이나 대학생의 학번 개념으로 이해하면 된다.

 

간단히 User ID로 이해하면 되고, root만 0을 가진다.

 

 

 

GID (Group IDentifier)

사용자 계정이 속한 그룹의 고유 번호.

한 그룹에 여러 계정이 담겨있을 수 있으니 /etc/passwd 파일 내에는 번호가 중복되어 보일 수 있다.

하지만 각 그룹끼리는 고유 번호로 나뉜다.

 

마찬가지로 Group ID로 이해하고, root만 0을 가진다.

 

 

 

계정 설명 (Comment)

해당 계정의 설명 란이라고 보면 된다.

보통 공란이거나 계정 명과 동일하게 적혀 있다.

 

ex. postgres:x:123:123::/postgres:/bin/bash

혹은 postgres:x:123:123:postgres:/postgres:/bin/bash

 

 

 

홈 디렉토리

계정의 홈 디렉토리로, 개별 사용자가 권한을 갖고 자신의 홈 디렉토리를 관리할 수 있다.

 

ex. castle5 라는 계정을 만들면 /home/castle5 라는 디렉토리가 castle5 계정 권한으로 생성된다. (변경 가능)

 

생성 안되어 있으면 홈 디렉토리 경로가 지정되어 있는지 확인이 필요하다.

root는 홈 디렉토리가 /root 경로로 지정되지만, 그 외 계정은 기본적으로 /home 아래로 지정된다.

 

 

 

Shell

계정으로 로그인 시 기본으로 사용할 Shell을 지정할 수 있다.

Shell도 설치를 해야 사용이 가능한데, /etc/shells 파일 내에서 사용 가능한 환경을 확인할 수 있다.

 

주로 bash, csh, ksh 를 많이 접하는데, bash를 가장 많이 본다.

 

우리기 사용하기 위한 계정이 아니라 자동으로 생성된(로그인이 불필요한) 시스템 계정은

/usr/sbin/nologin, /bin/false, /sbin/nologin 등 으로도 생성된다.

 

 

각 계정의 설정이 담겨있으니, 당연히 root만이 해당 파일을 수정할 수 있다.

 

 

 

 

 

 

 

 

사용자 계정 생성

 

 

이제 대략적인 의미를 알았으니 사용자 계정 생성하는 방법을 알아보자~

계정 생성은 root 권한을 통해 명령어로 가능하고, 생성 시 /etc/default/useradd 파일의 내용을 참고한다.

 

명령어는 두 가지다.

 

 

 

adduser

사용자 홈 디렉토리를 포함한 사용자 관련 설정을 자동 생성한다.

사용자가 설정한 기본 쉘을 사용자의 쉘로 지정.

 

 

 

useradd

사용자 홈 디렉토리를 포함한 사용자 관련 설정을 자동생성 하지 않음.

따라서, 홈 디렉토리와 패스워드 그 외에도 여러가지 설정을 따로 해줘야 한다. 기본 쉘인 sh가 할당된다.

 

 

사용자 계정 생성 시, 주로 사용하는 옵션은 아래와 같다.

 

주요 옵션 설명
-p 사용자 계정의 암호를 지정
-d 홈 디렉토리를 지정하는 옵션. 최종 디렉토리만 생성하므로 중간 경로가 있는 경우에는 미리 생성해야 한다.
-g 그룹 지정하는 옵션. 지정할 그룹은 미리 생성되어 있어야 한다. 미 지정시, 보통 아이디와 동일한 그룹으로 포함시킨다.
-G 기본 그룹 이외에 추가로 다른 그룹에 속해야 할 경우에 쓴다.
-c 사용자 계정에 대한 설명 지정
-s 사용자 계정 로그인 시 사용할 셸 지정
-D /etc/default/useradd에 설정된 유저 추가와 관련 기본 사항을 보여준다.
-f 패스워드의 만기일을 날짜 수로 지정한다.
-e 사용자 계정의 만기일을 YYYY-MM-DD 형식으로 지정
-u UID 값을 지정하는 옵션

 

 

 


이직하고 너무 바쁘단 핑계로 포스팅을 자주 못했다ㅠㅠ

 

예전에는 날 잡고 포스팅을 단칼에 끝냈었는데

요즘은 퇴근하고 며칠에 걸쳐 야금야금 쓰다가 올리는 중... 올리고픈건 산더미인데.. 퀭..