티스토리 뷰

Linux

사용자 계정 관련 파일

Andrew Shin 2015. 5. 8. 21:09

리눅스는 기본적으로 여러 명이 시스템을 사용하는 다중 사용자 시스템이므로 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요하다. 리눅스에서는 사용자 계정이 사용자를 구별하는 역할을 한다. 사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법이고, 시스템 관리자의 입장에서도 사용자의 접근 권한을 통제할 수 있는 중요한 수단이다. 따라서 사용자 계정 관리는 시스템 관리자의 주요 업무중 하나이다.

사용자 계정관리에는 사용자가 적절한 권한을 가지고 시스템에 접근할 수 있도록 사용자 계정을 새로 만들거나 사용자 정보를 수정하고, 계정 사용 기한 만료 등의 이유로 사용자 계정을 삭제하는 업무 등이 있다. 리눅스에서 사용자 계정과 관련된 파일은 /etc/passwd, /etc/shadow, /etc/login.defs, /etc/group, /etc/gshadow로 모두 다섯개 이다.

1. /etc/passwd 파일

/etc/passwd 파일은 사용자 계정 정보가 저장된 기본 파일이다. 초기 유닉스에서는 암호도 /etc/passwd 파일에 저장했으나 해킹의 위험이 증가하면서 암호는 /etc/shadow 파일에 별도로 저장한다. root 계정으로 파일의 수정이 가능하지만, /etc/passwd 파일은 사용자 계정이 저장되는 중요한 파일이므로 함부로 수정하지 말고, 사용자 계정의 추가나 삭제, 수정등 변경 사항이 있을때는 관련된 명령으로 작업을 하는것이 바람직하다.

/etc/passwd 파일의 구조

/etc/passwd 파일은 한 행에 사용자 한 명에 대한 정보가 기록되며, 콜론(:)으로 구분되는 일곱 개의 항목으로 구성되어 있다. /etc/passwd 파일을 구성하는 기본 항목은 다음과 같다.

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

1) 로그인 ID : 로그인 ID는 사용자 계정의 이름을 뜻하며 사용자 ID, 사용자 이름, 로그인 이름이라고도 한다. 32자를 넘을 수 없으나 유닉스 같은 다른 운영체제와의 연동을 고려한다면 로그인 ID를 8자로 제한하는 것이 좋다. 로그인 ID에는 쌍점(:)과 엔터를 제외하고 어떤 문자든 사용할 수 있다. 로그인 ID는 중복되는 이름을 사용해서는 안된다.

2) x : 초기 유닉스 시스템에서 사용자 암호를 저장하던 항목이다. 요즘은 보안상의 이유로 사용자 암호를 /etc/shadow 파일에 별도로 보관하고 있다. 이 항목은 역사적인 이유로 이전 프로그램과의 호환성을 위해 그대로 유지하고 있으며 x로 표시한다.

3) UID(숫자) : 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호이다. 일반적으로 0~999번과 65534번은 시스템 사용자를 위한 UID로 예약되어 있다. 시스템 사용자 계정은 시스템이 관리 업무를 위해 내부적으로 사용하려고 예약되어 있는 계정이므로 임의로 수정하지 않는다. 일반 사용자들은 UID 1000번부터 할당된다.

기본적으로 등록되는 시스템 사용자 ID를 살펴보면 다음과 같다. 이는 리눅스 배포판에 따라 다를 수 있다.

0(root) : root 사용자 계정

1(daemon) : 시스템 데몬 계정

2(bin) : 명령어 관리를 위한 계정

7(lp) : 프린트 서비스와 관련된 계정

65534(nobody) : 사용자의 uid로 nfs와 관련된 계정

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

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

5) 설명 : 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분이다. 설명은 유닉스에서 유래된 역사적인 이유로 GECOS라고 부르기도 한다.

6) 홈 디렉터리 : 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록한다. 사용자가 로그인할 때 자동적으로 로그인되는 디렉터리가 홈 디렉터리이다. 홈 디렉터리 아래에 다른 디렉터리나 파일을 생성할 수 있다.

7) 로그인 셸 : 사용자의 로그인 셸을 지정한다. 로그인 셸은 사용자가 로그인 할 때 기본적으로 동작하는 셸이다. 현재 우분투에서는 배시 셸(/bin/bash)을 기본 셸로 사용하고 있다.


2. /etc/shadow 파일

/etc/shadow 파일은 앞서 설명한 것과 같이 보안 때문에 사용자 암호에 관한 정보를 별도로 관리하는 파일이다. 아래 명령의 결과에서 확인할 수 있듯이 /etc/passwd 파일은 누구나 읽을 수 있지만, /etc/shadow 파일의 경우 root 사용자만 읽고 슬 수 있으며 shadow 그룹은 읽기만 가능하다.

/etc/shadow 파일의 구조

/etc/shadow 파일에는 사용자 암호 외에 사용자 계쩡과 관련된 부가적인 정보도 저장된다.

/etc/shadow-는 /etc/shadow의 백업 파일이다. /etc/shadow 파일은 다음과 같이 아홉개의 항목으로 구성되어 있으며, 각 항목은 역시 콜론(:)으로 구분된다.

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

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

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

3) 최종 변경일 : 암호가 마지막으로 변경된 날짜를 지정한다. 이 날짜는 일반적인 연월일 형태로 기록되는 것이 아니라, 유닉스의 전통을 따라 1970년 1월 1일을 기준으로 날수를 기록한다. 예를 들어 2013년 6월 21일 암호가 변경되었으면 15867로 기록된다. 1970년 1월 1일부터 2013년 6월 21일까지 15867일 이라는 뜻이다.

4) MIN : MIN을 비롯해 MAX, WARNING, INACTIVE, EXPIRE 항목을 패스워드 에이징이라고 한다. 각각 패스워드와 관련된 사용 기간을 지정한다. MIN은 암호가 변경한 후 사용해야 하는 최소 기간이다. 예를들어 MIN이 3이면 암호 변경 후 최소한 3일은 그 암호를 그대로 사용해야 한다. 보안의 관점에서 이 값은 0으로 설정하는 것이 좋다.

5) MAX : 암호를 사용할 수 있는 최대 기간이다. 예를들어 MAX가 30이면 해당 암호를 30일 동안만 사용할 수 있다는 것으로, 30일이 지나기 전에 암호를 변경해야 한다. 이 기간이 지나면 새로운 암호를 입력하게 한다.

6) WARNING : 암호가 만료되기 전에 경고를 시작하는 날수이다. 예를 들어 WARNING이 7이면 암호가 만료되기 7일 전부터 로그인 할 때 경고 메세지가 나타난다.

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

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

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

'Linux' 카테고리의 다른 글

프로세스(Process)와 쓰레드(Thread)  (0) 2015.05.09
사용자 계정 관리 명령  (0) 2015.05.08
소프트웨어 컴파일  (0) 2015.05.08
리눅스의 파일 아카이브와 압축  (0) 2015.05.08
우분투 패키지 설치  (0) 2015.05.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함