728x90
실제 업무 환경에서는, 솔루션이나 업무별로 계정을 세분화하여 철저하게 관리한다. 평소 권한과 관련된 요청이 빈번히 발생하는 데, 사용자 관리는 가장 기본적이면서도 굉장히 중요한 부분이라고 생각한다. 이에 따라, 리눅스 시스템 상에서 사용자들을 관리하는 방법을 톺아보고자 한다.
리눅스 계정 종류
Linux는 사용자 중심의 시스템으로, 계정이 있어야 접속할 수 있다. 사용자를 root(관리자)와 일반 사용자로 구분하며, 각 계정은 UID(User Identity)로 관리한다.
- 루트 계정 : 모든 권한을 가진 특별한 사용자
- 시스템 계정 : 리눅스 설치 시 기본으로 생성되는 계정
- 사용자 계정 : 실제 리눅스 사용자를 위한 계정
루트 계정(Root Account)
- UID 값이 0으로 지정된 관리자 계정이다.
- 리눅스 시스템에서 최고 권한을 가진 관리자 계정으로, 모든 파일과 명령에 접근할 수 있다.
- 시스템 운영에 있어 모든 권한을 행사하기 때문에, Privileged User 또는 Super User라고 한다.
일반 사용자 계정(Regular User Account)
- 일반 사용자가 작업할 수 있도록 제공되는 계정으로, 관리자에게 권한을 부여받아 사용한다.
- 시스템에 제한적인 권한을 행사하기 때문에, Normal User 또는 Unprivileged User라고 한다.
💡UID가 0번인 사용자는 Super User로 인식해서 관리자 계정이 된다.
일반사용자 계정의 UID 범위는 /etc/login.defs 에 정의되어 있다.
시스템 계정(System Account)
- 루트 계정과 일반 사용자를 제외한 계정으로는 시스템 계정이 있다. 시스템 계정은 특정 시스템 서비스나 데몬(ex.
ftp
,mail
,httpd
)이 정상적으로 작동하도록 설정된 계정이다. - 사람이 직접 사용하는 것이 아니라 시스템에 의해 자동으로 사용되기 때문에, 일반적으로 로그인은 불가능하다.
리눅스 그룹
리눅스는 사용자 뿐만 아니라, 그룹을 통해서도 권한을 관리한다. 그룹이란 사용자를 묶어 관리 가능하게 하는 매커니즘으로서, 각 사용자는 하나 이상의 그룹에 속하며, 그룹은 GID(Group Identity)를 통해 관리된다. 그룹은 공통의 목적을 가진 사용자들이 모인 집합으로서, 파일의 권한을 공유할 때 사용한다.
기본 그룹
- 모든 사용자는 최소 하나의 그룹에 소속되어야 하는데, 이 그룹을 기본 그룹이라고 한다.
- 사용자가 파일을 생성하는 경우, 사용자의 기본 그룹이 파일의 사용자 그룹으로 지정된다.
보조 그룹
- 사용자가 소속되는 또 다른 그룹이다.
- 보조 그룹도 기본 그룹과 마찬가지로 파일의 권한 중 파일의 사용자 권한을 사용할 수 있다.
- 모든 사용자가 보조그룹에 소속되어야 하는 것은 아니다.
- 사용자는 보조 그룹을 소유하지 않거나 1개 이상을 소유할 수 있다.
UID와 GUID
UID(User ID)
- 사용자 식별 번호
- 슈퍼 유저의 UID = 0
/etc/passwd
에서 모든 계정들의 정보를 확인 가능하다.- 1~499 까지는 시스템을 제어하는 계정으로, 로그인 되지 않도록 생성하는 것이 원칙이다.
GID(Group ID)
- 그룹 식별 번호
- 슈퍼 유저의 GID = 0
/etc/passwd
와/etc/group
에서 확인 가능하다.- 리눅스는 그룹을 통해서 사용자를 묶어 관리할 수 있다.
사용자와 그룹 파일
사용자 계정과 그룹 정보는 /etc/
디렉토리 하위에 존재한다.
구분 | 파일명 | 설명 |
---|---|---|
계정 및 그룹 설정파일 | /etc/passwd |
사용자 계정의 아이디, 그룹정보 등 계정정보 |
/etc/shadow |
암호화된 패스워드 및 정책 설정 정보 | |
/etc/group |
사용자 그룹의 기본 정보 | |
/etc/gshadow |
사용자 그룹의 암호화된 패스워드 정보 | |
계정 환경설정 파일 | /etc/default/useradd |
useradd 명령을 사용할 때 기본 사용자 부가정보 |
/etc/login.defs |
로그인 수행 시 기본설정 | |
/etc/skel |
홈 디렉토리 생성 시 기본으로 제공할 파일 |
/etc/passwd
- 리눅스와 유닉스 시스템에서 사용자 계정 정보를 저장하는 파일이다.
- 로그인 시 필요한 UID,GID, 홈디렉토리, shell 등의 계정 정보를 포함한다.
[사용자명]:[패스워드]:[UID]:[GID]:[설명]:[홈디렉토리]:[shell]
- 모든 사용자에게 읽기 권한을 가진 파일이다.
-rw-r--r-
- 루트 사용자만 write 가능하다.
$ cat /etc/passwd
##
# User Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times this information is provided by
# Open Directory.
#
# See the opendirectoryd(8) man page for additional information about
# Open Directory.
##
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
....
/etc/group
- 그룹에 속한 사용자를 관리하는 파일이다.
- 그룹에는 여러 사용자가 속할 수 있다.
[그룹명]:[패스워드]:[GID]:[사용자 목록...]
cat /etc/group
##
# Group Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times this information is provided by
# Open Directory.
#
# See the opendirectoryd(8) man page for additional information about
# Open Directory.
##
nobody:*:-2:
nogroup:*:-1:
wheel:*:0:root
developers:x:1001:dev1,dev2
...
일반적으로 grep 명령어와 함께 많이 사용한다.
$ cat /etc/group | grep developers
developers:x:1001:user1,user2,user3
계정 관리 명령어
id
: 계정 확인(id/users/who) : 현재 사용자의 UID, GID, 그룹정보를 확인하는 명령어
$ id
id=501(nayoung) gid=20(staff) groups=20(staff),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),33(_appstore),100(_lpoperator),204(_developer),250(_analyticsusers),395(com.apple.access_ftp),398(com.apple.access_screensharing),399(com.apple.access_ssh),400(com.apple.access_remote_ae),701(com.apple.sharepoint.group.1)
whoami
: 현재 로그인한 사용자의 사용자명 출력
$ whoami
nayoung
groups
: 현재 사용자가 속한 그룹이나 지정된 사용자가 속한 그룹 목록을 확인
# 현재 사용자가 속한 그룹
$ groups
# 특정 사용자가 속한 그룹
$ groups [username]
useradd / userdel / usermod
: 사용자 생성/삭제/수정
# 새로운 사용자 계정을 생성한다.
$ sudo useradd <username>
# 사용자를 시스템에서 삭제한다.
$ sudo userdel <username>
# 기존 사용자의 정보를 수정한다.
# 그룹 추가
$ sudo usermod -aG <groupname> <username>
groupadd / groupdel
: 그룹 생성/삭제
# 새로운 그룹을 생성한다.
$ sudo groupadd <groupname>
# 그룹을 삭제한다.
$ sudo groupdel <groupname>
passwd
: 사용자의 비밀번호를 설정하거나 변경
# 현재 사용자의 비밀번호를 변경
$ passwd
# 특정 사용자의 비밀번호를 변경 (관리자 권한 필요)
$ sudo passwd <username>
Reference
더보기
- https://inpa.tistory.com/entry/LINUX-📚-사용자-계정-관리-명령어-💯-정리
- https://smallrich.tistory.com/80
728x90