리눅스 기초 기초는 튼튼하게…
시스템 부팅과정 Power On ROM BIOS에서 지정된 부팅 드라이브로 부팅 시작 부팅 드라이브의 첫번째 섹터의 부트 섹터 읽어 들임 부팅 섹터의 부팅 프로그램인 부팅 로더(LILO) 작동 커널 이미지(/boot/vmlinuz-버전) 적재 루트 파일 시스템 마운트 시스템 초기화 프로그램(init) 작동 Login: 프롬프트
/sbin/init /sbin/init 의 동작 : init 프로세스는 로그인 프롬프트가 나오기 전까지 파일 시스템 점검, 서비스 프로세스 관리, 가상 콘솔 접속 관리, 실행 레벨 관리 등 사용자의 리눅스 사용 환경을 위한 초기화 작업들을 실행 관리하게 됩니다. 새로운 프로세스 생성 프로세스 재 시작 여러 프로그램 실행 스크립트 실행 init의 모든 동작은 /etc/inittab 파일에 의해 제어된다
/etc/inittab ※ /etc/inittab 의 구성 => id : run-levels : action : process id : 3 : initdefault: si: S : sysinit : /etc/rc.d/rc.sysinit l0 : 0 : wait : /etc/rc.d/rc 0 l1 : 1 : wait : /etc/rc.d/rc 1 • ca : : ctrlaltdel : /sbin/shutdown –t3 –rf now c1 : 12345 : respawn : /sbin/agetty 38400 tty1 c2 : 12345 : respawn : /sbin/agetty 38400 tty 2 c3 : 45 : respawn : /sbin/agetty 38400 tty 3 =>기본 실행레벨은 3이다 =>시스템이 부팅할 때 init로 하여금 /etc/rc.d/rc.sysinit를 실행하도록 지시한다 =>/etc/rc.d/rc 스크립트가 적절한 실행레벨 인수를 사용하여 실행된다. =>사용자가 Ctrl-Alt-Del 키를 누르면 안전한 시스템 리부팅을 시킨다. =>agetty는 가상콘솔로 로그인을 허용해주는 역할을 한다
/etc/inittab <id : 실행되어야 할 경우를 표현> ID 의미 si 시스템 초기화 프로세스 l0-l6 7개의 프로세스가 초기화되는 실행수준 ud 업데이트 프로세스용으로 사용되는데, ./sbin/update 프로세스를 호출 ca Ct기+Alt+Del 키를 눌렀을 때 실행되는 프로세스 pf UPS가 전원 실패를 나타냈을 때 실행되는 프로세스 pr UPS가 전원을 복구했을 때 실행되는 프로세스 x X터미널로 시스템을 변경했을 때 실행되는 프로세스
/etc/inittab <action : 실행시키는 방법> action 의미 wait 프로세스를 실행하고 모두 끝나기를 기다림 respawn 프로세스를 실행하고 죽게 되면 다시 실행 initdefault 디폴트 실행 수준을 결정 sysinit 프로세스를 시스템 부트시 실행 once 한번만 실행 off, boot, bootwait, powerfail, ctrlaltdel, kbrequest
rc.sysinit 이 파일은 기본 시스템 초기화를 처리해주는 명령을 담고 있는 간단한 쉘 스크립트이다. 예를 들어 네트워크 설정, 호스트 이름 설정, /proc 마운트, 시스템 시간 설정, 시스템 폰트 구동, 스왑 구동, 루트 파일 시스템 및 리눅스 파일 시스템 체크, ISA PNP 카드 설정, 하드 디스크 최적화, 사운드 카드 모듈 구동, Raid 디바이스 구동 등입니다
/etc/rc.d/rc /etc/rc.d/rc 스크립트는 /etc/rc.d/rcN.d 디렉토리에 있는 여러 가지 스크립트를 실행시킨다. 주로 서비스 데몬을 실행하거나 중지시키는 일을 하고 있습니다. 부팅 시 서비스 데몬들이 동작하는 것은 이 스크립트에 의해서 일어납니다
/etc/rc.d/rc.local /etc/rc.d/rcN.d 디렉토리에 있는 여러 가지 스크립트가 실행되고 가장 마지막에 rc.local 스크립트가 실행된다. 각 디렉토리에는 rc.local 스크립트를 가리키는 링크 파일이 있으며 이 파일이 가장 마지막에 실행된다
xinetd(extended init network daemon)
xinetd(extended init network daemon) xinetd 슈퍼 데몬을 위한 환경 설정은 /etc/xinetd.conf 파일에서 설정합니다. default { <속성> <연산자> <값> <값> … } Service 서비스명
xinetd(extended init network daemon) /etc/rc.d/init.d/xinetd start # xinetd 실행 /etc/rc.d/init.d/xinetd restart # xinetd 재실행 kill -SIGUSR1 xinetd’s PID #변경된 설정으로 다시 데몬 시작
네트워크 설치(이더넷 카드 인식시키기) modprobe 모듈명 #수동으로 모듈을 띄워주어야 할 때 /etc/rc.d/rc.local #이 파일에 등록해 놓으면 부팅할 때 자동적으로 커널에 올라감
네트워크 설치(이더넷 카드 등록 정보 확인) dmesg | more #커널에 등록된 이더넷 카드의 정보를 확인 lsmod #모듈이 적재되어 있는 상태를 확인 rmmod #모듈을 지울 때
네트워크 설치(호스트 이름 넣기) 리눅스에서 호스트 정보를 가지는 파일은 /etc/hosts와 /etc/sysconfig/network 입니다 x-window 에서 설정할 때는 netcfg 네트워크 관리 제어판을 이용합니다
네트워크 설치(인터페이스 설정) lo는 루프 백에 쓰이는 인터페이스이며, eth은 이더넷 카드, ppp는 PPP 접속에 쓰이는 인터페이스입니다. ifconfig #네트워크 상태 체크 ifconfig 인터페이스 IP [넷마스크] [브로드캐스트 주소] up/down #네트워크 인터페이스 설정 x-window 에서 설정할 때는 netcfg 네트워크 관리 제어판을 이용합니다
네트워크 설치(라우팅 설정) route #라우팅 테이블을 보여줍니다. route add/del –net/-host network/host address #라우팅 정보 추가 및 제거
네트워크 설치(게이트웨이 설정) route add/del default gw IP dev interface #게이트웨이 설정 및 제거
네트워크 설치(설정 반영) /etc/rc.d/init.d/network restart #새로운 네트워크 설정 반영
네트워크 진단(ping) 네트워크의 어느 특정 호스트에 일정한 패킷을 보내어 응답이 있는지 체크하는 도구입니다. ping [-c 횟수] [-s 패킷 크기] 호스트 주소
네트워크 진단(traceroute) 패킷이 목적 호스트까지 전달되는 경로를 조사하여 화면상으로 출력해 주는 명령이다. traceroute –i 인터페이스 명 테스트하고자 하는 호스트 주소 #기본 라우터로 설정된 인터페이스로 경로 추적
네트워크 진단(netstat) route 명령보다 좀더 자세한 라우팅 테이블 정보와 네트워크 상태를 체크할 수 있는 도구입니다. netstat –nr netstat #네트워크의 인터넷 접속 상태와 소켓 상태를 보여 줌 netstat –t #인터넷 네트워크 상태만 보여줌 netstat –i #네트워크 패킷 전송 상태 체크
네트워크 진단(nslookup) nslookup #네임 서버를 통하여 도메인을 검색하거나 IP 정보를 확인하는 명령입니다
네트워크 진단(host) host #도메인을 검색할 때 사용하는 명령으로 nslookup과 유사한 역할을 한다
네트워크 진단(ARP) ARP #ARP는 아이피 주소와 이더넷 고유 주소인 MAC 주소에 대한 정보를 보여줍니다
사용자 계정 관리하기 사용자 계정과 관련된 파일 /etc/passwd /etc/shadow /etc/group /etc/skel
사용자 계정 관리하기 passwd 파일 ID : 패스워드 : ID숫자 : 그룹숫자 : 실제이름 : 홈디렉토리 : 쉘 shadow 파일 #/etc/passwd 는 일반 사용자들도 접근하여 파일 내용을 볼 수 있기 때문에 패스워드 필드가 암호화되어 있더라도 안심할 수 없습니다. pwconv 명령을 통해 /etc/passwd 파일의 패스워드 필드를 ‘x’ 문자 처리하고 /etc/shadow 파일에 암호화된 패스워드를 저장합니다
사용자 계정 관리하기 group 파일 그룹이름 : 패스워드 : 그룹숫자 : 멤버들 skel 파일 #계정이 만들어진 후 /etc/skel 디렉토리에 있는 뼈대 파일들이 사용자의 홈디렉토리로 복사된다. 사용자가 가졌으면 하는 파일들을 이 곳에 두면 된다
사용자 계정 만들기 useradd –u ID번호 –g 그룹번호 –d 디렉토리 –c “사용자설명” –m –s /bin/ksh kang passwd kang
사용자 계정 삭제 userdel –r kang #계정과 사용자의 홈 디렉토리를 지워준다 메일 박스와 crontab 파일 그리고 사용자의 개인적인 파일은 수동으로 지워야 한다 find / -user kang -ls
파일소유권과 허가권 ※ - rwx r-x r-x 2 kang root 2345 Nov 15 08:54 test.txt 소유자의 권한 그룹의 권한 타인의 권한 유형 파일 크기 날짜 파일 이름 하드링크 갯수 파일 허가권 예 chmod u+w test.txt chmod ug-w test.txt chmod 755 test.txt chmod 644 test.txt 파일 허가권의 숫자 표현 r : 4 w : 2 x : 1 rwx r-x rw- (4+2+1) (4+0+1) (4+2+0)
파일소유권과 허가권 파일 소유권 예 chown kim test.txt chgrp user test.txt ※ - rwx r-x r-x 2 kang root 2345 Nov 15 08:54 test.txt 파일의 소유자 파일 사용에 대한 어떤 그룹 파일 소유권 예 chown kim test.txt chgrp user test.txt 디렉토리도 일종의 파일이다. 디렉토리를 실행시키면 디렉토리안의 파일들이 보여진다 이렇게 하려면 실행 권한이 필요하다