본문 바로가기
OS/Linux

[Linux] CentOS - 사용자 관리 - 사용자 관리 파일

by BTC_비웃는사나이 2022. 4. 5.

사용자 관리 파일의 중요성

리눅스는 여러 사용자가 하나의 운영체제를 사용하는 다중 사용자 시스템(Multi-User System)입니다.
주로 서버로 사용되는 리눅스는 여러 사용자가 동시에 접속하는 경우가 대부분이고, 다양한 사용자가 하나의 OS에 접근하게 됩니다. 따라서 서버 보안적인 면에서 리눅스에서는 운영체제 관리자가 사용자와 사용자의 그룹을 관리하는 것이 매우 중요합니다.

 

사용자 관리 파일

/etc/passwd

: 사용자의 기본 정보를 저장하고 있는 파일

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
...
  • 필드
[root@localhost ~]# tail -1 /etc/passwd
BTC:x:1002:1002:HelloBTC:/home/BTC:/bin/bash
  • 로그인명(BTC) : 유일한 이름을 가지는 사용자명 (중복 허용 안됨)
                         첫 문자는 영문자( . _ -은 시스템에 따라 사용 가능)
  • 사용 안 함(x) : 패스워드를 저장하는 부분이었지만 현재는 사용하지 않음. /etc/shadow 파일에 별도로 저장
  • UID(1002) : 중복 가능 시스템이 사용자를 식별하는 번호 (root의 UID는 0)
                   일반 사용자는 1000번 이상의 UID 사용 일반적으로 1000번보다 작은 UID는 예약 UID
  • GID(1002) : 해당 사용자가 속해있는 주 그룹의 GID
  • 주석(HelloBTC) : 로그인명만으로 사용자의 구분이 힘들 때 자세한 설명을 쓰는 부분
                          (일반적으로 사용자의 전체 이름 또는 연락처, 부서 등을 기재)
  • 사용자 홈 디렉토리(/home/BTC) : 사용자의 홈 디렉토리 '~'를 사용했을 때 참조하는 부분
  • 로그인 쉘(/bin/bash) : 사용자가 로그인할 때 실행되는 쉘을 지정 (/sbin/nologin : 시스템이 사용하는 계정)
  • 대표적인 사용자
  • root : 시스템에서 모든 권한을 가지고 있는 최고 권한 사용자 시스템 내의 보호되는 파일이나 퍼미션 등 제한 사항에 대해 대부분 영향을 받지 않음
  • bin : 시스템의 구동 중인 바이너리 파일을 관리하기 위한 계정
  • daemon : 백그라운드 프로세스에 대한 작업을 제어하기 위한 시스템 계정
  • adm : 시스템 로깅이라는 특정 작업을 관리하는 시스템 계정
  • lp : 프린트를 위한 계정
  • gdm : Gnome Display 관리 서비스 계정
/etc/shadow

: 사용자의 패스워드를 저장하고 있는 파일

[root@localhost ~]# cat /etc/shadow
root:$6$CUvYQD9I4bxT2A/9$uhgVyUkovfqDgdISvdkgDAAFpdg4qbSFQtHu713wOxbw2bJtfqt54rGmoZGGxPHIt/q0Myan0Cd3VBrxCRq6D0::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
...
  • 필드
[root@localhost ~]# tail -1 /etc/shadow
BTC:$6$zxiDLrwS$W/GlKs4EY8eN99ORPbz12XFOU/Fvl/qFfCic1bjCyM8N3v342TkdPuHneGYN9iD1WHhGWw8TfJVdGDBYdZl19/:19087:0:99999:7:::
  • 로그인명(BTC) : 사용자의 로그인명
  • 패스워드 필드($6$xTQ....F0F3YgCwT) :
    암호화돼서 저장                                                 
    대칭키 암호화 알고리즘(DES)을 이용한 Crypt 함수                                                 
    $로 필드를 구분 ($6$xTQ2us/k$)                                                 
    패스워드 생성 시 사용된 salt 값을 저장 salt ⇒ xTQ2us/k                                                 
    LK : 해당 사용자는 로그인할 수 없는 lock이 걸린 사용자를 의미                                                 
    공백일 경우 패스워드 입력 없이 로그인할 수 있음 (↓아래 참조)
[root@localhost ~]# tail -1 /etc/shadow
BTC::19087:0:99999:7:::
  • 마지막 변경일 : 1970년 1월 1일 기준으로 패스워드를 변경한 날짜까지 일수로 count (Unix Epoch 시간)
  • MIN : 패스워드 변경 후 최소 사용기간 (패스워드 변경 후 설정 MIN이 지날 때까지 재변경 불가)
  • MAX : 패스워드 변경 후 최대 사용 기간
  • 지정된 MAX 값 이내에 변경 패스워드 사용 가능
  • WARN : 패스워드 만기일 이전에 사용자에게 경고 메시지를 전달할 날짜 지정
  • Inactive : 비활성화 사용자
  • 휴면계정 설정 (설정 날짜만큼 로그인 활동이 없으면 Lock 계정(휴면계정)으로 변경됨)
  • Expire : 패스워드 만기일 설정 해당 날짜에 자동으로 계정 locking -> 로그인 불가 (관리자에 의해 lock 해제 필요)
  • Reserved : 예약 필드 현재는 사용하지 않음
/etc/group

: 그룹에 대한 정보를 저장하고 있는 파일

[root@localhost ~]# 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:kukin   # kukin이 보조그룹이 된다
...
  • 필드
[root@localhost ~]# tail -1 /etc/group
BTC:x:1002:
  • 그룹 이름(BTC) : 그룹의 이름
  • 패스워드(x) : 하위 버전과의 호환성을 위해 제공되는 필드 현재는 사용하지 않지만 사용이 불가능한 것은 아님.
  • GID(1002) : 해당하는 그룹을 구분하는 번호
  • 사용자 목록 : 해당 그룹을 보조 그룹으로써 참조하는 사용자들의 로그인명

 

출처 : https://www.youtube.com/channel/UCl9zTDOvOxdCfUt1HqVwwdg

댓글