다음 이전 차례

7. Shadow Suite 사용하기

이 section은 system에 Shadow Suite을 깔고 나서 알고 싶은 몇몇 주제를 다룬다. 더 자세한 것은 각 명령의 manual page를 참조하기 바란다.

7.1 사용자계정 추가, 수정, 삭제

Shadow Suite는 사용자 계정을 관리하는, 다음과 같은 명령들을 추가했다. 이미 adduser program은 그전에 설치되어 있었을 것이다.

useradd

useradd 명령은 사용자를 추가한다. 또한, 기본 설정을 바꾸기 위해 이 명령을 실행할 수 있다.

처음 해야 할 일은 기본 설정을 확인하고, system에 맞게 고치는 것이다:

useradd -D

GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel

기본 설정치는 아마 맘에 들지 않을 것이다. 따라서 지금 사용자를 추가하려면, 각각 사용자에게 공통되는 모든 정보를 정해야 한다. 어쨌든 우리는 기본 설정치를 바꾸고 덧붙일거다.

내 system에서는:

이렇게 바꾸기 위해서:
useradd -D -g100 -e60 -f0 -s/bin/bash

이제 useradd -D를 치면:


GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel

이러한 기본치들은 /etc/default/useradd에 저장된다.

이제 useradd를 써서 system에 사용자를 추가할 수 있다. 예를 들어, fred라는 사용자를 기본치만 적용해서 추가한다면:

useradd -m -c "Fred Flintstone" fred
/etc/passwd file에 다음과 같은 명부(?)가 생성된다:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
그리고, /etc/shadow file에는:
fred:!:0:0:60:0:0:0:0
fred의 home directory가 만들어지고, -m switch가 쓰였으므로 /etc/skel 전체가 그 곳으로 복사된다.

또한, 특별히 UID를 지정하지 않았으로, 이미 사용된 UID 다음 것이 쓰였다.

fred의 계정이 생겼으나, 우리가 계정을 풀어주기 전까지는 fred는 login할 수 없다. 계정을 풀어주기 위해서는 password를 바꾸어 주어야 한다.

passwd fred

Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******

이제 /etc/shadow는 다음과 같을 것이다:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
그리고, fred는 login해서 system을 사용할 수 있다. Shadow Suite에 있는 다른 program들과 같이 useradd가 좋은 점은 /etc/passwd/etc/shadow file의 내용을 바꿀 때 방해받지 않는다는 점이다. 따라서 동시에 당신은 사용자를 추가하고, 다른 이용자는 자신의 password를 바꾼다해도, 둘 다 제대로 이행된다. (역자주: mutex lock, race condition같은 걸 생각하면 될 것같습니다.)

/etc/passwd, /etc/shadow를 직접 편집하는 것보다 이런 명령을 쓰는 것이 더 좋다. 만일 당신이 /etc/shadow file을 편집하고 있고, 그 와중에 한 사용자가 password를 바꾸고, 그리고나서 당신이 편집을 끝내고 저장하면, 그 사용자가 한 일을 잃어버리게 된다.

여기에 useraddpasswd를 사용한 간단한 대화형 script가 있다:


#!/bin/bash
#
# /sbin/newuser - Shadow Suite의 useradd와 passwd 명령을 이용해서 
#                 사용자를 추가하는 script
#
# Linux Shadow Password Howto의 예제로써 Mike Jackson <mhjack@tscnet.com>에
# 의해 작성됐음. 사용과 수정을 특별히 허가함.
#
# 이 것은 Slackware의 Adduser program처럼 기본치를 보여주고, 수정할 수 있도록
# 바꿀 수 있었다. 또한 멍청한 입력을 거부하도록 바뀔 수 있었다. 
# (즉, 더 나은 오류 검사등...)
#
##
#  useradd 명령의 기본 설정치들
##
GROUP=100        # 기본 Group
HOME=/home       # Home directory 위치 (/home/username)
SKEL=/etc/skel   # Skeleton(공통적인 내용을 지닌 file들?) Directory
INACTIVE=0       # password가 기한이 지난 뒤 사용자 계정이 무효가 
                 # 되기까지의 기간 (0=그렇게 하고 싶지 않음)
