Chapter 14 System Administration (시스템 관리) 시스템 관리에 관한 내용
시스템 관리자와 수퍼유저 시스템 관리자의 권한 수퍼유저 수퍼유저가 되는 방법 시스템 관리 도구들의 위치 can halt the system create/read/write/execute any directories and files change password 수퍼유저 로그인명 root로 로그인한 사용자 수퍼유저가 되는 방법 시스템 가동 후 root로 로그인 su (substitute user) 사용: 프롬프트는 # 시스템 관리 도구들의 위치 /sbin 이나 /usr/sbin (/usr/bin이 아님) Root가 가지는 권한 & root가 되는 방법
Boot Sequence 1. UNIX 커널의 로딩 2. UNIX 커널의 초기화 3. 시스템 프로세스 생성 swapper(0), init(1), pagedaemon(2) 4. initialization script의 실행 /etc/rc, /etc/rc.local (comp76 : /etc/rc0 -(symbolic link)-> /sbin/rc0) 5. Multi-user operation -getty, login
주요 시스템 프로세스 시스템 초기화시 실행되어 시스템 halt시 제거된다. swapper, pagedaemon 각각 프로세스 ID가 0,2이다. 실제 프로세스라고 볼 수 없으며 커널의 일부이다. 가상 메모리, 스와핑과 관련된 작업을 시스템이 동작하는 동안 수행 init 프로세스 모든 프로세스의 아버지 사용자 환경 초기화 작업을 수행 getty 프로세스를 생성, 이후 사용자 login을 기다린다.
초기화 스크립트 /etc/rc 파일의 내용에 따라 초기화 작업을 수행 파일 시스템 체크 파일 시스템 mount swap 영역 할당 여부 조사, swap on 여러 daemon들의 수행 네트워크 환경 설정 /sbin/rc1 단일 사용자 모드로 전환시 수행 /sbin/rc2 다중 사용자 모드로 전환될 때 수행 /sbin/rc0 시스템 운행 중지시 수행 rc3, rc6, rcS ?
getty, login getty 프로세스 login 프로세스 init 프로세스에 의해 생성되며 각 터미널 마다 시스템 파일을 참조하여 터미널의 특성을 결정하고 사용자의 login을 기다린다. login 프로세스 getty에 의해 생성되며 사용자의 login name을 입력받고 password를 검사한다. login 성공시 사용자를 home directory로 안내하고 사용자 shell을 실행
단일 사용자 모드 시스템 유지보수 작업시 백업시 sync fsck (filesystem check) 변경사항을 하드 디스크에 기입 fsck (filesystem check) verifies the integrity of a filesystem if possible, repairs any problems it finds. Mount하지 않고 검사해야 함 /etc/vfstab (virtual filesystem table)을 검사
다중 사용자 모드로의 전환 In Superuser mode : # Ctrl-D # init 2 다중 사용자 모드로의 전환 /sbin/rc2 파일 호출 Root라면 Ctrl-D를 누르거나 init 2라고 하면 multiuser mode로 변경됨
다중 사용자 모드에서 로그인 절차 init process forks getty process getty process 로그인 프롬프트를 표시하고 로그인 기다림 터미널 타입을 확인하고 입력을 login 프로세스에 전달 login process login 프로세스가 로그인명과 암호 확인 (/etc/passwd 파일 참조) 사용자 ID와 그룹 ID 초기화 (/etc/group 파일 참조) 홈 디렉토리와 로그인 쉘 설정 HOME, PATH, LOGNAME, SHELL, MAIL 등 변수값 지정 login shell이 C 쉘인 경우 홈디렉토리의 .login과 .cshrc 수행
로그 아웃 로그 아웃을 할 때, 쉘을 수행하는 프로세스는 die 운영체제는 init에게 자식 프로세스 하나가 die했음을 알림 init는 /etc/utmp /var/adm/wtmp를 갱신하고 새로운 getty process를 실행함
시스템의 운행 중지 /etc/shutdown 파일을 사용하여 시스템의 운행을 중지한다. 필요한 경우 다음과 같이 수동을 할 수 있다. 1. root로 로그인(또는 su 사용) 2. wall을 사용하여 다른 사용자에게 운행 중지를 경고 3. sync를 사용하여 디스크 버퍼의 내용을 디스크에 저장 4. umount를 사용하여 마운트된 장치들을 unmount 5. Kill -TERM 1 으로 단일 사용자 모드로 전환한다. 6. 전원을 끈다. /etc/shutdown과 /usr/sbin/shutdown의 차이점?
파일의 종류 보통 파일과 디렉토리 파일 심볼릭 링크 특수 파일 FIFO 특수 파일 소켓(socket) 주/보조 디바이스 번호 블록/문자 디바이스 Raw devices
시스템 고장 시스템이 고장을 일으켰을 경우는 피해를 가능한 한 최소화하도록 다음과 같은 절차로 다시 시동하여햐 한다. 1. 단일 사용자 모드로 부팅하고 root만을 마운트한다. 2. root에서 fsck를 사용하여 파일시스템을 복구한다. 이 때 sync를 사용하지 않는다. 다른 파일 시스템도 복구하기 위해서는 마운트하기 전에 fsck를 사용한다. 3. 복구된 파일의 사용자에게 문제의 가능성을 알린다. 4. 각 파일시스템의 lost+found 디렉토리에서 잃어버린 파일을 찾는다. 5. 찾는 파일이 없거나 불완전하면, 백업한 것으로부터 복구한다.
일상적인 시스템 관리 기능 파일의 백업 및 복구 사용자 계정의 추가 및 삭제 메일과 로그파일의 검사 # useradd -m -d /home -g 100 -c “Alex Watson” alex # passwd alex (패스워드의 지정) # userdel -r alex 메일과 로그파일의 검사 /var/adm/messages (운영체제 에러 메시지 기록) /var/log/ (메일 시스템 에러 기록) Useradd -m create the new user’s home directory -d the home directory of the new user -g group -c comment : any text string alex login name userdel -r remove the user’s home directory from the system
일상적인 시스템 관리 기능 (2) 정기적인 작업의 자동 실행 새로운 소프트웨어의 설치 및 개선(upgrade) cron (정기적으로 명령어들 실행) crontab (사용자가 제출하는 정기적 수행 명령어) 새로운 소프트웨어의 설치 및 개선(upgrade) /usr/bin (표준 시스템용 파일) /usr/local/bin (그 밖의 free 소프트웨어)
문제점의 해결 사용자가 로그인하지 못할때 machine log의 기록 보관 시스템 보안 유지 디스크 사용의 감시 /etc/passwd, .profile, .login, .cshrc 등 검사 machine log의 기록 보관 시스템 보안 유지 패스워드, chmod 디스크 사용의 감시 df, du, find (디스크 사용량의 조사) ps -ef 또는 kill (디스크 공간 허비하는 프로세스의 조사 및 수행 중단) cpio와 tar (불필요한 파일의 archive) core 파일의 제거 # find / -name core -atime +3 -exec rm {} \; -e : print information about every process now running -f : generate a full listing -a : print information about all process most frequently requested. -u : list only process data whose effective user ID number of login name cpio : copies files in to and out from a cpio archive cpio -i (copy in) : extract files from the standard input cpio -o (copt out) : reads the standard input to obtain a list of path names and copies those files onto the standard output see the book..!! (p 575) find -atime : true if the file was accessed n(3) days ago -exec : true if the executed command returns a zero value as exit status. The end of command must be punctuated by an escaped semicolon(\;). {} is replaced by the current path name.
문제점의 해결 (2) 불필요한 디렉토리 공간의 제거 /tmp와 /var/tmp에 있는 파일의 삭제 /var/mail, /var/spool, /var/adm, /var/news의 디스크 사용량에 유의 불필요한 디렉토리 공간의 제거 내용이 큰 디렉토리를 조사 # find / -type d -size +5 -print 디렉토리 공간의 축소 새로운 디렉토리에 복사 디렉토리에 있는 파일을 제거해도 디렉토리 자체의 크기는 줄지 않기 때문 # mv /home/alex/large /home/alex/hold # mkdir /home/alex/large # cp -r /home/alex/hold /home/alex/large # rm -rf /home/alex/hold
사용자와의 통신 wall (write all) write mailx /etc/motd (message of the day) 로그인한 모든 사용자에게 메시지 전달 write 로그인한 개개인의 사용자와 통신 mailx 급하지 않은 메시지의 전달에 유용 /etc/motd (message of the day) 모든 사용자가 로그인시 읽을 내용 새로운 프로그램이나 변경사항 등의 공고 news 회의 소집, 새로운 하드웨어, 새로운 동료 등에 관한 소식