Linux 계정



사용자 계정 관련 파일


리눅스는 여러 명이 시스템을 사용하는 다중 사용자 시스템이다. 그러므로 사용자 구별/자원 할당이 필요하다.


리눅스의 사용자 계정 관련 파일

  • /etc/oasswd
  • /etc/shadow
  • /etc/login/defs
  • /etc/group
  • /etc/gshadow



/etc/passwd


사용자 계정 정보가 저장된 기본 파일. 사용자 계정이 저장되는 중요한 파일이므로 함부로 수정하지 말고, 사용자 계정의 추가/삭제/수정 등 변경 사항이 있을때는 관련된 명령으로 작업을 하는 것이 바람직하다. /etc/passwd 파일은 누구나 읽을 수 있도록 접근 권한이 설정되어 있다.


파일의 구조

로그인ID : x : UID : GID : 설명 : 홈 디렉터리 : 로그인 셀
  1. 로그인 ID : 사용자 계정의 이름을 뜻하며 사용자 ID, 사용자 이름, 로그인 이름이라고도 한다. 32자를 넘을 수 없고 유닉스 같은 다른 운영체제와의 연동을 고려한다면 8자로 제한 하는 것이 좋다. :Enter 를 제외하고 어떤 문자든 사용 가능. 중복 불가

  2. x : 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목이지만 보안상 /etc/shadow 파일에 별도로 보관하고 있다. 호환성 때문에 존재하고 있다.

  3. UID : 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호. 일반적으로 0~999번과 65534번은 시스템 사용자를 위한 UID로 예약되어 있다. 일반 사용자는 UID 1000번 부터 할당

    • 0 (root) : root 사용자 계정
    • 1 (daemon) : 시스템 데몬 계정
    • 2 (bin) : 명령어 관리를 위한 계정
    • 7 (lp) : 프린트 서비스와 관련된 계정
    • 65534 (nobody) : 사용자의 UID로 NFS와 관련된 계정

로그인 ID가 다르더라도 UID가 같으면 리눅스 시스템은 같은 사용자로 판단한다. 즉 사용자 이름이 root가 아닌 다른 이름, 예를 들어 user1이더라도 user1의 UID가 0번이면 시스템은 root계정으로 인식한다는 것이다. 따라서 시스템 관리자는 시스템 계정의 UID가 중복되지 않도록 주의해야 한다.

  1. GID : 그룹 ID를 나타내며 사용자는 무조건 한 개 이상의 그룹에 소속된다.</b> 사용자의 기본 그룹은 사용자를 등록할 때 정해지며, 특별히 소속 그룹을 지정하지 않으면 자동적으로 로그인 ID가 그룹으로 등록된다. /etc/group 파일에 저장되어 있다.

  2. 설명 : 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분이다. GECOS라고 부르기도 한다.

  3. 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록한다. 사용자가 로그인할 때 자동적으로 로그인 되는 디렉터리가 홈 디렉터리이다.

  4. 로그인 셸 : 사용자의 로그인 셸을 지정한다. 로그인 셸은 사용자가 로그인할 때 기본적으로 동작하는 셸이다. (ex bash shell)



/etc/shadow


보안 문제 때문에 사용자 암호에 관한 정보를 별도로 관리하는 파일. root 사용자만 읽고 쓸 수 있으며 shadow 그룹은 읽기만 가능하다.


/etc/shadow

