180 likes | 290 Views
Chapter 14 System Administration ( 시스템 관리 ). 시스템 관리자와 수퍼유저. 시스템 관리자의 권한 can halt the system create/read/write/execute any directories and files change password 수퍼유저 로그인명 root 로 로그인한 사용자 수퍼유저가 되는 방법 시스템 가동 후 root 로 로그인 su (substitute user) 사용 : 프롬프트는 # 시스템 관리 도구들의 위치
E N D
시스템 관리자와 수퍼유저 • 시스템 관리자의 권한 • can halt the system • create/read/write/execute any directories and files • change password • 수퍼유저 • 로그인명 root로 로그인한 사용자 • 수퍼유저가 되는 방법 • 시스템 가동 후 • root로 로그인 • su (substitute user) 사용: 프롬프트는 # • 시스템 관리 도구들의 위치 • /sbin 이나 /usr/sbin (/usr/bin이 아님)
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 • 시스템 운행 중지시 수행
getty, login • getty 프로세스 • init 프로세스에 의해 생성되며 각 터미널 마다 시스템 파일을 참조하여 터미널의 특성을 결정하고 사용자의 login을 기다린다. • login 프로세스 • getty에 의해 생성되며 사용자의 login name을 입력받고 password를 검사한다. • login 성공시 사용자를 home directory로 안내하고 사용자 shell을 실행
단일 사용자 모드 • 시스템 유지보수 작업시 • 백업시 • sync • 변경사항을 하드 디스크에 기입 • 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 파일 호출
다중 사용자 모드에서 로그인 절차 • 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. 전원을 끈다.
파일의 종류 • 보통 파일과 디렉토리 파일 • 심볼릭 링크 • 특수 파일 • 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/ (메일 시스템 에러 기록)
일상적인 시스템 관리 기능 (2) • 정기적인 작업의 자동 실행 • cron (정기적으로 명령어들 실행) • crontab (사용자가 제출하는 정기적 수행 명령어) • 새로운 소프트웨어의 설치 및 개선(upgrade) • /usr/bin (표준 시스템용 파일) • /usr/local/bin (그 밖의 free 소프트웨어)
문제점의 해결 • 사용자가 로그인하지 못할때 • /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 {} \;
문제점의 해결 (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) • 모든 사용자가 로그인시 읽을 내용 • 새로운 프로그램이나 변경사항 등의 공고 • news • 회의 소집, 새로운 하드웨어, 새로운 동료 등에 관한 소식