4 장. 서버구축을위해알아야할 최소한의것들
Fedora 를설치하고부팅한후에 설치직후 ( 부팅 ) 이라는이름으로 Snapshot 작성 Fedora 를 Shutdown 한후에 설치직후 ( 셧다운 ) 이라는이름으로 Snapshot 작성 추후실습에필요
시스템종료 X 윈도우 [ 데스크탑 ]>>[ 로그아웃 ]>>[ 컴퓨터끄기 ] [ 데스크탑 ] >> [ 로그아웃 ] >> [ 컴퓨터끄기 ] 명령어 shutdown -h now (-h 는 halt 를의미 ) halt init 0 런레벨 (runlevel) 0 번 종료모드 1 번 싱글유저모드 ( 시스템복구시에사용 ) 2 번 사용안함 3 번 멀티유저모드 ( 텍스트로그인 ) 4 번 사용안함 5 번 멀티유저모드 (X 윈도우로그인 ) 6 번 재가동모드 ( 리부팅 )
시스템종료 # shutdown -h +10m 10 분후에종료 (h : halt) # shutdown -r 22:00 오후 10 시에재가동 (r : reboot) # shutdown -c 진행중인 shutdown 을취소 (c : cancel) # shutdown -k now 현재접속된사용자에게종료된다는메시지만보내고실제로종료하지는않음
시스템재가동 X 윈도우 [ 데스크탑 ]>>[ 로그아웃 ]>>[ 컴퓨터다시시작 ] 명령어 shutdown -r now (-r 은 reboot 를의미 ) init 6 reboot 런레벨 (runlevel) 0 번 종료모드 1 번 싱글유저모드 ( 시스템복구시에사용 ) 2 번 사용안함 3 번 멀티유저모드 ( 텍스트로그인 ) 4 번 사용안함 5 번 멀티유저모드 (X 윈도우로그인 ) 6 번 재가동모드 ( 리부팅 )
로그아웃 X 윈도우 [ 데스크탑 ]>>[ 로그아웃 ]>>[ 로그아웃 ] 키보드의 Ctrl + Alt + Backspace 텍스트모드 텍스트모드 logout 명령어 exit 명령어
가상콘솔 가상의모니터가있다고생각하면됨 Ct l + Alt + F1 F6 까지 6 개의가상모니터 Ctrl + Alt + F1 ~ F6 까지 6 개의가상모니터 Ctrl + Alt + F7 은원래의 X 윈도우화면 Vmware 의 Hot Key 의변경 Edit >> Preferences >> Hot Keys 에서 Ctrl + Alt Ctrl + Alt + Shift 로변경
자동완성과도스키 자동완성 파일명또는디렉토리명의일부만입력한후 Tab 키를눌러나머지를자동완성하는기능 도스키 기존에사용한명령어를 또는 키를눌러다시사용하는기능
에디터 gedit 윈도우즈의메모장과비슷한그래픽에디터 Vi (vim) 유닉스또는리눅스계열의전통적인에디터 명령모드 / 편집모드 초기모드는명령모드명령모드에서편집모드로전환 : i, a 등을사용 편집모드에서명령모드로전환 : ESC 키사용 편집후 vi 에서나가는방법 :wq, :q, :q! 임시 ( 스왑 ) 파일명 :. 파일명.swp.a.c.swp,.Makefile.swp,
man 명령어의사용법에대한도움말을제공 man 페이지는여러섹션으로구성되어있다. 사용방법 man [< 섹션번호 >] < 명령어 > 사용예 $ man ls $ man write == man 1 write $ man 2 write
mount CD 장치나하드디스크등의물리적장치를특정디렉토리에연결 (mount) 하는명령어 이디렉토리를 mount point 라고함. mount point 는미리만들어져있어야함. 사용방법 mount [-t 파일시스템타입 ] 장치파일마운트포인트 mount a 장치파일마운트포인트 사용예 mount -t iso9660 /dev/hdc /media/cdrom mount a /dev/hdc /media/cdrom mount /dev/hda1 /usr/local
umount 마운트되어있는장치를더이상사용하지않기위해마운트를해제하는명령어 사용중인장치는언마운트할수없음. 사용방법 umount 장치파일 마운트포인트 사용예 umount /dev/hdc umount /media/cdrom umount /usr/local
하드디스크추가후사용하는방법 가상기계를 shutdown 시킨후하드디스크를하나추가 추가된디스크의이름확인 /dev/hda, /dev/hdb, /dev/hdc, (IDE) /dev/sda, /dev/sdb, /dev/sdc, (SCSI) 가상기계를부팅한후파티션을설정 $ fdisk /dev/hdb h : help n : make a new partition p : print partition table w : write the change to partition table
하드디스크추가후사용하는방법 ( 계속 ) 파티션을설정한후파일시스템을설치 $ mkfs /dev/hdb1 $ mkfs.ext3 /dev/hdb2 파일시스템설치후 ( 즉포매팅후 ) 마운팅마운트할디렉토리 ( 즉마운트포인트 ) 가미리만들어져있어야함에주의 $ mount /dev/hdb1 /hdb1 /usr/local /l l 마운트가제대로되었는지확인 $mount $ df
하드디스크추가후사용하는방법 ( 계속 ) 부팅시자동으로마운트되도록하는방법 /etc/fstab 파일에마운트정보를추가 /dev/hdb1 /usr/local ext3 defaults 1 1 /dev/cdrom /media/cdrom iso9660 noauto,ro 0 0 parameters dump 실행여부 fsck 실행여부 /etc/fstab 에추가된마운트정보를이용하는방법 $ mount a $ mount /usr/local $ mount /media/cdrom
기본명령어 ls (list) 해당디렉토리의파일목록을보여줌 -a 및 l l 옵션을가장많이사용 cd (change directory) 디렉토리이동 인자가주어지지않으면홈디렉토리로이동 pwd (print working directory) 현재디렉토리의경로명을보여줌 cp (copy) 파일이나디렉토리를복사 cp existingfile newfile
기본명령어 ( 계속 ) rm (remove) 파일 ( 또는디렉토리 ) 을삭제 사용예 $ rm rf abc $ rm i abc $ rm f abc $ alias rm= rm i 로설정된경우사용 mv (move) 파일과디렉토리의이름변경이나위치이동 mv existingfilename newfilename
기본명령어 ( 계속 ) mkdir 새로운디렉토리를생성 rmdir cat 디렉토리삭제명령 디렉토리는비어있어야함 텍스작성된파일을화면에출력 텍스트로작성된파일을화면에출력 more 텍스트파일의내용을한페이지씩화면에출력 텍스트파일의내용을한페이지씩화면에출력
기본명령어 ( 계속 ) touch 빈파일을생성 빈파일을생성 head 파일의처음몇라인만보여준다. tail 파일의마지막몇라인만보여준다. wc 파일의크기를문자, 단어, 라인수로보여준다.
기본명령어 ( 계속 ) who login 한사용자들을보여줌 whoami (who am i) 나의 login name 을보여줌 finger login 한사용자들을보여줌 logout exit 수행중인쉘 (shell) 에서빠져나갈때사용
기본명령어 ( 계속 ) which 실행화일명 PATH 에설정된디렉토리에서실행화일명을탐색 whereis 실행화일명 환경변수에등록된각종경로에서실행화일명을탐색 (man 페이지파일도탐색 ) sync su 리눅스에서도효율을위해 disk cache 를사용하는데 disk cache 에있는내용을디스크로저장해야할때사용 로그인한상태에서다른사용자로로그인할때사용 $ su user1 $ su user1 (user1 의 shell script 수행 )
기본명령어 ( 계속 ) ln 심볼링링크설정 XP 에서의바로가기와유사한기능디렉토리에대해서도링크설정가능 $ ln s s existingfile newfile $ ln s a /tmp/x $ ln s a.c backup/a.c $ ln s /usr/local / mylocal 하드링크를설정하나의파일에여러개의이름부여 $ ln existingfile newfile $ ln a /tmp/x $ ln a.c backup/a.c
기본명령어 ( 계속 ) ps $ps aux $ ps -e df (disk free) $ df $ df h du (disk usage) $ du /home/user1 $du h h. kill $kill-9 1234
기본명령어 ( 계속 ) date $date 현재날짜와시간을보여줌 $ date 03251527 현재날짜와시간을 3 월 25 일 15 시 27 분으로설정 $ date 0325152708 현재날짜와시간을 2008 년 3 월 25 일 15 시 27 분으로설정 rdate s time.bora.net time server 에서현재시각을가져와설정
사용자관리 사용자와그룹 리눅스는멀티유저시스템 root 사용자만이사용자또는그룹을생성할수있음 관련파일 /etc/passwd 사용자이름 : 비밀번호 : 사용자 ID: 사용자가소속된그룹 ID: 전체이름 : 홈디렉토리 : 기본쉘 /etc/group 그룹명 : 비밀번호 : 그룹 id: 그룹에속한사용자명 /etc/shadow 사용자별비밀번호가암호화되어있는파일
사용자의계정을임시로중단하려면 /etc/passwd 파일에서쉘을 /bin/false 로변경 /etc/shadow 파일에서암호의첫부분에임의의글자를하나추가 콘솔이아닌곳에서도 shutdown 이가능하도록하려면 shutdown 이라는 ( 또는아무이름의 ) 계정을하나만든다. /etc/passwd 에서쉘부분을 /sbin/shutdown h h now 로변경 콘솔이아닌곳에서도 rebooting 이가능하도록하려면 reboot 이라는 ( 또는아무이름의 ) 계정을하나만든다. /etc/passwd 에서쉘부분을 /sbin/shutdown r now 로변경 shutdown 을수행하려면 root 의권한을가져야하므로 shutdown, reboot 계정의 uid=0 이어야함.
사용자관리 ( 계속 ) adduser 새로운사용자를추가한다. $ adduser d <homedir> username $ adduser u u <userid> username $ adduser g <groupname> username $ adduser s <shell> username /etc/skel 디렉토리는사용자생성시사용자홈디렉토리에복사될파일이들어있는디렉토리임 사용자추가시어떤일들이진행되는가? p171 p.171 참조
로그인시수행되는쉘스크립트 bash /etc/profile /etc/bashrc $HOME/.bashrc $HOME/.bash_profile $HOME/.bash_logout csh /etc/csh.cshrc /etc/csh.login $HOME/.cshrc $HOME/.login $HOME/.logout
사용자관리 ( 계속 ) 암호변경 $ passwd $ passwd user1 오류메시지 It is too short. It is too simplistic/systematic. It is too similar to the old one. It does not contain enough DIFFERENT charaters.
사용자관리 ( 계속 ) groupadd 새로운그룹을추가한다. $ groupadd students $ groupadd g 510 students userdel 사용자를제거한다. $ userdel user1 $ userdel r user1 system-config-users X 윈도우상에서사용자관리명령
파일과디렉토리의소유권 / 허가권 - r w - r - - r - - 1 root root 73288 6 월 14 11:26 install.log 파일이름 마지막변경날짜 / 시간 파일크기 (Byte) 파일소유자의그룹이름 파일소유자이름 하드링크수 접근권한 파일유형
파일과디렉토리의소유권 / 허가권 ( 계속 ) 파일유형 디렉토리 : d 일반파일 : - 블록디바이스 : b 문자디바이스 : c 심볼릭링크 : l 파일허가권 r 은 read, w 는 write, x 는 execute 첫번째 rw- 는소유자 (user) 에접근권한 두번째의 r--" 는그룹 (group) 의접근권한 세번째의 r--" 는나머지사용자 (other) 에대한접근권한
파일과디렉토리의소유권 / 허가권 ( 계속 ) 관련명령 chmod $ chmod 750 install.log 111 101 000 rwx r-x --- $ chmod ug+x install.log $ chmod o-r install.log chown 사용자명 [. 그룹명 ] 파일명 $ chown fedora install.log $ chown fedora.fedora install.log
한사용자가여러그룹에속할수있다. groupadd 명령으로 team1, team2 그룹생성 adduser 명령으로 kim, lee 사용자생성 $ adduser g team1 kim $ adduser g g team2 lee passwd 명령으로 kim, lee 사용자의암호설정 kim 으로 login 하여임의의파일생성 접근권한을 rw-r----- 로변경 lee 로 login 하여 kim 이생성한파일 access lee 가 team1 그룹에속하도록 /etc/group 을수정 kim 의파일에 access 가능한지확인
환경변수 (environment variable) 쉘은환경변수를가질수있다. 쉘의환경변수는응용프로그램에서도이용가능 환경변수를보려면 $ printenv $printenvlang bash 에서의환경변수설정 $ variable=value ( 쉘에서환경변수변경 ) $ export variable ( 환경변수값을다른프로세스에전달 ) $ unset variable csh 에서의환경변수설정 % setenv variable value % unsetenv variable
find 파일위치검색 사용방법 find [ 경로 ] [ 옵션 ] [ 조건 ] [action] 사용예 find /etc name *.conf -print find /home -user fedora -print find ~ -perm 644 print i find /etc name *.conf exec vi {} ; find /home name.*.swp exec rm {} ;
파일압축 gzip 파일을압축하거나압축을푸는명령 압축파일의확장자는 gz 임. 사용예 사용예 gzip 파일명 파일명 을압축하여 파일명.gz 을생성함 gzip -d 파일명.gz 압축파일인 파일명.gz 의압축을풀어 파일명 을생성함
파일압축 ( 계속 ) bzip2 파일을압축하거나압축을푸는명령 파일을압축하거나압축을푸는명령 압축파일의확장자는 bz2 임. gzip 보다압축율이높음. 사용예 bzip2 파일명 파일명 을압축하여 파일명.bz2 를생성함 bzip2 -d 파일명.bz2 압축파일인 파일명.bz2 의압축을풀어 파일명 을생성함
tar 확장명 tar 로묶음파일을만들어주거나 tar 화일의묶음을풀어줌 Tape ARchive 사용예 tar cvf xinetd.tar /etc/xinetd.d tar cvfz xinetd.tar.gz /etc/xinetd.d tar cvfj xinetd.tar.bz2 tar /etc/xinetd.d d tar xvf xinetd.tar tar xvfz xinetd.tar.gz t tar xvfj xinetd.tar.bz2
패키지설치프로그램 tar (Tape ARchive) rpm (Redhat Package Manager) yum (Yellowdog Update Manager)
RPM (Redhat Package Manager) 윈도우즈의 setup.exe 와비슷하게프로그램을쉽게설치할수있도록해주는설치프로그램 파일명 ( 패키지명 ) 형식 < 패키지이름 >-< 버전 >-< 릴리즈번호 >.< 아키텍처 >.rpm ( 예 ) firefox-1.0.4-4.i386.rpm (p.179 참조 )
rpm 사용법 설치 : rpm Uvh < 패키지화일 > U : Update v : verbose h : show hash mark 삭제 : rpm e < 패키지이름 > 질의 rpm qa < 패키지이름 > < 패키지 > 가설치되었는지확인 rpm qf < 파일의절대경로 > < 파일 > 이포함된패키지를보여줌 rpm -ql < 패키지이름 > < 패키지 > 에포함된파일을 listing rpm qi < 패키지이름 > < 패키지 > 의 information i 을보여줌
rpm 의단점의존성이있는프로그램의경우제대로설치되지않는다. X 윈도우가설치되지않은상태에서 Firefox 를설치할경우의존성때문에설치되지 Firefox 가설치되지않는다.
Fedora 4 번 CD-ROM 을마운트 rpm Uvh mc-4.6.1a-0.9.i386.rpm 의존성문제가없어정상적으로설치됨. rpm Uvh dovecot-0.99.14-4.fc4.i386.rpm 의존성문제가있어설치가되지않음.
YUM (Yellowdog Update Manager) rpm 명령의패키지의존성문제를해결특정패키지를설치하고자할경우이와의존성이있는다른패키지를자동으로먼저설치해준다. 인터넷을통하여 Fedora 의 rpm 파일이저장된저장소 (Repository) 에서자동다운로드하여설치한다. (mirror site) 저장소의 URL 주소는 /etc/yum.repos.d 디렉토리에저장되어있다.
yum 사용법 yum install < 패키지이름 > yum remove < 패키지이름 > yum info < 패키지이름 > yum check-update 시스템에설치된패키지중 update 가능한패키지목록출력 yum update < 패키지이름 > 필요한경우주어진패키지를 update 해줌패키지이름을명시하지않을경우모든패키지를 update 함.
시스템재설정 (system-config-xxxx) system-config-users 사용자관리 system-config-network 네트워크환경설정 t fi di l X 윈도우환경설정 system-config-display X 윈도우환경설정 system-config-bind 네임서버설정 system-config-httpd 웹서버설정 system-config-nfs NFS 서버설정 system-config-packages 패키지추가설치 system-config-printer 프린터설정 system-config-samba Samba 서버설정 t fi it l l 보안수준설정 system-config-securitylevel 보안수준설정 설치를위해서 yum y y install system-config-xxxx 를사용
X 윈도우의해상도변경 VMwareTools 가설치되었는지확인 $ rpm q q VMwareTools VMwareTools-5.5.1-19175 system-config-display y 하드웨어 >> 모니터유형설정 Samsung >> SyncMaster 4S 선택 설정 >> 해상도를선택하여해상도변경 /etc/x11/xorg.conf 에설정내용반영 X 윈도우를재시작
Vmware Tools 설치 Vmware 에서페도라를설치한후에, VM >> Install Vmware Tools 를실행 V T l 551 i386 설치 VmwareTools-5.5.1-xxx.i386.rpm 설치 % rpm - Uvh VmwareTools-5.5.1-xxx.i386.rpm
네트워크관련 필수용어 IP 주소 192.168.116.200 네트워크주소 (C class 인경우 ) 192.168.116.0 168 116 브로드캐스트 (C class 인경우 ) 192.168.116.255 서브넷마스크 (C class 인경우 ) 255.255.255.0 게이트웨이 ( 라우터 ) DNS 네트워크장치이름 /dev/eth0, /dev/eth1
네트워크관련 ( 계속 ) 네트워크관련명령어 system-config-network network / system-config-network-tui network tui 네트워크설정 service network restart 변경된설정내용을시스템에적용 ifconfig < 장치이름 > 장치의 IP 주소설정정보를출력 nslookup DNS 서버의작동을테스트 ping 해당컴퓨터가네트워크상에서응답하는지를테스트
네트워크관련 ( 계속 ) 네트워크관련주요설정파일 /etc/sysconfig/network 네트워크의기본적인정보가설정 /etc/sysconfig/network-scripts/ifcfg-eth0 eth0 장치에설정된네트워크정보 $ service network restart로설정반영 $ ping IPaddress 로네트워크작동여부확인 /etc/resolv.conf conf DNS 서버정보및호스트이름이설정 DNS 를사용하는프로그램에서실시간으로확인
네트워크관련 ( 계속 ) 네트워크가안될경우 네트워크설정이올바른지확인 IP 주소 서브넷마스크 게이트웨이 DNS 네트워크인터페이스 (eth0) 가 up 상태인지확인 ifconfig service network start VMware 에서 네트워크유형이 NAT 인지확인 NAT service 가 started 인지확인
cron 주기적으로반복되는일을자동적으로실행될수있도록설정 관련데몬 ( 서비스 ) 은 crond 관련파일은 / / b 관련파일은 /etc/crontab /etc/crontab 파일 시간별일별주별월별 /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
사용예 1. /etc/crontab / 의내용을다음과같이수정 00 * * * * root run-parts /etc/anydir 2. /etc/anydir 에쉘스크립트작성 3. crond 데몬을 ( 재 ) 시작 $ service crond status $ service crond restart t $ service cornd start
쉘스크립트 #!/bin/bash set $(date) fname= backup-$2$3.tar.gz tar zcvf /backup/$fname /home
at 일회성작업을예약 한번만실행된후에소멸됨 사용법 at < 예약시간 > $at3:00am tomorrow $ at 11:00pm January 30 $atnow+ 1hour at l $ t < 작업번호 > $ atrm < 작업번호 >
사용예 $ at now + 1 min at> cat a.c b.c > all.c at > rm a.c b.c at> mv all.c a.c ^D $at l
파이프 (pipe) p 두개의프로그램을연결해주는연결통로의의미 문자를사용함 ( 키를 Shift 와함께누른글자 ) 사용예 $ ls -l /etc more $ cat a.c tr a-z A-Z more $ cat a.c tr n sort uniq > dict 필터 (filter) 필요한것만걸러주는명령어 사용예 $ ps -ef grep bash
리다이렉션 (redirection) 표준입출력의방향을바꿔줌 표준입력은키보드, 표준출력은모니터이지만이를파일로변경시켜줌 사용예 $ ls -l > aa.ls $ ls l >> aa.ls $ cat < a $ sort < aa.lst > bb.lst $ gcc a.c > error $ gcc a.c >& error
프로세스 (Process) 하드디스크에저장되어있는프로그램이메모리에로딩되어수행중인상태에있는것 용어설명 포그라운드프로세스 (Foreground Process) 백그라운드프로세스 (Background Process) 프로세스번호 작업번호 부모프로세스와자식프로세스 백그라운드로프로세스실행하기 $ gcc bigprogram.c &
관련명령어 ps kill pstree jobs bg fg
데몬 (Daemon) 서비스 (service) 라고도하며, 주로서버프로세스를지칭함. 데몬은눈에는보이지않지만, 현재시스템에서활동중인프로세스이므로백그라운드프로세스의일종
서버데몬의유형 Standalone 타입의데몬 독자적으로구동되어서서비스를제공하는데몬웹서버 (httpd), DB 서버 (mysqld), 센드메일서버 (sendmail) 등 실행및종료 service 데몬이름 start/stop/restart Standalone 타입데몬의실행스크립트파일은 /etc/init.d/ 디렉토리에주로들어있음 system-config-services 로데몬프로세스지정
inetd 타입의데몬 일명 슈퍼데몬 이라고도부름 자신이직접서비스를하지않고, 외부에서특정서비스를요청할경우에자신에게종속된데몬을구동시킨후에해당데몬에게서비스를하도록연결시켜줌 예 : telnet, ftp 등 xinetd 타입의데몬설정파일은 /etc/xinetd.d/ 디렉토리에들어있음
응급복구 root 사용자의비밀번호를잊어버렸을 Grub 를편집하여런레벨 1 로부팅 비밀번호없이로그인됨 현사용자를확인하면 root 사용자임 passwd 명령으로현사용자 (root) 의비밀번호변경 재가동
GRUB 부트로더 전통적으로 LILO 가사용되었지만, 페도라에서는기본적으로 GRUB 부트로더를제공 특징 부트정보를사용자가임의로변경하여부팅가능 다른여러가지운영체제와멀티부팅이가능 대화형설정을제공해줘서, 커널의경로및 파일명만알고있으면부팅이가능 설정파일 /boot/grub/grub.conf 파일 (/etc/grub.conf 는링크된파일 )
커널컴파일 커널과모듈의개념 필요시로딩 / 언로딩 모듈 /lib/modules/ 커널버전 / 부팅시에는꼭필요하지않거나 응용프로그램부팅시에는꼭필요하지않거나, 셸 언제사용할지유동적인정보 커널 하드웨어 Memory 영역 /boot/vmlinuz- / 커널버전파일이부팅시메모리에로딩부팅시꼭필요한부분만포함 ( 권장 )
커널컴파일 ( 계속 ) 커널컴파일 ( 업그레이드 ) 순서 현커널버전확인커널소스다운로드커널소스압축풀기 #uname -r #finger @ftp.kernel.org #cd /usr/src 에다운로드 # tar xvfj linux-2.6.13.1.tar.bz2 # cd linux-2.6.13.1 커널환경설정커널설정초기화추가패키지설치 #make xconfig #make mrproper #yum install qt-devel 이전정보삭제커널컴파일및설치 부트로더확인 #make clean # make #cat /etc/grub.conf # make modules_install # make install # ls l /boot
정리 시스템의시작과종료 자동완성, 도스키, 가상콘솔, 에디터사용 마운트, 사용자및그룹관리 파일의소유권과허가권 RPM 및 YUM 파일압축및묶기 Cron, At, 시스템재설정명령어 네트워크개념과관련명령어 서버데몬과부트로더 커널컴파일