로그인 ID : 암호(패스워드) : 최종 변경일 : MIN : MAX : WARNING : INACTIVE : EXPIRE : Flag


  1. 로그인 ID : 사용자 계정의 이름으로 /etc/passwd 파일의 로그인 ID와 같다.

  2. 암호(패스워드) : 실제 비밀번호가 암호화되어 저장된다. 비밀번호는 일방향 암호여서 원래 문자로 복호화할 수 없다. 사용자가 로그인할 때 입력하는 비밀번호를 다시 암호화하여 이 암호와 피교하는데, 이 암호 항목에 아무 값도 없으면 암호가 지정되지 않은 계정임을 뜻한다. 시스템 계정에는 !! 표시가 있다.

  3. 최종 변경일 : 암호가 마지막으로 변경된 날짜를 지정한다. 유닉스 전통을 따라 1970년 1월 1일 을 기준으로 날수를 기록한다.

  4. MIN : MIN, MAX, WARNING, INACTIVE, EXPIRE 항목을 패스워드 에이징이라고 한다. 각각 패스워드와 관련된 사용 기간을 지정한다. MIN은 암호를 변경한 후 사용해야 하는 최소 기간이다. (ex. MIN이 3이면 암호 변경 후 최소한 3일은 그 암호를 그대로 사용)

  5. MAX : 암호를 사용할 수 있는 최대 기간.

  6. WARNING : 암호가 만료되기 전에 경고를 시작하는 날 수.

  7. INACTIVE : 암호가 만료된 후에도 이 항목에 지정한 날 수 동안은 로그인이 가능하도록 한다. 예를들어 INACTIVE 값이 10이면 암호가 만료된 후에도 10일 동안은 로그인이 가능하며, 사용자는 이 기간 동안 암호를 변경해야 한다. 이 기간이 지나면 계정이 잠겨버리는데, 이럴 경우 관리자에게 문의해야만 해결할 수 있다.

  8. EXPIRE : 사용자 계정이 만료되는 날로, 이 날짜가 지나면 해당 계정으로 로그인할 수 없다. 이 항목은 최종 변경일 처럼 1970년 1월 1일을 기준으로 한 날 수로 표시된다.

  9. Flag : 향 후 사용할 목적으로 비워둔 항목이다.



/etc/login.defs


사용자 계정의 설정과 관련된 기본값을 정의한 파일


항목 기본값 의미
MAIL_DIR /var/mail 기본 메일 디렉터리
PASS_MAX_DAYS 99999 패스워드 에이징
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
UID_MIN, UID_MAX 1000 ~ 60000 사용자 계정의 UID 범위
SYS_UID_MIN, SYS_UID_MAX 100 ~ 999 시스템 계정의 UID 범위
GID_MIN, GID_MAX 1000 ~ 60000 사용자 계정의 GID 범위
SYS_GID_MIN, SYS_GID_MAX 100 ~ 999 시스템 계정의 GID 범위
UMASK 022 umask 값 설정
USERGROUPS_ENAB yes 사용자 계정 삭제 시 그룹 삭제 여부
ENCRYPT_METHOD SHA512 암호화 기법



/etc/group


그룹의 정보가 저장된 파일. 사용자가 속한 그룹 중 /etc/passwd 파일의 GID 항목에 지정된 그룹이 기본 그룹이며, 사용자가 속한 2차 그룹은 /etc/group 파일에 지정한다.


/etc/group

그룹 이름 : x : GID : 그룹 멤버
  1. 그룹 이름 : 그룹의 이름이다.

  2. x : 그룹의 암호를 저장하는 곳으로, 예전 유닉스에서는 비어 있거나 * 표시를 했다. 리눅스에서는 여기에 암호화된 그룹 암호를 저장하거나 /etc/gshadow 파일에 그룹 암호를 저장한다. 그룹 암호는 newgrp 명령으로 자신이 속하지 않은 그룹으로 전환할 때 필요하다.

  3. GID : 그룹을 식별하는 번호로 1000~60000번은 사용자 정의 그룹의 GID로 사용한다.

  4. 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름이며 쉼표(,)로 사용자를 구분한다. 사용자의 2차 그룹을 나타낸다.



/etc/gshadow


그룹 암호가 저장된 파일이다. 유닉스에는 없으며 리눅스에서 별도로 만든 파일이다. 유닉스의 경우 그룹에 암호가 필요할 경우 /etc/group 파일의 그룹 암호 자리에 암호화된 그룹 암호를 설정했는데, 리눅스에서는 /etc/shadow 파일과 비슷하게 /etc/gshadow 파일을 만든 것이다.


/etc/gshadow

그룹 이름 : 그룹 암호 : 관리자 : 그룹 멤버
  1. 그룹 이름 : 그룹의 이름

  2. 그룸 암호 : 암호화된 그룹 암호이다.

  3. 관리자 : 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정으로 여러 개일 경우 쉼표로 구분한다.

  4. 그룹 멤버 : 그룹에 속한 멤버들의 사용자 계정 이름이며 쉼표로 사용자를 구분한다.