EXPIRE=60        # password 유효기간
SHELL=/bin/bash  # 기본 Shell (full path)
##
#  passwd 명령의 기본 설정치들
##
PASSMIN=0        # password를 바꾼다음 또 바꾸기 위한 유예기간
PASSWARN=14      # password의 기한이 지나기전에 경고하는 기간
##
#  script를 실행하는 사용자가 root인지 확인
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
        echo "You must be root to add news users!"
        exit 1
fi
##
#  사용자 ID(username)와 실제 이름(Full name) 묻기
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# $FULLNAME 주변에 ""가 필요하다는 것에 주의할 것. 이유는 이 field는 
# 반드시 공란이상의 무엇인가를 포함하며, "를 없이 useradd command를
# 실행시킨다면, 다음에 이어지는 parameter들도 그 field에 일부분으로
# 인식된다.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
        -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
#  password에 대한 기본 설정치를 정한다.
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
#  passwd를 실행시켜 password를 입력받는다.
##
/bin/passwd $USERNAME
##
#  결과를 보여줌.
##
echo ""
echo "Entry from /etc/passwd:"
echo -n "   "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n "   "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n "   "
passwd -S $USERNAME
echo ""

새로운 사용자를 추가하는 데 script를 쓰는 것은 /etc/passwd/etc/shadow를 직접 편집하는 거나 Slackware의 adduser를 쓰는 것보다 훨 낫다. 당신의 특별한 system에 알맞로록 자유롭게 고치기 바란다.

useradd에 대한 자세한 정보는 manual page를 보시길...

usermod

usermod는 사용자에 대한 정보를 고친다. option은 useradd와 비슷하다.

앞의 fred의 shell을 바꾸고 싶으면, 다음과 같이 입력한다:

usermod -s /bin/tcsh fred
이제 fred/etc/passwd file에 있는 내용은 다음처럼 바뀌어 있다:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh
이번에는 fred의 계정이 97년 9월 15일까지만 쓰도록 하자:
usermod -e 09/15/97 fred
그러면 fred/etc/shadow file에 있는 내용은:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0

usermod에 대한 자세한 정보는 manual page를...

userdel

userdel는 정확히 당신이 원한 것 - 사용자 계정 죽이기 - 를 해치운다.

userdel -r username
라고 치면 된다. -r은 사용자의 home directory에 있는 모든 file들과 함께 directory 자체를 지운다. 다른 곳에 있는 file들은 일일이 찾아서 지워야 한다.

삭제보다 계정을 쓰지 못하게 할 거라면, passwd 명령을 쓰기 바란다.

7.2 passwd 명령과 passwd 수명 정하기.

passwd는 말 그대로 password를 바꾸는 데 사용된다. 더우기, root는 다음과 같은 일을 할 수 있다:

다시 fred의 예로 돌아가면

passwd -S fred
fred P 03/04/96 0 60 0 0
이것은 fred의 password가 유효하고, 96년 3월 4일에 마지막으로 바꾸었고, 언제든지 바꿀 수 있다. 그리고, 60일동안 password를 바꾸지 않으면 그후에는 못쓰고, 그 이전에 fred는 아무런 경고를 받지 않을 것이며, password를 못쓰더라도 계정은 유효하다.

즉, fred의 password가 무효가 된 뒤 들어오면, 새로운 password를 재촉받을 것이다.

fred에게 password가 취소되기 14일전에 경고를 하고, 취소된 뒤 14일후 그의 계정을 동결시키려면:

passwd -w14 -i14 fred
그러면 다음처럼 fred에 대한 내용이 바뀐다:
fred P 03/04/96 0 60 14 14
passwd에 대한 자세한 정보는 manual page에...

7.3 The login.defs file.

/etc/login file은 login program, 전체적으로 Shadow Suite에 대한 설정을 담고 있다.

/etc/login은 prompt가 어떤 모습을 하고 있는 가부터 사용자가 password를 바꾸면 기본 유효기간은 어떻게 될 것인가에 대한 설정까지 담고 있다.

/etc/login.defs file은 내부에 있는 수많은 comment들로 잘 문서화되어 있다. 있는 것을 간단히 설명하면:

위에서 보듯 이 놈은 상당히 중요한 file이다. 따라서, 지금 있는지 확인하고, system과 당신 취향에 맞는 지 점검할 것.

7.4 Group passwords.

/etc/groups file은 사용자가 특정 group의 회원이 될 수 있도록 허용하는 password를 담고 있다. 이 기능은 /usr/src/shadow-YYMMDD/config.hSHADOWGRP 상수를 정의할 경우 작동된다.

