다음 이전 차례

4. program들 만들기.

4.1 압축풀기.

package를 받을 뒤 처음 할 일은 풀어 제치는 것이다. package는 gzip으로 앞축된 tar (tape archive) 형식으로 되어 있으므로, /usr/src로 옮긴 뒤:

tar -xzvf shadow-current.tar.gz

그러면, /usr/src/shadown-YYMMDD라는 directory에 풀릴 것이다.

4.2 config.h file을 가지고 설정합니다.

첫째, Makefileconfig.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.hMakefile을 고칠 것이 더 있다. 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를 덧붙인다.

4.3 원 program의 backup copy들을 만든다.

shadow suite가 대체시킬 program들을 추적해서 backup을 만드는 것도 좋은 생각이다. Slackware 3.0에는 다음과 같다:

BETA package는 Makefile에 backup을 만들 목록이 있지만, 다른 배포판에서 다른 위치에 놓여 있을 수 있기에 설명으로 처리되어 있다.

또한 /etc/passwd file을 backup받기를 바란다. 그러나, 같은 directory에 만들 때, passwd 명령으로 덮어 쓰지 못하도록, 이름을 정할 때 조심해라.

4.4 make를 실행

거의 대부분의 설치과정에서 당신이 root 권한을 지닐 필요가 있다.

package를 compile하기 위해 make을 실행시킨다:

make all

다음과 같은 경고문가 나오는 경우가 있다: rcsid defined but not used (rcsid가 정의되어 있지만 사용되지 않습니다). 괜찮다, 이 건 저자가 version control package를 사용하기에 나오는 것이다.


다음 이전 차례