이 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,...
각 요소는:
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과 개념만 잘 이해하면 사용법을 쉽게 익힐 수 있다.
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에...