만일 이 기능을 쓴다면, /etc/gshadow file을 만들어, group password와 group 관리자에 대한 정보를 담을 수 있도록 하라.

/etc/shadow를 만들 때, 당신은 pwconv를 썼지만, /etc/gshadow를 만드는 데에는 그런 program이 없다. 하지만 걱정말라. 알아서 하니까.

처음 /etc/gshadow를 만들기 위해서 다음처럼 해라:

touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow

당신이 새로운 group을 만든다면, 자동적으로 /etc/group/etc/gshadow file에 그들이 덧붙여진다. group에 사용자를 추가하거나 삭제, 또는 group password를 바꾸면, /etc/gshadow file은 따라서 바뀔 것이다.

groups, groupadd, groupmod, groupdel program이 group을 고치는 도구로써 Shadow Suite에 포함되어 공급된다.

/etc/group file의 형식은 다음과 같다:

groupname:!:GID:member,member,...
각 요소는:
groupname

group 이름

!

이 field는 password란이지만 /etc/gshadow file로 옮겨졌다.

GID

group ID number

member

group member의 list

이다.

/etc/gshadow file 의 형식은 다음과 같다:

groupname:password:admin,admin,...:member,member,...
각 요소는:
groupname

group 이름

password

encode된 group password.

admin

group 관리자 list

member

group member list

이다.

gpasswd 명령은 group의 사용자나 관리자를 추가, 또는 삭제할 때 쓴다. root또는 관리자만이 group member를 추가, 삭제할 수 있다.

group password는 root나 group 관리자에 의해 passwd 명령으로 바꿀 수 있다.

gpasswd에 대한 manual page가 현재 제공되어 있지 않지만, 아무런 parameter없이 gpasswd를 치면 option에 대한 list가 나오므로, file format과 개념만 잘 이해하면 사용법을 쉽게 익힐 수 있다.

7.5 일관성 점검 program들

pwck

pwck program은 /etc/passwd/etc/shadow file간에 틀린 점이 없는 지 점검한다. 이 것은 각각 사용자에 대해 다음과 같은 사항을 점검한다:

또한, password가 없는 계정에 대해 경고를 준다.

Shadow Suite을 깐 뒤, pwck를 실행시키는 것은 좋은 생각이다. 주나 월단위등 주기적으로 실행시키기를 권한다. -r option을 쓴다면, cron으로 하여금 정기적으로 실행하고 결과를 보고하도록 할 수 있다.

grpck

grpck program은 /etc/group/etc/gshadow file간에 틀린 점이 없는 지 점검한다. 이것은 다음과 같은 사항을 점검한다:

자동 보고서를 위해 -r option이 있다.

7.6 Dial-up passwords.

Dial-up password는 전화접속을 허용하는 system에게는 또 하나의 방어선이다. 당신은 직접이든 network를 통해서건 많은 사람들이 system에 접속하게 할 수 있지만, 전화접속을 할 수 있는 사람을 제한하고 싶다면, dial-up password는 좋은 해결책이다. dial-up password를 쓰고 싶다면, /etc/login.defsDIALUPS_CHECK_ENAByes로 바꾸면 된다.

두 file이 전화접속에 대한 정보를 담고 있다. /etc/dialups는 ttys에 대한 내용이다 ("/dev/"는 제거된 채로 line당 하나씩). tty가 list에 올라와있다면 dial-up 검사가 수행된다(?).

두번째는 /etc/d_passwd이다. 이 file에는 password와 shell의 완전한 pathname이 들어 있다.

tty를 통해서 log하는 사용자가 /etc/dialups에, 그의 shell이 /etc/d_passwd에 있다면, 그는 제대로 password만 입력하면 된다.

dial-up password의 또 다른 이용법는 한 line에 어떤 접속 유형(대개 PPP나 UUCP 접속)을 허용할 것인가를 정하는 것이다. 사용자가 다른 유형의 접속(특히, 일련의 shell로써)을 시도하고자 한다면, line을 사용할 수 있는 password를 알고 있어야 한다.

dial-up 기능을 사용하기 전에, file들을 만들어야 한다.

dpasswd 명령은 password와 /etc/d_passwd에 있는 shell을 연결해준다. 자세한 정보는 manual page에...


다음 이전 차례