사용자 계정 관련
- 리눅스는 기본적으로 여러 명이 시스템을 사용하느 다중 사용자 시스템
- 사용자를 구별하고 사용자에게 적절한 자원을 할당해주는 방법이 필요
- 리눅스에서는 사용자 계정이 사용자를 구별하는 역할을 함
- 사용자 계정은 사용자가 시스템에 접근할 수 있는 유일한 방법
- 시스템 관리자의 입장에서도 사용자의 접근 권한을 통제할 수 있는 수단
- 사용자 계졍 관련된 파일로는 다섯개가 있음
* /etc/passwd
* /etc/shadow
* /etc/login.defs
* /etc/group
* /etc/gshadow
/etc/passwd 파일 - '/etc/passwd' 파일은 사용자 계정 정보가 저장된 기본 파일 - 초기 유닉스에서는 암호도 '/etc/passwd' 에 저장했으나, 해킹의 위험이 증가하면서 암호는 '/etc/shadow' 파일에 별도로 저장 - 사용자 계정의 추가나 삭제, 수정 등 변경 사항이 있을 때는 관련된 명령으로 작업을 하는 것이 바람직 |
||||||
'/etc/passwd' 파일의 구조 - '/etc/passwd' 파일은 한 행에 사용자 한 명에 대한 정보가 기록 - 쌍점(:)으로 구분하며 일곱 개의 항목으로 구성 |
||||||
'/etc/passwd' 파일의 사용자 계정 정보 구성 |
||||||
로그인 ID : |
x : |
UID : |
GID : |
설명 : |
홈 디렉터리 : |
로그인 쉘 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1) 로그인 ID - 로그인 ID 는 사용자의 계정의 이름을 뜻함 - 사용자 ID, 사용자 이름, 로그인 이름이라고도 함 - 32자를 넘을 수 없으나 유닉스 같은 다른 운영체제와의 연동을 고려한다면 로그인 ID 를 8자로 제한 하는 것이 좋음 - 로그인 ID는 중복되는 이름을 사용해서는 안 됨 2) x - 초기 유닉스 시스템에서 사용자 암호를 저장하단 항목 - 요즘은 보안상의 이유로 사용자 암호를 '/etc/shadow' 파일에 별도로 보관 - 이 항목은 역사적인 이유로 이전 프로그램과의 호환성을 위해 그대로 유지 - x 로 표시 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 가 중복되지 않았는지 주의 4) GID - 그룹 ID를 나타냄 - 리눅스에서 사용자는 무조건 하나 이상의 그룹에 소속됨 - 사용자 기본 그룹은 사용자를 등록할 때 정해지며, 특별히 소속 그룹을 지정하지 않으면 자동적으로 로그인 ID 가 그룹으로 등록 - 시스템에 등록된 그룹에 대한 정보는 '/etc/group' 파일에 저장 5) 설명 - 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보가 기록되는 부분 - 설명은 유닉스에서 유래된 역사적인 이유로 GECOS라고 부르기도 함 6) 홈 디렉터리 - 사용자 계정에 할당된 홈 디렉터리의 절대 경로를 기록 - 사용자가 로그인할 때 자동적으로 로그인되는 디렉터리가 홈 디렉터리 7) 로그인 쉘 - 사용자의 로그인 쉘을 지정 - 로그인 쉘은 사용자가 로그인할 때 기본적으로 동작하는 쉘 - 현재 우분투에서는 배시 쉘(/bin/bash)을 기본 쉘로 사용 |
||||||
'/etc/passwd' 파일의 예 - '/etc/passwd' 파일은 누구나 읽을 수 있도록 접근 권한이 설정 ====================================================================== sjw@sjw-HP-Mini-110-3500:~$ cat /etc/passwd ... ... sys:x:3:3:sys:/dev:/usr/sbin/nologin ... avahi:x:111:117:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false ====================================================================== - '/etc/passwd' 파일에서 sys 게정을 보면 UID 가 3번, GID 가 3번으로 설정 - '/etc/group' 파일을 보면 GID 3은 sys그룹 - 홈 디렉터리는 '/dev/로 되어 있음 - 쉘이 '/bin/sh'로 설정 - 우분투는 페도라와 달리 일부 시스템 계정의 쉘을 '/bin/sh' 로 지정 |
/etc/shadow 파일 - '/etc/shadow' 파일은 보안 때문에 사용자 암호에 관한 정보를 별로도 관리하는 파일 - '/etc/passwd' 파일은 누구나 읽을 수 있지만, '/etc/shadow' 파일의 경우 root 사용자만 읽고 쓸 수 있으며, shadow 그룹은 읽기만 가능 ====================================================================== sjw@sjw-HP-Mini-110-3500:~$ ls -l /etc/passwd /etc/shadow ====================================================================== |
||||||||
/etc/shadow 파일의 구조 - '/etc/shadow' 파일에는 사용자 암호 외에 사용자 계정과 관련된 부가적인 정보도 저장 - '/etc/shadow-' sms '/etc/shadow'의 백업파일 - 아홉개의 항목으로 구성, 쌍점(:)으로 구분
|
||||||||
/etc/shadow 파일의 정보 구성 |
||||||||
로그인 ID : |
암호 : |
최종 변경일 : |
MIN : |
MAX : |
WARNING : |
INACTIVE : |
EXPIRE : |
Flag |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
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 - 향후 사용할 목적으로 비워둔 항목 |
||||||||
/etc/shadow 파일의 예 - 이 파일은 root 권한으로 확인 가능 ==================================================================== sjw@sjw-HP-Mini-110-3500:~$ sudo cat /etc/shadow ... ... ... colord:*:16273:0:99999:7::: ==================================================================== - sjw 계정만 암호가 설정 - root 계정은 * 로 암호가 설정 - 암호가 ! 로 시작하는 것은 잠겨 있음을 뜻함 - sjw 계정의 패스워드 에이징 정보를 확인 해 보면, MIN이 0, MAX가 99999, WARNING이 7로 설정 - 이는 '/etc/login.defs' 파일에 설정되어 있는 기본 값을 적용한 것 |
/etc/login.defs 파일 - /etc/login.defs 파일은 사용자 계정의 설정과 관련된 기본 값을 정의한 파일 |
==================================================================== sjw@sjw-HP-Mini-110-3500:~$ cat /etc/login.defs ==================================================================== |
/etc/login.defs 파일의 내용 |
||
항목 |
기본 값 |
의미 |
MAIL_DIR |
/var/spool/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/group 파일은 그룹에 관한 정보가 저장된 파일 - 리눅스에서 사용자는 기본적으로 하나 이상의 그룹에 속해 있음 - 사용자가 속한 그룹 중 '/etc/passwd' 파일의 GID 항목에 지정된 그룹이 기본 그룹 - 사용자가 속한 2차 그룹은 '/etc/group' 파일에 지정 |
|||
/etc/group 파일의 구조 - 네 항목으로 구성 |
|||
/etc/group vkd리의 정보 구성 |
|||
그룹 이름 : |
x : |
GID : |
그룹 멤버 |
1 |
2 |
3 |
4 |
1) 그룹이름 - 그룹의 이름 2) x - 그룹의 암호를 저장하는 곳 - 예전 유닉스에서는 비어 있거나 * 표시가 되어 있었음 - 리눅스에서는 여기에 암호화된 그룹 암호를 저장하거나 '/etc/gshadow' 파일에 그룹 암호를 저장 - 그룹 암호는 'newgrp' 명령을 사용하여 자신이 속하지 않는 그룹으로 전환할 때 필요 3) GID - 그룹을 식별하는 번호 - 1000~60000 번은 사용자 정의 그룹의 GID 로 사용 4) 그룹 멤버 - 그룹에 속한 멤버들의 사용자 계정 이름 - 쉽표(,)로 사용자를 구분 |
|||
/etc/group 파일의 예 - 리눅스의 경우, 사용자 계정을 생성할 때 특별히 지정하지 않으면 사용자 이름과 같은 이름으로 그룹을 생성 ==================================================================== sjw@sjw-HP-Mini-110-3500:~$ cat /etc/group ==================================================================== |
/etc/gshadow 파일 - /etc/gshadow 파일은 그룹 암호가 저장된 파일 - 원래 유닉스에서는 없던 파일로 리눅스에서 별로도 만든 파일 - 유닉스에서는 그룹에 암호가 필요할 경우 /etc/group 파일의 그룹 암호 자리에 암호화된 그룹 암호를 설정 - 리군스셍서는 /etc/shadow 파일과 비슷하게 /etc/gshadow 파일을 만든 것 |
|||
/etc/gshadow 파일의 구조 - 네 항목으로 구성 |
|||
/etc/gshadow 파일의 정보 구성 |
|||
그룹 이름 : |
그룹 압호 : |
관리자 : |
그룹 멤버 |
1 |
2 |
3 |
4 |
1) 그룹이름 - 그룹의 이름 2) 그룹 안호 - 암호화된 그룹의 암호 3) 관리자 - 그룹의 암호나 멤버를 바꿀 수 있는 사용자 계정으로 여러 개일 경우 쉽표(,)로 구분 4) 그룹 멤버 - 그룹에 속한 멤버들의 사용자 계정 이름이며, 쉼표(,)로 사용자를 구분 |
|||
/etc/gshadow 파일의 예 ==================================================================== sjw@sjw-HP-Mini-110-3500:~$ sudo cat /etc/gshadow ==================================================================== |
'OS > Linux - Ubuntu' 카테고리의 다른 글
[Linux - 리눅스 / Ubuntu - 우분투] 그룹 관리 명령 - groupadd, groupmod, groupdel (0) | 2015.05.01 |
---|---|
[Linux - 리눅스 / Ubuntu - 우분투] 사용자 계정 관리 명령 - useradd, usermod, userdel (0) | 2015.04.30 |
[Linux - 리눅스 / Ubuntu - 우분투] 소프트웨어 관리하기[요약] - 우분투 패키지, APT, dpkg, aptitude, 아카이브, 압축 (0) | 2015.04.25 |
[Linux - 리눅스 / Ubuntu - 우분투] 데비안 패키지 형식 (0) | 2015.04.25 |
[Linux - 리눅스 / Ubuntu - 우분투] 소프트웨어 컴파일러 - C 컴파일러, gcc (0) | 2015.04.25 |