이 section은 system에 Shadow Suite을 깔고 나서 알고 싶은 몇몇 주제를 다룬다. 더 자세한 것은 각 명령의 manual page를 참조하기 바란다.
Shadow Suite는 사용자 계정을 관리하는, 다음과 같은 명령들을
추가했다. 이미 adduser program은 그전에 설치되어 있었을 것이다.
useradd 명령은 사용자를 추가한다. 또한, 기본 설정을 바꾸기 위해
이 명령을 실행할 수 있다.
처음 해야 할 일은 기본 설정을 확인하고, system에 맞게 고치는 것이다:
useradd -D
GROUP=1 HOME=/home INACTIVE=0 EXPIRE=0 SHELL= SKEL=/etc/skel
기본 설정치는 아마 맘에 들지 않을 것이다. 따라서 지금 사용자를 추가하려면, 각각 사용자에게 공통되는 모든 정보를 정해야 한다. 어쨌든 우리는 기본 설정치를 바꾸고 덧붙일거다.
내 system에서는:
/bin/bash이다.
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를 바꾸고, 그리고나서 당신이 편집을
끝내고 저장하면, 그 사용자가 한 일을 잃어버리게 된다.
여기에 useradd와 passwd를 사용한 간단한 대화형 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는 사용자에 대한 정보를 고친다. 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 -r username
라고 치면 된다. -r은 사용자의 home directory에 있는 모든 file들과
함께 directory 자체를 지운다. 다른 곳에 있는 file들은 일일이 찾아서 지워야
한다.
삭제보다 계정을 쓰지 못하게 할 거라면, passwd 명령을 쓰기 바란다.
passwd는 말 그대로 password를 바꾸는 데 사용된다.
더우기, root는 다음과 같은 일을 할 수 있다:
-l와 -u)-x)-n)-w)-i)-S)다시 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에...
/etc/login file은 login program, 전체적으로
Shadow Suite에 대한 설정을 담고 있다.
/etc/login은 prompt가 어떤 모습을 하고 있는 가부터 사용자가 password를
바꾸면 기본 유효기간은 어떻게 될 것인가에 대한 설정까지 담고 있다.
/etc/login.defs file은 내부에 있는 수많은 comment들로 잘 문서화되어
있다. 있는 것을 간단히 설명하면:
위에서 보듯 이 놈은 상당히 중요한 file이다. 따라서, 지금 있는지 확인하고, system과 당신 취향에 맞는 지 점검할 것.
/etc/groups file은 사용자가 특정 group의 회원이 될 수 있도록 허용하는
password를 담고 있다. 이 기능은 /usr/src/shadow-YYMMDD/config.h의
SHADOWGRP 상수를 정의할 경우 작동된다.
만일 이 기능을 쓴다면, /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,...
각 요소는:
groupnamegroup 이름
!이 field는 password란이지만 /etc/gshadow file로 옮겨졌다.
GIDgroup ID number
membergroup member의 list
/etc/gshadow file 의 형식은 다음과 같다:
groupname:password:admin,admin,...:member,member,...
각 요소는:
groupnamegroup 이름
passwordencode된 group password.
admingroup 관리자 list
membergroup member list
gpasswd 명령은 group의 사용자나 관리자를 추가, 또는 삭제할 때 쓴다.
root또는 관리자만이 group member를 추가, 삭제할 수 있다.
group password는 root나 group 관리자에 의해 passwd 명령으로
바꿀 수 있다.
gpasswd에 대한 manual page가 현재 제공되어 있지 않지만, 아무런
parameter없이 gpasswd를 치면 option에 대한 list가 나오므로,
file format과 개념만 잘 이해하면 사용법을 쉽게 익힐 수 있다.
pwck program은 /etc/passwd와 /etc/shadow file간에
틀린 점이 없는 지 점검한다. 이 것은 각각 사용자에 대해 다음과 같은 사항을
점검한다:
또한, password가 없는 계정에 대해 경고를 준다.
Shadow Suite을 깐 뒤, pwck를 실행시키는 것은 좋은 생각이다.
주나 월단위등 주기적으로 실행시키기를 권한다. -r option을 쓴다면,
cron으로 하여금 정기적으로 실행하고 결과를 보고하도록 할 수 있다.
grpck program은 /etc/group와 /etc/gshadow file간에
틀린 점이 없는 지 점검한다. 이것은 다음과 같은 사항을 점검한다:
자동 보고서를 위해 -r option이 있다.
Dial-up password는 전화접속을 허용하는 system에게는 또 하나의 방어선이다.
당신은 직접이든 network를 통해서건 많은 사람들이 system에 접속하게 할 수
있지만, 전화접속을 할 수 있는 사람을 제한하고 싶다면, dial-up password는
좋은 해결책이다. dial-up password를 쓰고 싶다면, /etc/login.defs의
DIALUPS_CHECK_ENAB를 yes로 바꾸면 된다.
두 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에...