리눅스프로그래밍

우분투 리눅스 - 사용자 계정 관련 파일

헬로월드! 2020. 6. 21. 02:08

리눅스는 여러 명이 사용하는 시스템이므로 각 사용자를 등록하고 관리하는 방법을 알아야한다. 

사용자 계정에는 암호가 설정되어야 한다. 이 암호의 사용 가능 기간을 설정하는 패스워드 에이징 방법도 알아야한다.

사용자의 정보 확인, 소속 그룹 확인하는 명령도 살펴본다. 시스템 관리자는 필요시 파일 및 디렉터리의 소유자와 소유 그룹을 다른 계정으로 변경할 수 있다. 

 

사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법! 시스템 관리자 입장에서도 사용자의 접근 권한을 통제할 수 있는 중요한 수단이다. 

 

리눅스에서 사용자 계정과 관련된 파일

  • /etc/passwd 
  • /etc/shadow
  • /etc/login.defs
  • /etc/group
  • /etc/gshadow

1. /etc/passwd

사용자 계정 정보가 저장된 기본 파일 , 초기 유닉스에서는 비밀번호도 여기에 저장했지만 보안성 때문에 /etc/shadow에 비밀번호를 별도로 저장하게 되었다. root 계정으로 수정이 가능하지만 /etc/passwd 파일은 사용자 계정이 들어있는 중요 파일이므로 함부로 수정하지 않고 , 변경 사항이 있을 때는 명령으로 작업하는 것이 바람직하다. 

/etc/passwd 파일의 구조 

한 행에 사용자 한 명에 대한 정보 기록, : 으로 구분되는 일곱 개의 항목!

 

로그인ID : x : UID : GID : 설명 : 홈 디렉터리 : 로그인 셸

 

- 로그인 ID: 사용자 계정의 이름 = 사용자 ID = 사용자 이름 = 로그인 이름 (32 글자 못넘음) , : 와 enter 를 제외한 모든 문자 사용 가능 , 중복은 안됨!

- x: 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목 , 요즘엔 보안상 이유로 /etc/shadow 파일에 별도 보관 

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

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

로그인 ID 가 다르더라도 UID 가 같으면 리눅스 시스템은 같은 사용자로 판단한다. 

-GID : 그룹 ID , 리눅스에서 사용자는 무조건 한 개 이상의 그룹에 소속된다. 사용자의 기본 그룹은 사용자를 등록할 때 정해지며, 특별히 소속 그룹을 지정하지 않으면 자동적으로 로그인 ID 가 그룹으로 등록된다. 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장되어 있다.

-설명: 사용자의 실명, 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분 

- 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록한다. 

- 로그인 셸: 사용자의 로그인 셸 지정, 로그인 셸은 사용자가 로그인할 때 기본적으로 동작하는 셸이다. 

우분투에서는 배시셸 (/bin/bash) 을 기본 셸로 사용하고 있다. 

 

2. /etc/shadow

/etc/shadow 파일은 보안 문제 때문에 사용자 암호에 관한 정보를 별도로 관리하는 파일이다. /etc/passwd 는 누구나 읽을 수 있는 반면 /etc/shadow 파일의 경우 root 사용자만 읽고 쓸 수 있으며 shadow 그룹은 읽기만 가능하다.

 

/etc/shadow 파일의 구조

/etc/shadow- 는 /etc/shadow 의 백업 파일이다.

sudo cat /etc/shadow ( root 계정으로 변경한 뒤 확인할 수 있다. )

 

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

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

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

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

- MIN: 패스워드 에이징 , MAX ,WARNING , INACTIVE, EXPIRE 

각각 패스워드와 관련된 사용 기간을 지정한다. 

MIN 은 암호를 변경한 후 사용해야 하는 최소 기간 

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

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

-INACTIVE: 암호가 만료된 후에도 이 항목에 지정한 날수 동안은 로그인이 가능하도록 한다.

- EXPIRE : 사용자 계정이 만료되는 날

- FLAG : 항후 사용할 목적으로 비워둔 항목 

 

암호가 ! 로 시작하는 것은 계정이 잠겨있음을 뜻한다. 

 

3. /etc/login.defs

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

4. /etc/group

 /etc/group 파일은 그룹의 정보가 저장된 파일이다. 리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속해있다. 

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

 

/etc/group 파일의 구조

그룹 이름 : x : GID : 그룹 멤버 

5. /etc/gshadow

/etc/gshadow 파일은 그룹 암호가 저장된 파일이다. 유닉스에는 없으며, 리눅스에서 별도로 만든 파일이다. 

 

/etc/gshadow 파일의 구조

 

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