RHCSA 준비/01. 사용자 및 그룹 관리

1.1 사용자 및 그룹 정보 파일 (/etc/passwd , /etc/shadow, /etc/group, /etc/gshadow)

Jaden Park 2021. 5. 18. 19:32

사용자 정보 파일, UID

  • 사용자 번호, 사용자 판별 번호
  • UID가 같은 사용자는 사용자 이름이 다르더라도 리눅스 시스템은 같은 사용자로 인식
  • UID를 중복 할당하는 경우, 보안상 문제를 초래할 수 있으므로 사용 시 주의가 필요

그룹 정보 파일, GID

  • 그룹은 공통의 목적을 가진 사용자들이 모인 집합으로서 파일의 권한을 공유할 때 사용
  • GID 의 고유번호의 판별 번호
  • 그룹에는 기본 그룹과 보조 그룹으로 나눠짐
  • 기본 그룹과 보조그룹은 사용자별로 설정할 수 있음

기본 그룹

  • 모든 사용자는 최소 하나의 그룹에 소속되어야 하는데 이 그룹을 기본 그룹이라고 함
  • 사용자가 파일을 생성하는 경우 사용자의 기본 그룹이 파일의 사용자 그룹으로 지정

보조 그룹

  • 사용자가 소속되는 또 다른 그룹.
  • 보조 그룹도 기본 그룹과 마찬가지로 파일의 권한 중 파일의 사용자 권한을 사용할 수 있음
  • 모든 사용자가 보조그룹에 소속되어야 하는 것은 아님
  • 사용자는 보조 그룹을 소유하지 않거나 1개 이상을 소유할 수 있음

사용자와 그룹 파일

  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /etc/gshadow
    위 4개의 파일에 사용자와 그룹의 정보를 저장하고 있음
파일 설명
/etc/passwd 시스템에 등록된 사용자 정보
/etc/shadow 시스템에 등록된 사용자의 패스워드와 패스워드에 대한 설정
/etc/group 시스템에 등록된 그룹 정보
/etc/gshadow 시스템에 등록된 그룹의 패스워드와 패스퉈드에 대한 설정

/etc/passwd

  • 시스템에 등록된 사용자 정보를 저장
  • 편집기를 사용하여 이 파일에 있는 사용자의 정보를 직접 수정할 수도 있지만 지정된 형식에 맞지 않는 정보를 입력할 경우 시스템에 문제를 발생시킬 수 있음
  • 따라서, 사용자 정보를 수정할 때는 파일을 직접 수정하지 않고 명령어를 사용할 것을 권장

/etc/passwd 파일은 총 7개의 필드로 사용자의 정보를 저장하고 있고 각 필드는 콜론(:)으로 구분
기본 구조는 다음과 같음.

