본문 바로가기

os/linux

[ Linux ] 리눅스 사용자, 그룹 정보 파일

[ Linux ] 리눅스 사용자, 그룹 정보 파일

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 리눅스의 사용자와 그룹에 대한 정보가 담긴 파일들에 대해 알아보겠습니다.

 

리눅스를 사용하면서 알아두면 좋은 정보들이니 천천히 둘러봐주세요.

 

포스팅하면서 사용하고 있는 OS는 우분투 22.04.1 LTS 입니다.

 

설치하는 과정이 필요하시다면 아래글을 참고해 주세요.

 

[ Linux ] VirtualBox Ubuntu 22.04.1 LTS 설치

 

시작합니다.

 

linux-logo
리눅스 로고


사용자와 그룹

 

리눅스에서의 사용자는 실제로 시스템을 사용하는 사람의 계정을 의미합니다.

 

계정에 접속할 때 사용자 이름을 사용하지만 OS는 UID(User ID)라는 번호로 계정을 식별합니다.

 

UID가 같을 경우, 사용자 이름이 달라도 시스템이 같은 계정으로 인식하기 때문에 UID중복은

 

보안에 좋지 않은 영향을 끼칠 수 있습니다.

 

리눅스의 그룹은 사용자들의 집합을 의미하고 주로 파일의 권한을 공유하는 데 사용됩니다.

 

그룹 역시 사용자와 마찬가지로 그룹 이름과 GID(Group ID) 번호가 존재하고 시스템은 GID를 통해 그룹을 식별합니다.

 

사용자는 최소 하나의 그룹에 속해야 하는데 이는 기본 그룹을 의미합니다.

 

기본 그룹이 아닌 다른 그룹에도 속할 수 있는데 이는 보조 그룹이라고 합니다.

 

보조 그룹은 없거나, 여러 개 일 수 있습니다.

 

즉, 필수적으로 그룹에 속해있고 (기본그룹), 부가적으로 다른 그룹에도 속해 있을 수 있다. (보조 그룹)

 

리눅스에서는 모든 파일을 사용하려면 사용자가 권한을 가지고 있어야 합니다.

 

사용자의 권한이 사용하려는 파일의 권한에 미치지 못하면 파일을 사용할 수 없습니다.

 

파일의 사용 권한은 파일을 만든 사용자의 기분 그룹이 가진 권한으로 자동 설정됩니다.

 

예를 들어 내가 만든 파일을 사용하려면 내 기본 그룹 이상의 권한을 가진 그룹에 속해있는 사용자여야 합니다.

 

사용자 별로 기본 그룹과 보조 그룹 설정 가능합니다.

 

사용자를 생성할 때 지정하거나, 생성한 뒤에 정보를 수정해 그룹 설정을 해줄 수 있습니다.


사용자 정보 파일

 

리눅스 사용자에 대한 정보가 담긴 파일은 2개입니다.

 

/etc/passwd        리눅스에 등록된 사용자 정보

/etc/shadow        리눅스에 등록된 사용자 비밀번호 및 비밀번호의 설정

 

우선 /etc/passwd 부터 알아봅시다.


/etc/passwd

 

리눅스에 등록되어 있는 사용자에 대한 정보가 저장되어 있는 파일입니다.

 

편집기를 사용해 파일에서 직접 사용자 정보를 수정할 수 있지만 리눅스가 요구하는 형식에 맞지 않는다면

 

문제를 일으킬 가능성이 있기 때문에 명령어를 사용해 사용자 정보를 수정하는 것을 추천드립니다.

 

파일의 내용을 살펴봅시다.

 

명령어로 파일 내용 출력

# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
-------------------------- 생 략 ---------------------------
hplip:x:126:7:HPLIP system user,,,:/run/hplip:/bin/false
gdm:x:127:133:Gnome Display Manager:/var/lib/gdm3:/bin/false
symxsym:x:1000:1000:symxsym,,,:/home/symxsym:/bin/bash
fwupd-refresh:x:128:136:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
sshd:x:129:65534::/run/sshd:/usr/sbin/nologin

 

파일 내용은 각 줄마다 하나의 사용자에 대한 정보이며 콜론(:)으로 구분합니다.

 

USER : x : UID : GID : GECOS : HOME : SHELL

USER 사용자 이름
x 패스워드를 저장하는 필드이지만 요즘엔 /etc/shadow 파일에 저장되어서 안 쓰임
UID 사용자 식별 번호 0번 루트, 1000번 이전 시스템 계정 전용, 사용자는 1000번 이후부터 부여
GID 그룹 식별 번호, 0번 루트 그룹, 1000번 이전 시스템 그룹, 1000번 이후부터 일반 그룹
GECOS 사용자 계정에 대한 주석
HOME 사용자의 홈 디렉터리 절대경로
SHELL 사용자가 사용할 기본 쉘

 

리눅스에는 기본적으로 생성되어 있는 시스템 계정들이 존재합니다.

 

대표적으로 root  계정은 0번의 UID를 가지고 리눅스에서 가장 높은 권한을 가진 계정입니다.

 

모든 것에 접근이 가능하기 때문에 root 계정을 사용할 때는 실수하지 않도록 주의해야 합니다.


/etc/shadow

 

사용자의 비밀번호를 해시형태로 저장하고 비밀번호의 속성이 기록되어 있는 파일입니다.

 

리눅스 초기에는 /etc/passwd 의 두 번째 필드에 비밀번호가 저장되어 오다가

 

보안상의 문제로 현재는 해당 파일에 저장되고 있습니다.

 

