package를 받을 뒤 처음 할 일은 풀어 제치는 것이다. package는 gzip으로 앞축된
tar (tape archive) 형식으로 되어 있으므로, /usr/src
로 옮긴 뒤:
tar -xzvf shadow-current.tar.gz
그러면, /usr/src/shadown-YYMMDD
라는 directory에 풀릴 것이다.
첫째, Makefile
과 config.h
를 복사한다:
cd /usr/src/shadow-YYMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h
그리고 config.h
를 보라. 이 file은 몇몇 설정 사항에 대한 정의를 담고
있다. 만일 권고한 package를 가지고 있다면, 일단 group shadow 지원을
사용하지 않도록 하기를 권한다.
기본으로, shadow된 group password들을 사용할 수 있다. 이를 바꾸기 위해서
config.h
의 #define SHADOWGRP
를 #undef SHADOWGRP
로
바꾼다. 나는 그들을 사용하지 않고 시작할 것을 원한다. 나중에 절실히 group
password와 group 관리자를 원한다면, 다시 사용가능하도록 한 뒤 재compile하면
된다. 만일 사용가능으로 남겨둔다면, 반드시 /etc/gshadow
file을 만들어야 한다.
긴 password 사용을 하는 것은 앞에서 얘기한대로 권하지 않는다.
#undef AUTOSHADOW
라고 한 것을 바꾸지 말라.
AUTOSHADOW
선택사항은 shadow를 무시하는 program들이 계속 작동하도록
하려는 목적으로 준비된 것이었다. 이 이야기는 이론상으로는 괜찮지만, 제대로
기능하지 않는다. 이 option을 허용하고 root로써 program을 실행시키면, 그 놈은
getpwnam()
를 root권한으로 부르고, 후에 /etc/passwd
file에
수정된 내용을 다시 쓰게 된다 (더이상 shadow되지 않은 채로). 그런
program에는 chfn과 chsh가 있다. (getpwnam()
를 호출하기 전에,
실제 uid와 유효 uid를 바꾼다해도 이를 회피할 수 없다. 왜냐하면 root도
chfn과 chsh를 사용할 것이기때문이다. (역자주: 모호하네요. system programming에
관한 내용같는 데... 아시는 분의 설명 바랍니다.))
libc를 만들 때도 같은 경우가 있다. SHADOW_COMPAT
option이 그 것이다.
그 것은 쓰면 안 된다! /etc/passwd
로부터 encode된 password를
얻기 시작한다는 것이 문제다.
지금 사용하고 있는 libc
version이 4.6.27이전이라면, config.h
와
Makefile
을 고칠 것이 더 있다.
config.h
에서 바꿀 것은:
#define HAVE_BASENAME
을
#undef HAVE_BASENAME
으로.
그리고 Makefile
에서는:
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c
을
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c basename.c
으로.
이 고침은 libc 4.6.27
이나 그 이후에 포함된 basename.c
에 있는
code를 덧붙인다.
shadow suite가 대체시킬 program들을 추적해서 backup을 만드는 것도 좋은 생각이다. Slackware 3.0에는 다음과 같다:
BETA package는 Makefile에 backup을 만들 목록이 있지만, 다른 배포판에서 다른 위치에 놓여 있을 수 있기에 설명으로 처리되어 있다.
또한 /etc/passwd
file을 backup받기를 바란다. 그러나, 같은 directory에
만들 때, passwd
명령으로 덮어 쓰지 못하도록, 이름을 정할 때 조심해라.
거의 대부분의 설치과정에서 당신이 root 권한을 지닐 필요가 있다.
package를 compile하기 위해 make을 실행시킨다:
make all
다음과 같은 경고문가 나오는 경우가 있다: rcsid defined but not used (rcsid가 정의되어 있지만 사용되지 않습니다)
. 괜찮다, 이 건 저자가 version
control package를 사용하기에 나오는 것이다.