USER : x : UID : GID : GECOS : HOME : SHELL
필드 설명
USER 사용자의 이름을 나타냄. 사용자의 이름은 시스템에서 유일해야 하며 사용자로 로그인 할 때 사용
x(place holder) 사용자의 패스워드를 저장하는 필드. 현재 이 필드는 사용되지 않으며, 현재 패스워드에 대한 정보는 /etc/shadow 파일에 해시 패스워드 형태로 저장
UID 시스템에서 사용자를 식별하는 번호. 0번은 root, 1000번 미만은 시스템 사용자 계정으로 예약되어 있고 일반 사용자는 1000번부터 부여
GID 시스템에서 그룹을 식별하는 번호. 사용자와 마찬가지로 0번은 root 그룹이며 1000번 미만은 시스템 그룹으로 예약되어 있고 1000번 이상부터는 일반 그룹에게 부여
GECOS General Electric Comprehensive Operating 형식의 주석 필드. 사용자의 계정에 대한 주석을 기재할 수 있음
HOME 사용자의 홈 디렉토리를 절대경로로 나타냄
SHELL 사용자가 기본으로 사용할 쉘을 나타냄
[root@centos7 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash           #1
bin:x:1:1:bin:/bin:/sbin/nologin          #2
daemon:x:2:2:daemon:/sbin:/sbin/nologin   #3
adm:x:3:4:adm:/var/adm:/sbin/nologin      #4
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin  #5
...
nobody:x:99:99:Nobody:/:/sbin/nologin     #6
...
ntp:x:38:38::/etc/ntp:/sbin/nologin       #7
...
gdm:x:42:42::/var/lib/gdm:/sbin/nologin   #8
사용자명 UID 설명
#1 0 시스템의 관리자 계정, 시스템을 관리하기 위한 특권(Privilege)을 가지고 있기 때문에 파일에 대한 권한(Permission)의 제약을 거의 받지않음
#2 1 시스템에 구동중인 바이너리 파일을 관리하기 위한 계정
#3 2 백그라운드 프로세스에 대한 작업을 제어하기 위한 시스템 계정
#4 3 시스템 관리를 위한 계정으로 시스템 로깅 같은 특정 시스템 파일을 관리
#5 4 로컬 프린트를 위한 데몬 계정
#6 99 익명 연결 계정, 웹 서비스와 같이 누구나 연결이 가능해야 하는 서비스가 있는 경우 필요한 계정
#7 38 컴퓨터 시간을 동기화 시켜주기 위하여 만들어진 Network Time Protocol 계정
#8 42 그래픽 화면 관리 계정

/etc/shadow

  • /etc/shadow 파일은 사용자의 패스워드를 해시패스워드 형태로 저장하고 패스워드에 대한 속성을 저장한 파일
  • 리눅스 시스템 초기에는 /etc/passwd 파일의 두 번째 필드에 패스워드가 암호화되어 저장되었음
    • 하지만 이 파일은 누구나 접근할 수 있고 복호화하기 쉬운 암호화 알고리즘을 사용하였으므로 시스템의 패스워드가 유출될 가능성이 매우 높았음
  • 반면 /etc/shadow 파일은 관리자 이외의 사용자에 대한 접근이 차단됌.
  • 더 강력한 해시 알고리즘을 통해 패스워드 해시를 생성하기 때문에 복호화 불가능
  • 또한 해시 패스워드를 저장하면서 패스워드에 대한 속성이 추가

/etc/shadow 파일은 총 9개의 필드로 구성되어 있고, 각 필드는 콜론(:)으로 구분
기본 구조는 다음과 같음

USER : HASH : LASTCHANGE : MIN : MAX : WARNING : INACTIVE : EXPIRE : BLANK
필드 설명
USER 사용자의 이름을 나타냄.
HASH 해시 알고리즘을 사용하여 생성된 패스워드가 저장됌. $로 구분하면 다시 3개로 나뉨. 첫 번째 필드는 해시 알고리즘 유형. 두 번째 필드는 해시 알고리즘과 함께 사용할 salt, 세 번째는 해시 패스워드가 저장. 공백이라면 passwd 설정이 되지 않은 상태
LASTCHANCE 마지막으로 패스워드를 변경한 날짜를 의미. 이 숫자는 1970년 1월 1일 기준으로 D+Day
MIN 패스워드 변경 후 최소 사용 기간
MAX 패스워드 변경 후 최대 사용 기간, 해당 기간이 지나기 전에 패스워드를 갱신해야 함
WARNING 만료일이 되기 전 사용자에게 경고 메시지를 출력할지 설정. MAX=90, WARNING=5 라면, 사용한 지 85일되는 날 경고 메시지 출력
INACTIVE 패스워드가 만료되고 INACTIVE에 지정된 숫자 안에 패스워드를 변경하지 않으면 사용자 계정이 잠금 상태로 변경
EXPIRE 사용자 계정의 만료일을 지정. 만료일이 되면 해당 사용자는 잠금 상태가 되어 로그인할 수 없음. 이 필드의 값도 LASTCHANCE 값과 같이 계산하여 날짜를 알 수 있음
BLANK 예약된 필드로 아직 사용하지 않음
[root@centos7 ~]# cat /etc/shadow
root:$6$ujkQsPM8$qxvbXQcIwCUSsG4zjV4RV/MfSrb1rlTrsrGO7yQZf3R5mgJHj1Wrfe1WSAm7peMdAW9R8GUOMBMDRHm5Ez.t71:18760:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::

...

user:$6$Sy2sjFEcMKRe64Em$q/p28z0tdlcuYi6fQs8Cu73ZREsIYwErQTEiqbYsmlZGVsvIREvc5/CAxQcdD.3jHSZ/PU8SvsfaOMpLbGF.K1::0:99999:7:::
kim:!!:18757:0:99999:7:::
lee:!!:18757:0:99999:7:::
park:!!:18757:0:99999:7:::

/etc/shadow 파일의 패스워드 설정과 관련된 각 필드 값을 변경하기 위해 chage 명령을 사용. 뒤에서 다룰 예정

/etc/group

  • 그룹에 대한 정보를 저장
  • 대부분의 리눅스에서는 사용자가 생성되면 그 사용자의 이름과 똑같은 이름의 그룹도 함께 생성
  • 생성된 사용자의 기본 그룹은 함께 생성된 그룹으로 지정
  • /etc/group 에서는 그룹의 GID와 그룹의 구성원을 확인 할 수 있음
  • 그룹의 정보를 저장하고 있지만, 각 그룹별로 해당 그룹을 기본 그룹으로 지정하고 있는 사용자의 정보를 확인할 수 없음.
    • 기본 그룹의 정보는 /etc/passwd 파일에 저장
    • 사용자의 기본 그룹 정보를 확인하고 싶은 경우에는 id 명령을 사용
    • id 명령은 사용자의 이름 및 UID 정보, 기본 그룹과 보조그룹의 이름 및 GID 정보 출력
[root@centos7 ~]# id user
uid=1000(user) gid=1000(user) groups=1000(user),10(wheel),1003(alluser)

/etc/group 파일은 총 4개의 필드로 구성, (:) 콜론으로 구분.
기본 구성은 다음과 같음.

GROUP : x : GID : MEMBER
필드 설명
GROUP 그룹의 이름을 나타냄. 시스템 내에서 그룹이름은 유일해야 함
x 그룹의 패스워드를 저장하는 필드였지만 현재는 /etc/gshadow 파일에 저장
GID 그룹의 GID를 나타냄
MEMBER 이 그룹을 보조 그룹으로 지정하고 있는 사용자 목록
[root@centos7 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:user
...

/etc/gshadow

  • 그룹에 로그인할 때 사용할 해시 패스워드를 저장한 파일로 /etc/shadow 파일과 비슷한 역할을 담당
  • 하지만, 요즘 그룹의 해시 패스워드는 거의 사용하지 않음.
    /etc/gshadow 파일은 다음과 같이 4개의 필드로 이루어져 있음.
GROUP : PASSWORD : ADMIN : MEMBER
필드 설명
GROUP 그룹의 이름을 나타냄.
PASSWORD 그룹의 암호화된 패스워드.
ADMIN 해당 그룹의 관리자를 나타냄.
MEMBER 해당 그룹의 멤버를 나타냄.
[root@centos7 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
...