관리자 이외의 사용자는 파일에 접근할 수 없으므로 root 계정을 통해 파일 내용을 살펴봅시다.

 

root:$y$j9T$4pDZAEFl6hqljR8h/tLz./$e9kLcueN7H0EZKixZDlPaFibsYoaR5ZAqi6BNOyidf9:19362:0:99999:7:::
daemon:*:19213:0:99999:7:::
bin:*:19213:0:99999:7:::
sys:*:19213:0:99999:7:::
sync:*:19213:0:99999:7:::
games:*:19213:0:99999:7:::
man:*:19213:0:99999:7:::
lp:*:19213:0:99999:7:::
mail:*:19213:0:99999:7:::
------------------ 생 략 ------------------
hplip:*:19213:0:99999:7:::
gdm:*:19213:0:99999:7:::
symxsym:$y$j9T$2vADYzm79DMbhZGb6HEdb.$eoNBczcqXR0hbso4hn1IjdywRrZGyr0ZHyBzq/mcsJ4:19362:0:99999:7:::
fwupd-refresh:*:19334:0:99999:7:::
sshd:*:19335:0:99999:7:::

 

/etc/shadow 파일의 내용은 9개의 필드로 구성되어 있습니다.

 

USER : HASH : LASTCHANGE : MIN : MAX : WARNING : INACTIVE : EXPIRE : BLANK

USER 사용자 이름
HASH 해시 알고리즘으로 생성된 비밀번호
LASTCHANGE 비밀번호 마지막 변경 일시
MIN 비밀번호 변경 후 최소 사용 기간
MAX 비밀번호 변경 후 최대 사용 기간, 기간이 지나기 전에 비밀번호를 변경해야 함.
WARNING 비밀번호 만료일 전에 경고 메시지 출력, MAX=10, WARNING=3으로 설정하면
7일 되는 날부터 경고 메시지 출력
INACTIVE 비밀번호 만료 후 변경할 수 있는 유예기간을 의미, 해당 기간이 지나면 사용자 계정이 잠긴다.
예를 들어 값을 10으로 설정하면 만료 후 10일까지는 비밀번호 재설정 가능
EXPIRE 사용자 계정의 만료일
BLANK 빈 필드

 

/etc/shadow 파일의 설정들을 바꾸려면 chage 명령어를 사용해야 합니다.

 

사용법은 다음 포스팅에서 다루도록 하겠습니다.



그룹 정보 파일

 

리눅스 그룹에 대한 정보가 담긴 파일은 2개입니다.

 

/etc/group             리눅스에 등록된 그룹 정보

/etc/gshadow        리눅스에 등록된 그룹 비밀번호 및 비밀번호의 설정

 

/etc/group 파일부터 알아봅시다.


/etc/group

 

보통 리눅스에서는 사용자의 이름과 똑같은 이름으로 그룹이 생성됩니다.

 

즉, 사용자 계정을 생성하면 사용자의 이름과 같은 그룹이 생성되고 해당 계정의 기본 그룹으로 설정됩니다.

 

/etc/group 파일의 내용으로는 해당 그룹을 기본 그룹으로 가진 사용자의 정보는 확일 할 수 없습니다.

 

이를 확인하기 위해서는 아래와 같이 id 명령어를 사용합니다.

 

사용자의 UID, 기본 그룹, 보조 그룹의 이름과 번호 출력
# id symxsym

uid=1000(symxsym) gid=1000(symxsym) groups=1000(symxsym),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),122(lpadmin),134(lxd),135(sambashare)

 

/etc/group 파일의 내용으로는 해당 그룹의 번호와 구성원을 파악할 수 있습니다.

 

# cat /etc/group

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,symxsym
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
------ 생 략 ------
geoclue:x:130:
pulse:x:131:
pulse-access:x:132:
gdm:x:133:
lxd:x:134:symxsym
symxsym:x:1000:
sambashare:x:135:symxsym
fwupd-refresh:x:136:

 

파일의 내용은 총 4개의 필드로 구성되어 있습니다.

 

GROUP : x : GID : MEMBER

GROUP 그룹 이름 (중복 불가)
x 그룹 비밀번호를 위한 필드였지만 현재는 /etc/gshadow 파일에 비밀번호 저장됨
GID 그룹의 번호
MEMBER 해당 그룹을 보조 그룹으로 설정한 사용자 목록

/etc/gshadow

 

그룹에 로그인할 때 사용할 해시 비밀번호가 저장된 파일입니다.

 

/etc/shadow와 비슷한 역할을 하지만 근래에는 그룹의 해시 비밀번호를 사용하지 않는 추세입니다.

 

파일의 내용을 살펴보시죠.

 

# cat /etc/gshadow

root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,symxsym
------------ 생 략 ------------
gdm:!::
lxd:!::symxsym
symxsym:!::
sambashare:!::symxsym
fwupd-refresh:!::

 

파일 내용은 총 4개의 필드로 구성

 

GROUP : PASSWD : ADMIN : MEMBER

GROUP 그룹 이름
PASSWD 암호화된 패스워드
ADMIN 그룹 관리자
MEMBER 그룹 멤버 목록


여기까지 사용자와 그룹 정보 파일에 대해서 알아보았습니다.

 

리눅스 사용이 처음이신 분들은 매 순간이 새로움의 연속일 겁니다.

 

하지만 차근차근 찾아보고 사용해 본다면 어느 순간 리눅스를 편하게 다루는 자신을 보게 될 것입니다.

 

베이컨의 '아는 것이 힘이다'라는 말을 항상 되뇌이면서 오늘 하루도 힘내세요.

 

감사합니다.

반응형