System Admin

본문 바로가기

사이트 내 전체검색


System Admin
RedHat Linux >> System Administration for Redhat Linux
[목차]
제3장 시스템 관리 기초

    6. 사용자, 그룹 관리


가. 사용자 계정(account) 발급 업무

사용자 계정을 발급해 주는 일이 관리자의 중요 업무 중 하나이다. 레드햇 4.2 버전까지는 명령행 인터페이스의 명령으로서는 adduser 정도의 명령만을 지원하였으나, 레드햇 5.0 버전부터는 확장된 기능의 계정 관리 명령을 제공하고 있다.

레드햇 리눅스의 x 윈도우 제어판을 보면 소수의 사용자 관리를 위해 편하게 사용할 수 있는 사용자/그룹 제어판이 있으므로 그것을 사용해도 좋다.

여기서는 명령행 인터페이스 방법만을 설명하겠다.

▶ 사용자 추가 명령 useradd 또는 adduser

[root@leelab /]# useradd

usage: useradd [-u uid [-o]] [-g group] [-g group,...]

[-d home] [-s shell] [-c comment] [-m [-k template]]

[-f inactive] [-e expire ] [-p passwd] [-n] [-r] name

useradd -d [-g group] [-b base] [-s shell]

[-f inactive] [-e expire ]

[root@leelab /]#

useradd라고만 입력하면 사용할 수 잇는 옵션을 보여준다. 맨 페이지를 보려면 man useradd 하면 된다.

가장 간단한 사용자 추가 방법은 useradd 명령 뒤에 계정 이름만 적는 방법이다.

[root@leelab /]# useradd jklee

그러면 사용자를 위해 부여되는 uid 중 가장 낮은 값을 찾아 그보다 높은 번호를 부여한다. 레드햇 리눅스에서는 jklee라는 계정을 만들면 자동으로 계정 이름 js와 같은 그룹을 생성하고, 그룹에도 사용할 수 있는 gid 중 가장 낮은 번호를 부여한다.

/home/jklee라는 디렉토리가 만들어 지고 /etc/skel 디렉토리의 내용이 사용자를 위한 기본 설정 파일로서 홈디렉토리에 복사된다. 쉘은 보통 /bin/bash로 정해진다.

패스워드는 정해지지 않은 상태이고, 관리자가 패스워드를 정해주지 않으면 아직 로그인할 수 없는 상태이다.

옵션이란 이런 기본 동작을 조금 다르게 해주기 위해 필요하다. 중요한 옵션에 대하여 하나한 편하게 알아보자.

-d<home_dir> 옵션은 사용자의 홈디렉토리를 직접 지정할 때 사용한다. 기본 동작은 /home 디렉토리 밑에 로그인 계정 이름과 같은 디렉토리를 만드는 것이다.

[root@leelab /]# useradd jklee -d /home/boy/jklee

/home 디렉토리 이하를 좀더 세분화해서 사용자의 홈디렉토리를 만들어 주려면 위의 예에서는 /home/boy 라는 디렉토리를 이미 만들어 주어야 한다.

-u <uid> 옵션은 useradd 명령이 빈 uid 중 알맞는 값을 선택하게 하지 않고 직접 uid 값을 지정하고 싶을 때 사용한다. uid 값은 이미 다른 사용자가 쓰고 있는 값과 같아서는 안된다.

-s <shell> 옵션은 사용자의 로그인 쉘을 직접 지정하고 싶을 때 사용한다.

-n 옵션은 레드햇 리눅스의 사용자 계정 추가 기본 모드를 끄고 싶을 때 사용한다. 레드햇 리눅스의 useradd 명령은 jklee 라는 사용자를 추가할 때 jklee라는 그룹을 만들고, jklee 사용자를 jklee 그룹의 구성원으로 설정한다. -n 옵션을 주면 계정 이름과 같은 사용자가 만들어지지 않는다. 보통 슬랙웨어(slack-ware)에서는 사용자를 추가하면 users라는 그룹의 구성원이 되도록 되어 있다. 레드햇 리눅스는 사용자들 사이에도 기본적으로 같은 그룹으로 들어가지 않게 함으로써 사용자가 원하지 않는 그룹에 속하게 되어 그룹의 사용자가 그룹 허가권을 가진 파일을 보거나 수정할 가능성을 줄인다.

-g group,[..] 옵션은 사용자가 기본 그룹 외에 그룹 구성원으로 추가될 그룹의 이름 또는 gid를 적는 옵션으로서 각 그룹 이름 또는 gid를 빈 칸없이 콤마(,)로 구분하여 적는다.

-g <initial_group> 옵션은 2개 이상의 그룹에 속해 있을 때 로그인 동시에 사용할 초기 로그인 그룹을 정할 때 필요하다.

