Tony acero, ace3@midway.uchicagi.edu
dd if=/dev/hda8 of=/etc/dosswap
gzip -9 /etc/dosswap
xxxxx는 swap 파티션의 block 개수이다. mkswap /dev/hda8 XXXXX swapon -av/etc/fstab file에 swap 파티션을 위한 엔트리를 추가했음을 확인하라.
swapoff -av zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100# 이것은 오직 처음의 100 블록 만을 파티션에 기록함을 알아두어라. 나는 경험적으로 100 이면 충분함을 알아내었다. >> 이것의 장점과 단점은 무엇인가. 장점 : 상당한 양의 디스크 스페이스를 절약할 수 있다. 단점 : step 5가 자동적으로 이루어지지 않을 경우, 여러분은 그것을 직접 해주어야 함을 기 억해야 하며, reboot 프로세스가 조금 느려진다.
Jim Dennis, jadestar@rahul.net 변경되지 않는 flag 사용하기 여러분의 시스템을 설치하고 환경을 설정한 바로 뒤에 /bin, /sbin, /usr/bin, and /usr/lib 그리고 다른 usual suspects로 간 뒤 'chattr +i command'를 자유로이 사용하라. 또한 그것을 root의 커널 file에 추가 해라. 이제 'mkdir /etc/.dist/'를 하고 /etc 의 모든 것을 그 디렉토리 로 복사해라. (나는 recursion을 피하기위해 이것을 /tmp/etcdist.tar를 사용하는 두 step을 사용한다.) (옵션으로 당신은 /etc/.dist.tar.gz을 만 들수도 있다)-- 그리고 그것을 변경되지 않도록 만든다. 이런일을 하 는 이유는 root로 로그인 했을 때 당할수 있는 피해를 줄이기 위해서 이다. 당신은 stray redirection 오퍼레이션으로 오버라이트를 하지 않 을 것이며, 'rm -rf' 명령을 사용할 때 시스템을 사용불가능하게 하는 일이 없을 것이다. (여러분은 여전히 많은 피해를 입겠지만, libs와 bins는 좀더 안전해질 것이다) 이것은 다양한 보안과 denial of service exploits를 불가능하게 혹은 더욱 어렵게 만들 것이다. ( 그들의 많은 부분이 독자적인 shell을 제 공하지 않는 SUID 프로그램의 활동을 통해 file을 overwrite 하는데 의존하기 때문이다) 이것의 오직 한가지 불편한 점은 다양한 종류의 시스템 바이너리들을 'make install' 할 때이다. 반면에 그것은 또한 'make install'이 file을 overwrite하지 않도록 해준다. 여러분이 Makefile을 읽는 것을 깜박 잊 고 다시 기록될 file들을 chattr -i 할 때(그리고 당신이 file을 풀어놓 을 디렉토리도), make는 실패하며, chattr 명령을 사용하여 그것을 다 시 실행해야 한다. 당신은 자신의 기존의 bins, libs, 혹은 무엇이던간 에 .old/ 디렉토리로 옮길 기회를 얻게된다. 또는 그것들을 리네임하거 나 tar로 압축따위를 할수도 있다.
Jim dennis, jadestar@rahul.net 새로운 stuff를 어디에 넣을것인가에 대한 제안
모든 새로운 stuff들은 /usr/local 혹은 /usr/local/'hostname'에서 시작 한다. 당신의 배포본이 /usr/local을 비워놓는 것중의 하나라면 /usr/local/src, /usr/local/bin 등을 만들고 그것을 사용해라. 만약 당신 의 배포본이 /usr/local 트리에 뭔가를 집어넣는다면, 당신은 'mkdir /usr/local/'hostname''을 하고 그것에 'wheel' 그룹 +w를 부여하고 싶 을지 모른다. (나는 wheel 그룹의 모든 멤버들이 그 아래에서 오직 그 들 자신의 file만을 다루도록, 그리고 생성되는 모든 file이 'wheel' 그 룹에 속하도록 SUID와 SGID도 만들었다) 이제 새로운 패키지들을 /usr/local/src/.from/$WHEREVER_I_GOT_IT에 집어넣도록 항상 자 신을 훈련시켜라. 그리고 그들을 /usr/local/src에서(혹은 .../$HOSTNAME에서) build 해라. 그것이 로컬의 heirarchy 아래에 설 치되었음을 확인해라. 만약 그것이 절대적으로 /bin 또는 /sbin 아래에 설치가 되야 한다면, 어딘가에 존재할 때 로컬의 heirarchy로부터 각각 의 엘리먼트로의 심볼릭 링크를 만들어라. 이렇게 하는 이유는 -- 그것이 번거로운 일임에도 불구하고 -- 만일 의 경우에 백업되고, 리스토어되고 배포본으로부터 완저히 다시설치하 는 것 등을 막는데 도움을 주기 때문이다. /usr/local/.from 디렉토리를 사용함으로써, 소스가 나온곳의 비공식적 log를 유지할수도 있다 --이 것은 새로운 업데이트 사항을 찾을 때 도움을 준다 -- . 또 security announcement 리스트를 모니터링 할 때 중요할수도 있다. 집에 있는 나의 시스템중 하나는 내 자신이 이러한 방책을 적용시키기 전에 구성된다. 나는 여전히 그것이 설치된 시스템으로서의 stock과 다른점이 무엇인지를 모른다. 이것은 내 집의 시스템에 거의 설정을 하지 않았다는 점과, 내가 그것을 사용하는 유일한 사람이라는 사실을 무시한 것이다. 반대로 내가 직장에서 설정 해놓은 시스템(내게 그곳의 시스템 관리자 로서의 임무가 맡겨졌을 경우)은 모두 이런식으로 설정되어 있고, 많 은 청부인과 다른 MIS 사람들에 의해 관리되어 왔으며, 수많은 업그 레이드와 패키지 설치가 이루어졌다. 그럼에도 나에게는 초기의 설치 와 설정이 끝난뒤에 집어 넣게될 중요한 엘리먼트들에 대한 좋은 아이 디어가 있다.
Jim Dennis, jadestar@rahul.net 시스템관리자를 위한 몇가지 팁.
/README.'hostname'과 /etc/README.'hostname'을 만들고 관리해 라. 혹은 /usr/local/etc/README.'hostname'도 가능하다. 절대적으로, 시스템 관리를 시작한 첫날로부터 온라인 로그 file내에 기록을 해라. root의 /bash_logout에 | vi /README.$(hostname) | 과 같은 라인을 적어도 좋다. 이것을 하는 또 다른 방법은 su나 sudo에 다음과 같은 일을 하는 스크립트를 기록하는 것이다.
function exit \ { unset exit; exit; \ cat ~/tmp/session.$(date +%y%m%d) \ >> /README.$(hostname) && \ vi /README.$(hostname) } script -a ~/tmp/session.$(date +%y%m%d) /bin/su.org -(session log를 만들기 위해 typescript를 사용하고, 자동으로 log를 appending과 updating을 할 함수를 만든다). 나는 내가 이 방식의 자동화 도구를 만들지 않았음을 인정할 것이다 -- 나는 단지 여지껏 스스로의 훈련에 의존해 왔을 뿐이다. 그러나 나 는 장난삼아 그런 아이디어를 생각해 왔었다. (심지어는 이미 본 스 크립트의 프로토타입이나 shell 기능의 문제에서 조차도.) 이것으로 나 를 다시 붙드는 것은 'script' 명령 그 자체이다. 나는 이것을 사용하기 전에 소스를 입수하고 몇가지 커맨드 라인 파라메터를 추가해야겠다고 생각한다(커맨드 라인으로부터 스크립트를 잠시중단하거나 정지시키기 위해서). 내가 마지막으로 제안 하는 것은 : root의 'PATH=/bin'으로 구성되야 한다는 점이다. 바로 그렇다. 다른 무엇도 root의 path에 이어서는 안 된다. root가 하는 모든일은 /bin으로부터 혹은 alias나 shell 함수에 의 해서 심볼릭 링크를 받던가 또는 혹은 /bin 디렉토리내의 script나 binary이던가 또는 뚜렷한 패스로 타입되는 것이다. 이것은 누군가가 binary를 얼마나 신임하는지를 인식하고 root로서 실행하도록 만들어 준다. 멀티 유저 호스트의 현명한 관리자는 특정 패턴이나 loophole을 찾아내기 위해 자신의 /bin과 /*history를 정기적으로 살펴볼 것이다. 실제로 동기가 부여된 어드민은 자동화 될 수있는 sequence를 알아채 고, 온전한 체크가 삽입될 수 있는곳에 위치시키며, root의 특권을 일 시적으로 삼가기 위한 작업들을 한다(에디터를 설치하고, 정교한 스크 립트 구조를 가진 MTA의 또는 다른곳의 커다란 인터액티브 프로그 램을 설치한다. (그들을 불명예스러운 vi ./.exrc 그리고 emacs ./.emacs 그리고 교활한 $EXINIT 그리고 임베딩된 header/footer 매크 로처럼 transparent나 data file내에 임베딩될 수도 있다. 당연히 다음 과 같은 종류의 커맨드가 실행될 수 있다:
cp $data $some_users_home/tmp su -c $origcommand $whatever_switches cp $some_users_home/tmp $data대개 마지막의 예방조치는 홈 또는 싱글 유저 워크스테이션 사용자에게 해당하는 것이다 -- 그러나 그것은 멀티유저 시스템, 특히 대중에게 노출되어 있는 시스템의 관리자에게 도 유용한 것이다.
Arrigo Triiulzi, a.triulzi@ic.ac.uk
/usr/bin/X11/xdm exec /usr/bin/X11/X -indirect hostname
경고 : 예전의 SLS(1.1.1)을 가지고서 몇가지 이유 때문에 xdm 라인 뒤에 -nodaemon을 남 겨놓을 수도 있다. 이것은 이후의 릴리즈에서는 동작하지 않는다.