본문 바로가기
IT Security/LINUX Basic

6. LINUX - 사용자 계정 생성 및 삭제

by Rosmary 2019. 8. 24.
728x90
반응형

 

리눅스는 윈도우처럼, 여러 개의 계정을 생성하고, 그 계정을 이용해 컴퓨터 내의 자원을 사용할 수 있다. 현재처럼 각 개인이 휴대용 컴퓨터인 노트북을 들고 다니는 상황에서, 여러 개의 계정을 생성한다는 것이 큰 의미를 가지지 않는다고 생각하는 사람들이 많을 것이다. 

 

하지만, 컴퓨터가 정말 귀하고 귀하던 시절에는 여러 명의 사용자가 하나의 컴퓨터를 공유할 수 밖에 없었는데, 하나의 컴퓨터 내에서 특정인이 다른 사람의 작업 내용을 건드리지 못하도록 나눈 것이 계정의 시초가 될 수 있다. 그리고 사용자가 컴퓨터를 사용하면서 컴퓨터의 성능에 영향을 주는 행위를 하지 못하도록, 특정 폴더의 접근 권한을 제어하고 전체 컴퓨터를 관리하는 관리자 계정, root도 이렇게 탄생하게 되었다. 

 

어떻게 보면, 리눅스의 시스템은 한 지붕 아래에 부모와 자식이 함께 살고 있는 형태를 띄고 있다. 관리자인 root는 집의 소유자, 일반 계정은 나머지 가족으로 보면 된다. 집의 소유자는 일반 계정이 조금 더 효율적으로 생활을 영위할 수 있도록, 각자에게 방을 마련하고, 필요한 도구가 있다면 빌려주거나(예를 들면 공구), 집의 유지 보수를 진행하는 것을 생각해보자.  

 

그럼, 현재 리눅스의 다중 계정은 어떻게 사용될까? 우리가 일상적으로 사용하는 포탈 사이트를 생각해보자. 이 사이트들은 이메일 서비스를 사용자에게 제공하며, 사용자가 자신만의 개인 이메일을 사용할 수 있도록 ID와 패스워드를 생성한다. 이러한 이메일 서비스가 제공되는 컴퓨터를 서버라고 부르는데, 서버의 구축에 리눅스가 많이 사용되며, 해당 서버에서 만들어진 리눅스의 계정들이 곧, 우리가 현재 사용하는 포탈 사이트의 ID와 비밀번호라고 생각하면 편하겠다.

 

만약, 서버 관리자를 향후 직업으로 삼거나, 자신만의 서버를 구축하려고 하는 사람이라면, 반드시 리눅스의 계정 관리와 이해는 필수다.

 

 

 

1. 계정의 확인

 

리눅스에 생성된 계정들을 확인할 수 있는 방법은 크게 두 가지가 있다. 

 

첫 번째 방법은 /home 디렉토리의 하위 폴더를 확인하는 것이다. CentOS7을 사용하는 분들이라면 설치 당시 사용한 ID명으로 폴더가 하나 만들어져 있을 것이다. /home 디렉토리에는 계정이 새로 생성될 때마다, 생성된 사용자 이름(ID)으로 된 폴더가 하나씩 자동으로 생성된다.

 

나중에 여러 개의 계정을 만들어본 뒤, 각 계정명 폴더 안의 내용을 lh -lha 명령어로 확인해보면, 내용 구성이 전부 동일함을 확인할 수 있을 것이다. 즉, /home 디렉토리는 사용자가 각자의 방처럼 사용할 수 있는 폴더가 위치하는 곳이라고 보면 된다. 

 

 

하지만 위와 같은 방법으로 계정을 확인하는 것은, 리눅스에 실제 생성된 계정과는 차이가 있을 수 있다. 만약, 관리자 계정인 root가 loricatuslupus라는 계정을 삭제하지 않고, /home 디렉토리의 폴더만 삭제했다면?? loricatuslupus 계정은 자신의 방만 없는 것이지, 호적을 파버린 것이 아니기 때문에 엄연히 존재하는 계정이다. 혹은 반대로, 방은 존재하나 계정이 존재하지 않는다면? (조금 극단적인 예시이긴 한데)가족 구성원 중 한 명이 세상을 떠났지만, 방은 그대로 남아있는 것과 같다. 따라서 /home 디렉토리의 하위 폴더를 보는 것으로는 정확한 리눅스 계정들을 파악할 수 없다.

 

따라서, 리눅스 내에 생성된 정확한 계정을 파악하기 위해서, /etc/passwd 파일을 확인해야한다. 이 파일은 루트 계정을 포함해, 현재 리눅스에 생성된 시스템 계정과 사용자 계정 정보를 모두 보여준다. cat 명령어를 사용하여 확인하면 다음과 같다.

 

/etc/passwd 폴더는 "계정명:비밀번호:UID:GID:계정설명(comment):홈디렉토리경로:사용중인 쉘의 종류"를 각각의 계정별로 보여준다.

 

계정명 뒤의 비밀번호는 모두 x로 표기되어 있다. 이전에는 모두 평문으로 비밀번호를 표시했었지만, 보안상의 이유로 인해 이 비밀번호를 전부 암호화처리하면서 x로 표기되도록 만들어 놓았다. 각 계정에 대한 비밀번호를 보관하는 파일은  /etc/shadow이며, 이 파일에는 각 계정별 패스워드가 암호화된 상태로 존재하고 있다. 아래의 사진처럼.

 