▶ 기본값 설정 파일 /etc/login.defs

useradd 명령의 기본 동작을 결정하는 파일이 /etc/login.defs이다. 파일 내용은 샵(#) 문자로 시작하는 주석과 다음과 같은 설정 내용이다.

mail_dir /var/spool/mail

pass_max_days 99999

pass_min_days 0

pass_min_len 5

pass_warn_age 7

uid_min 500

uid_max 60000

gid_min 500

gid_max 60000

create_home yes

▶ 사용자 추가 기본값 변경하기

사용자 추가시 기본값이 어떤 것인지 알아보고 싶을 때는 -d 옵션을 주어 실행한다.

[root@leelab /]# useradd -d

group=100

home=/home

inactive=-1

expire=

shell=/bin/bash

skel=/etc/skel

다음 예는 -b 옵션을 사용하여 사용자 추가 명령시 계정 이름의 디렉토리가 만들어질 기본 디렉토리를 /home/boys로 바꾸고 있다 .useradd -d 명령을 내려 home 변수가 어떻게 바뀌었는지 확인하라.

[root@leelab /]# useradd -d -b /home/boys

[root@leelab /]# useradd -d

group=100

home=/home/boys

inactive=-1

expire=

shell=/bin/bash

skel=/etc/skel

이제 useradd yong 이라고 입력하면 /home/boys/yong 이라는 디렉토리가 만들어지고, 그것이 홈디렉토리로 사용된다.

-g <default_group> 옵션은 추가한 사용자가 소속될 기본 그룹을 정한다.

-s <shell> 옵션은 기본 로그인 쉘을 변경한다. 사용자들이 c 쉘을 선호하는 곳이라면 useradd -d -s /bin/tcsh 라고 명령한다.

▶ 복사될 사용자 기본 설정 파일을 담고 있는 /etc/skel

시스템에 새로운 사용자를 추가할 때는 그냥 홈디렉토리만 만들어 주는 것이아니라, /etc/skel 이라는 디렉토리 밑의 내용을 복사해 줌으로써 기본적인 설정 파일을 갖게 해준다. /etc/skel 디렉토리에는 도트(.)로 시작하는 파일이 많으므로 ls에 -a 옵션을 주어야 제대로 보일 것이다. 새로운 사용자들에게 필요하다고 생각하는 설정 파일을 여기다 복사해 두자.

▶ 사용자 삭제하기 명령 userdel

[root@leelab /]# userdel

usage: userdel [-r] name

[root@leelab /]#

삭제는 언제나 간단하기 마련이다. userdel 명령 다음에 삭제할 사용자 이름을 적는다. -r 옵션을 주면 홈디렉토리까지 모두 삭제해 버린다. 하지만, 홈디렉토리 이외의 다른 공간에 저장되어 있을지 모르는 그 사용자의 파일은 여러분이 알아서 찾은 후 지워야 한다.

레드햇 리눅스의 경우 사용자 추가시 사용자 이름과 같은 그룹을 만드는데, userdel 명령은 그룹을 지우지 않는다. 그룹은 groupdel 명령을 사용해서 지워야한다.

▶ 그룹 새로 추가하기 groupadd

이제는 그룹을 새롭게 만드는 일만 남았다.

[root@leelab /]# groupadd

usage: groupadd [-g gid [-o]] [-r] [-f] group

[root@leelab /]#

간단하게 새롭게 만들 그룹 이름을 명령 다음에 적는다. 이때 gid는 자동으로 선택된다.

gid값을 직접 정하고 싶을 때는 -g <gid> 옵션을 사용한다.

▶ 그룹 지우기 groupdel

[root@leelab /]# groupdel

usage: groupdel group

[root@leelab /]#

그룹 지우기는 사용자 지우기보다도 더 쉽다. 그룹 이름만 적으면 된다. 레드햇 리눅스는 사용자 추가시에 사용자 이름과 같은 그룹도 만든다는 사실을 알아두기 바란다.

나. 패스워드 시스템 전환

▶ 일반 패스워드를 쉐도우 패스워드로 전환하기 pwconv(5)

레드햇 리눅스의 기본 인증 모드는 일반 유닉스 패스워드 방식으로서 사용자 정보와 암호화된 패스워드가 /etc/passwd 파일에 같이 들어 있기 때문에 보안상 안전하다고 말할 수는 없다. 왜냐하면, /etc/passwd 파일은 일단 누구나 읽을 수 있도록 허거권이 부여되어 있기 때문에 악의를 가진 사용자가 패스워드 파일을 가져다가 사전 공격(dictionary attack) 등의 무식한 공격을 하여 사용자 중 쉬운 패스워드를 가진 사람의 패스워드를 알아낼 가능성이 있기 때문이다.

이 문제를 해결하고 많은 추가 기능을 넣을 것이 쉐도우(shadow) 패스워드 시스템이다. 쉐도우 패스워드 시스템에서는 암호화된 패스워드를 /etc/passwd에 넣지 않고, 오로지 관리자 root에게만 읽기 권한이 있는 /etc/shadow 파일에 따로 저장한다. 따라서, 일반 사용자는 암호화된 패스워드를 가져가 무식 공격을 가하고 다른 사람의 패스워드를 알아낼 수 없다.

당연히 쉐도우 패스워드는 일반 유닉스 패스워드 시스템보다 안전하다.

레드햇 리눅스는 좀 독특한 시스템(pam이라 부름)을 사용하여 간단한 명령하나로 일반 유닉스 패스워드 시스템에서, 쉐도우 패스워드 시스템으로, 쉐도우 패스워드 시스템에서 유닉스 패스워드 시스템으로 변경할 수 있다. 일반적으로 사용자 인증을 필요로 하는 모든 프로그램은 이 둘 중 하나를 컴파일할 때 결정해야 하기 때문에 시스템의 변화는 쉽지 않다. 레드햇은 이 문제는 pam(pluggable authentication module)이라는 특별한 라이브러리를 사용하여 캡슐화하였다.

현재 일반 유닉스 패스워드 시스템을 쉐도우 패스워드 시스템으로 변환해 주기 위한 절차는 매우 간단하다.

[root@leelab /]# pwconv

그러면 원래의 /etc/passwd 파일은 /etc/passwd- 파일로 남고 /etc/passwd와 /etc/shadow 파일이 생성된다.

패스워드와 쉐도우 패스워드에서 지원하는 확장 기능은 root만이 읽을 수 있는 /etc/shadow 파일에 분리 저장된다.

▶ 쉐도우 패스워드 시스템을 일반 유닉스 패스워드 시스템으로 전환하기 pwunconv

어떤 이유에서든 현재의 쉐도우 패스워드 시스템을 이반 유닉스 패스워드 시스템으로되돌려 s호고 싶다면 그 절차 또한 간단하다.

[root@leelab /]# pwunconv

다. 패스워드 관련 파일 /etc/passwd, /etc/shadow

계정 정보는 일반 유닉스 패스워드 시스템에서는 /etc/passwd 파일에 다음과 같은 형식으로 기록된다.

jklee:!!:501:501::/home/jklee:/bin/bash

총 7개의 필드로 구성되어 있는데, 각 필드는 콜론(:) 문자로 구분한다.

맨 처음 나오는 것은 사용자의 로그인 이름이다. 두 번째는 암호화된 패스워드가, 그 다음에는 uid, gid가 나온다. 여기서 uid는 특별한 이유가 없는 한 다른 사용자 id와 중복되어서는 안된다.

그 다음은 자유로운 형태의 주석(comment) 필드인데, 공백이어도 상관없다.

여섯 번째 필드는 홈디렉토리 위치이고, 마지막으로 로그인 쉘 파일명이 있다.

앞서 살펴본 사용자 계정 추가/삭제 명령들은 /etc/passwd 편집 작업을 편하게 해주기 위한 편리 명령들이다.

따라서, 이 형식을 이해하는 사람은 편집기를 사용하여 수동으로 입력/삭제 해도 된다. 패스워드 파일을 고칠 때는 여러분만이, 그리고 하나의 편집기에서만 고치고 있어야 한다.

쉐도우 패스워드 시스템에서는 암호화된 패스워드가 /etc/shadow 파일데 따로 관리된다.

jklee:!!:10976:0:99999:7:::

/etc/passwd 파일과 비슷하게 콜론(:)으로 분리되어 있는데, 첫 번째는 마찬가지로 로그인 이름이며, 두 번째에 암호화된 패스워드가 기록된다. /etc/passwd 파일의 패스워드 기록 부분에는 x와 같은 표시만 있을 것이다.

나머지 필드들은 얼마동안 로그인하지 않거나 패스워드를 변경하지 않으면 어떤 조처를 취할 것이지 부차적인 기능 설정 내용이다.

▶ 잠시 로그인하지 못하게 하기

계정을 지우지는 않고 로그인하지만 못하게 하고 싶은 경우가 있다. 이때는 패스워드 필드의 맨 앞에 별(*)표 문자를 넣어두자.

bin, adm, daemon 등 시스템의 용도로 사용하는 특수한 계정에는 모두 이 표시만 들어 있을 것이다. 시스템계정은 로그인의 용도로 사용되지 않고 내부적으로만 사용하는 계정이기 때문이다.

[목차]


개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기