보안상의 이유로 암호화된 비밀번호 일부를 모자이크했다.

 

root계정은 어떤 리눅스 계열에서도 항상 UID 0번, GID 0번 값을 가진다. 일반 계정은 CentOS 7을 사용하는 경우라면 UID와 GID 값이 모두 1000번 이상을 가지고 있을 것이다. 

 

root 계정으로 cd ~를 치면 이동하는 폴더가 /root이고, 일반 계정으로 동일한 명령어를 입력하면 이동하는 폴더는 /home/계정명이라고 이전의 포스팅에서 언급했었다. 그리고 ~의 경로는 바로 각 계정의 홈디렉토리에 설정된 경로와 동일하다. (위의 사진에서는 root 계정의 홈디렉토리(~)는 /root로 되어 있는 것을 볼 수 있다)

 

*  UID와 GID 값은 컴퓨터가 계정명을 인식할 수 있도록 만든 숫자형 ID라고 생각하면 된다. 컴퓨터가 사람의 언어를 고스란히 이해하는 것에는 한계가 있기 때문에, "root는 0번으로 인식"하도록 만든 것이 UID 0, "root가 root라는 그룹명을 0번으로 인식"하도록 만든 것이 GID 0이다. 

 

그럼, 이제 계정을 만들어, 이 파일과 /home 디렉토리에 어떤 변화가 생기는지 살펴보도록 하자.

 

 

 

2. 계정의 생성 및 비밀번호 부여.

 

 

계정 생성 명령어는 다음과 같다.

 

=====================

useradd 계정명(ID)

=====================

 

지금까지 본 명령어와 달리, 무슨 작업을 하는지 의미가 명확히 전달되는 되는 명령어다. 이제 이들 명령어로 인해 생성된 계정들이 어떻게 나타나는지 확인해보자.

 

원래, UID/GID 값이 순차적으로 나타나야되는데, 필자가 작업하는 리눅스가 안드로이드 리눅스라 순차적인 번호로 부여되지 않은 듯 하다.

 

/home 디렉토리에 생성 계정인 user1, user2, user3에 대한 방(폴더)이 만들어졌고, /etc/passwd 파일에도 이들 계정이 마지막에 추가된 것을 확인할 수 있다. 

 

각 계정이 리눅스의 시스템을 이용하기 위해서는 비밀번호가 부여되어야 한다. 비밀번호를 부여하거나 변경하는 명령어는 다음과 같다.

 

 

=========================

passwd  계정ID (root계정에서 사용 시)

passwd   (일반계정에서 사용 시)

=========================

 

 

 

이 비밀번호 역시 관리자 권한(root 계정)에 의해 실행할 수 있으며, 일반 계정에서는 자신의 계정 비밀번호만 passwd 라는 명령어로 변경할 수 있다. (단, root 계정에서도 passwd만 입력하는 경우, 이는 root 계정의 비밀번호를 변경하겠다는 의미와 동일하다)

 

생성된 모든 계정에 비밀번호를 부여하고, /etc/shadow의 마지막 4 줄을 확인해보자.

 

생성된 세 개의 계정에 모두 비밀번호가 부여된 것을 확인할 수 있다. 참고로, 모든 계정에 같은 비밀번호를 부여하였음에도 불구하고, /etc/shadow의 암호화된 비밀번호는 모두 다른 값을 가지고 있다. 

 

 

 

3. 계정의 삭제.

 

계정 삭제 명령어 역시, 계정 생성 명령어처럼 직관적인 모양을 지닌다. 필자는 여기에 옵션 하나를 추가해서 사용한다. 

 

====================

userdel -r 계정명

====================

 

우선 옵션으로 붙어있는 -R을 제외하고 user1 계정을 제거해보자. 아마 /etc/passwd 파일에서 user1은 사라졌겠지만, /home 디렉토리의 user1 폴더는 지워지지 않고 그대로 남아있을 것이다.

 

만약 user1이라는 계정을 다시 생성한다면, 원래의 home 폴더 및 메일 폴더가 존재하고 있었다는 알림 문구와 함께 계정이 만들어진다.

 

 

계정을 지우면서 계정의 기본 폴더와 같이, 계정과 관련된 모든 것을 삭제하기 위해서는 -r 옵션을 같이 사용하면 된다. 

 

 

지금까지, 리눅스에서 계정 및 비밀번호의 생성/삭제 과정에 대해 알아보았다. 마지막으로 위에서 언급한 명령어를 정리하며 이번 포스팅을 마친다.

 

리눅스 계정 및 비밀번호 생성/삭제 명령어 및 관련 파일
useradd 계정ID 계정ID 생성
userdel 계정ID 존재하는 계정ID 삭제
userdel -r 계정ID 존재하는 계정ID 삭제 및 홈 디렉토리 등 관련 폴더 삭제
passwd [계정ID] 자신의 비밀번호 변경/부여 [계정ID의 비밀번호 변경/부여]
/etc/passwd 리눅스 계정 및 계정 정보 포함
/etc/shadow 리눅스 계정 및 비밀번호, 비밀번호 관련 설정 포함
반응형

댓글