동서울대학교컴퓨터정보과 1. OS(Operating System)? 운영체제 (OS: Operating System) 시스템하드웨어관리및응용소프트웨어실행위한하드웨어추상화플랫폼과공통시스템서비스제공시스템소프트웨어 운영체제 Page 4 사용자 1 사용자 2 사용자 n 이론적으로상당히복잡, 여러상용및시험제품들이존재 가장중요한제어프로그램 ( 아무리사소한컴퓨터라도운영체제는있어야 ) 컴파일러 / 어셈블러 온라인게임 응용프로그램 문서편집기 하드웨어를가장효율적으로제어할수있도록하는것이목적 운영체제 (O/S) 하드웨어와의중요한인터페이스로서동작 (device driver) 사용자의작업을도우며, 다른프로그램이실행되는것을지원 ( 일반사용자는운영체제가있는지조차의식할필요가없으나, 실제로 system programmer 는운영체제의이해가프로그램작성에중요한요소임 ) 3 컴퓨터하드웨어 UNIX, Windows, Linux. 4 UNIX History (1/4) UNIX? OS 종류 PC 용 MS-DOS, Window3.1, Window95, Window98 Mac OS X Server 용 Windows NT, Windows Server Unix 계열 (System V, SunOS, Solaris, Ultrix (DEC), AIX (IBM), IRIX, Xenix), Linux(PC & Server 용 ) 임베디드단말장치용 RTOS(Real Time OS) Window CE, Pocket PC, Windows Mobile Android, ios 1969 년 AT&T 의벨연구소 (Bell Lab.) 에서 Ken Thompson 에의해개발 운영체제가곧 UNIX 다? (Windows 출현이전에는절반이상 Yes, 현재는 No!) UNIX 운영체제의쓰임 : 중대형컴퓨터, 산업계 ( 은행, 통신등 ) 1969 년 출생 Bell Lab. 의연구원인 Ken Thompson 이어셈블리언어로개발 ( 위키 : http://en.wikipedia.org/wiki/ken_thompson) 어원 : 기존에사용하던운영체제였던 MULTICS 는그명칭만큼의원하는성능을갖지못함 한가지일이라도잘한다는의미를함축하고있는 UNI 라는부분을넣어 UNIX 라는운영체제가개발됨 처음버전은단일사용자시스템으로서네트워크능력이없고프로세스간메모리능력이매우빈약한메모리관리기능을가지고있는원시적운영체제 5 1
UNIX History (2/4) 1972 년 성장 같은연구소 (Bell Lab.) 에서연구원동료인 Dennis Ritchie 가 C 언어개발 C 언어를이용하여유닉스를다시만들것을제안 ( 위키 : http://en.wikipedia.org/wiki/dennis_ritchie) 유닉스시스템은다른운영체제에대해커다란장점을가지게됨 High Level Language 로작성되어소스코드이해하기가매우쉬움 UNIX 의진화 처음의유닉스는상업용이아니었고연구용으로개발되었기때문에소스코드와함께대학에무상으로제공 UC Berkeley 대학의대학원생들은이소스를연구하여독자적인 BSD 유닉스라불리는독자적인유닉스버전을만들어일반인에게공개함 UNIX 가여러곳에서연구, 발전하는반면에많은버전의 UNIX 가개발되는혼란을초래 표준화의필요성대두 UNIX History (3/4) UNIX 의표준화 (POSIX: Portable Operating System Interface) IEEE(Institute Of Electrical and Electronic Engineer) 에서제안 소스레벨에서호환성을보장하는유닉스 대부분의단체, 회사들이 POSIX 를지원하며, 현재사용되는대부분의 UNIX 들도 POSIX 를따르고있음 위키 : http://ko.wikipedia.org/wiki/posix UNIX 의두가지버전 1. AT&T 사가상품화한 SYSTEM V 계열 2. BSD(Berkeley Software Distribution) 사가만든 BSD 계열 유닉스는개발당시부터다중사용자와자원공유를큰목적으로개발했기때문에네트워킹기능이강력 인터넷서버로서각광받은이유 유닉스의이전버전들은 System V 와 BSD 4.3 으로부터각각유래, 새로운버전들은양쪽유닉스의특성들을대부분포함 UNIX History (4/4) UNIX의대중화 Linux의출현 Free software, open source 추구 GNU Project와더불어대중성을가짐 현재 200여개넘는배포판존재 (software 자체는무료, maintenance는유료 ) Open architecture 추구를통해 PC에서슈퍼컴까지활용분야넓어짐 2. 리눅스 (Linux)? Unix 계열운영체제 핀란드헬싱키대학생리누스베네딕트토발즈 (Linus Benedict Torvals) 가처음커널 (Kernel) 개발 미닉스 (MINIX) 라는교육용운영체제참조하여개발 리눅스개발소식을 comp.os.minix 뉴스그룹에포스팅 1991 년 8 월 26 일 리눅스탄생일 GNU( 그누 : Gnu is not Unix) 프로젝트 리눅스커널에응용프로그램제공 GNU/ 리눅스 리눅스재단 : 2007 년설립 10 리눅스특징 공개소프트웨어, 무료사용 유닉스와의완벽한호환성유지 서버용운영체제로많이사용 편리한 GUI 환경제공 리눅스의구조 커널 (Kernel): 리눅스의핵심 프로세스 / 메모리 / 파일시스템 / 장치관리 컴퓨터의모든자원초기화및제어기능 셸 (Shell): 사용자인터페이스 명령해석 프로그래밍기능 리눅스기본셸 : 배시셸 ( 리눅스셸 ) 응용프로그램 각종프로그래밍개발도구 문서편집도구 네트워크관련도구등 < 리눅스의구조 > 리눅스배포판 리눅스커널, GNU 소프트웨어및여러가지자유소프트웨어로구성된유닉스계열운영체제 회사차원관리되는배포판 레드햇 (Redhat) 리눅스, 우분투 (Ubunt), 수세 (Suse) 리눅스등 커뮤니티차원관리되는배포판 데비안 (Debian), 젠투 (Gentoo) 리눅스등 최근약 300 여배포판존재함 11 12 2
2004 2013 리눅스의개요 [p76] 리눅스커널 1991 SLS 데비안 1993 슬랙웨어 1993 1994 S.u.S.E 1998 SuSE 1998 Ubuntu 2006 opensuse JAVA 2003 Ubuntu 13.10 2008 안드로이드 리눅스 (Linux) = 무료유닉스 (Free Unix) 1991 년 리누스토발즈 (Linus Torvalds) 가버전 0.01 을최초로작성 1992 년 0.02 버전을공개하면서시작됨 리누스토발즈는커널 (Kernel) 만개발함 배포판의구성 CentOS 리눅스도많은배포판중한가지임. Mandrake 레드햇 페도라 페도라 1994 Core 20 2003 2014 [ 주요리눅스배포판의계통도 ] CentOS 2003 13 14 GNU 프로젝트 [p77] 1984 년리차드스톨만 (Richard Stallman) GNU 프로젝트가시작 목표 : 모두가공유할수있는소프트웨어 를만드는것 리차드스톨만 1985 년자유소프트웨어재단 (FSF, Free Software Foundation) 설립 목표 GNU 프로젝트에서제작한소프트웨어를지원함으로써컴퓨터프로그램의복제, 변경, 소스코드의사용에대한제한을철폐하는것 GPL(General Public License) 을따름. 이라이선스는자유소프트웨어 (Free Software) 의수정과공유의자유를보장함 프리웨어 (Freeware, 무료소프트웨어 ) 라는개념을뛰어넘어서진정한자유 (Freedom) 에대한개념 자유소프트웨어는심지어무료로얻은소프트웨어를유상으로판매할자유도보장 15 커널 [p79] http://www.kernel.org 에서최신버전무료다운로드 커널변천사 커널버전의미 ( 예 : 3.17.4 ) 3 는주버전 (Major Version) 17 은부버전 (Minor Version) 4 는패치버전 (Patch Version) 2015 년 4 월부터커널 4.0 버전을배포하기시작함 배포판에포함된기본커널 사용자가직접최신커널로업그레이드가능 ( 커널업그레이드 ) 16 레드햇리눅스와 CentOS 리눅스 (1) [p81] 전세계적으로가장유명한배포판중하나가레드햇 (Red Hat) 사에서제작한 레드햇리눅스 (Red Hat Linux) 레드햇리눅스와 CentOS 리눅스 (2) [p82] 레드햇엔터프라이즈리눅스와 CentOS 리눅스변천사 레드햇엔터프라이즈리눅스 (Red Hat Enterprise Linux) 상용판매중 CentOS 공개된레드햇엔터프라이즈리눅스의소스코드를그대로가져와서, 로고만변경한후에다시컴파일 ( 또는빌드 ) 해서만든것 기업에서는별도의비용이있다면레드햇엔터프라이즈리눅스를구매해서사용하면되며, 비용을절감하고싶다면동일한리눅스인 CentOS 를사용하면됨 레드햇엔터프라이즈리눅스와 CentOS 리눅스는같은것이라고봐도무방함 CentOS 7 이제작된흐름은 Fedora 19(2013 년 7 월 ) RHEL 7(2014 년 6 월 ) CentOS 7(2014 년 7 월 ) 17 18 3
CentOS 7 을설치하기위한하드웨어요구사항 [p82] 1 CPU 1GHz 보다빠른프로세서 2 하드디스크여유공간 10GB 이상의여유공간권장 ( 추가설치에따라서달라질수있음 ) 3 메모리 최소 1GB(512MB 도설치가능 ) 4 그래픽카드 최신그래픽카드대부분을지원함 Vmware 를사용할경우에는훨씬높은사양이요구됨. 19 권장 Linux 실습환경 Intel Core i3/5/7 (2 세대 ) 이후 64bit, 가상화지원필수 RAM 6GB 이상 내장 SSD 또는외장 SSD(USB 3.0) 의 50GB 이상여유분 64bit Windows 7 이후 최소 Linux 실습환경 Intel 셀러론 (2 세대 ) 이후 64bit, 가상화지원필수 RAM 3GB 하드디스크 50GB 이상여유분 32bit Windows XP 이후 21 1. Linux 실습환경구축방법 1. 최신 CentOS-7 Linux 버전다운로드 http://www.centos.org/ 2. PC 에설치방법 방법 1 : HDD 포맷후직접단독설치 http://mslee89.tistory.com/92 참조 centos USB 만들기 : http://www.tutorialbook.co.kr/entry/linux- %EB%A6%AC%EB%88%85%EC%8A%A4- %EC%84%A4%EC%B9%98%EC%9A%A9-USB- %EB%A7%8C%EB%93%A4%EA%B8%B0-CentOS-Ubuntu- %EB%93%B1 참조 방법 2 : Windows/CentOS 멀티부팅환경구축 ( 수업시활용 ) 가상머신 Vmware 사용 방법 3 : UCentOS 부팅 USB 만들기 Portable CentOS-7 USB 22 (1) CentOS-7 다운로드 http://www.centos.org/download/ DVD ISO 다운로드 ftp mirror 사이트접속다운로드 http://dream.dsc.ac.kr 접속 Id : linux Pw : 2211@@ 강의자료실 /CentOS-7 리눅스설치파일폴더내 CentOS-7-x86_64-DVD-1511.iso 파일다운로드 (2) Portable Ubuntu USB 만들기 장점 USB 에우분투설치후다른 PC 에서언제든사용가능 공용 PC 에서도나만의 OS 이용가능 : 보안문제해결 USB 하나만으로언제어디서나개인작업환경유지 포터블 USB 만들기 1) 최신 CentOS-7 다운 http://www.centos.org 2) USB 설치프로그램 (Universal USB Installer) 다운 http://www.pendrivelinux.com/universal-usb-installer-easy-as- 1-2-3/ 23 24 4
(3) CentOS-7 USB 부팅방법 3) Universal USB Installer 프로그램실행 0) 16GB 이상 USB 준비 1) Ubuntu 선택 2) 다운받은우분투 iso 파일경로지정 3) 설치 USB 드라이버선택 4) Persistent file size 지정 - usb 우분트실행작업내용저장 PC CMOS 부팅순서재설정 PC Windows 종료 전원켜고부팅될때 Delete 키선택 1) Bios Setup 화면진입 2) System - Boot sequence 선택 3) 부팅을원하는 USB 를최우선으로목록순서조정 ( 해당항목선택후 U 를누르면위로, D 를누르면아래로이동 ) 4) Space 키를눌러부팅여부를선택 5) 설정저장 : F10 키 5) Create 버튼실행 6) CentOS USB 메모리삽입후 전원다시켜기 25 26 2. 가상머신의소개와설치 [p28] 지금쓰는 Windows 를그대로사용하면서도여러대의리눅스서버를운영하는효과를내는프로그램 1 대의 PC 에서추가로 4 개의가상머신을구동한화면 가상머신과가상머신소프트웨어의개념 (1) [p29] 컴퓨터에설치된운영체제 ( 호스트 OS) 안에가상의컴퓨터를만들고, 그안에또다른운영체제 ( 게스트 OS) 를설치 / 운영할수있도록제작된프로그램 PC 에이미설치되어있는 Windows 를호스트운영체제 (Host Operating System, 호스트 OS) 라고부르고, 가상머신에설치할그외의운영체제를게스트운영체제 (Guest Operating System, 게스트 OS) 라고부름 멀티부팅 (Multi-Booting) 과는개념이다름 27 28 가상머신과가상머신소프트웨어의개념 (2) [p31] 1 대 PC 에 1 개 OS 1 대 PC 에 5 개 OS 가상머신프로그램다운로드 Vmware Player 7 다운로드 http://www.vmware.com/kr 29 30 5
가상머신종류와 VMware Player 설치 (1) [p32] VMware Workstation 과 VMware Player 비교 가상머신종류와 VMware Player 설치 (2) [p34] VMware Player 의설치를위한하드웨어사양요약 32bit 전용의구형 CPU는지원하지않음 31 32 < 실습 1> 무료 VMware Player 를설치 [p34] VMware Player 7 설치 3. 가상머신에 CentOS-7 설치하기 (1) 가상머신설치 VMware Player 6.0 이후버전은네트워크설정기능이제거되었으므로, VMware Player 5.0.4 버전을사용하거나, VMware Workstation 은 9.0 이후버전모두사용가능함. 결과화면 (Player 7 & Workstation 9.0.4) 1) 새로운 VM 생성선택 2) 옵션선택 33 34 3) 설치 OS 지정 4) 가상머신설치위치지정 35 36 6
한글키보드추가 37 38 가상머신의겉모양 [p41] 가상머신 ( 가짜컴퓨터 ) 가생성된화면 (VMware Player 5.0.4) < 실습 2> 가상머신 4 대생성 [p42] 앞으로계속사용할가상머신 4 대를생성 P31 의 [ 그림 1-3] 과 P57 의 [ 표 1-3] 을참조해서생성. 가상머신 3 대가생성된결과화면 39 40 이책에서사용할가상머신의하드웨어사양 [p57] VMware 특징 ( 가상머신장점 ) [p59] 1 1 대컴퓨터로실무환경과유사한네트워크컴퓨터환경구성가능 2 운영체제의특정시점을저장하는스냅숏기능사용가능 VMware Player 에서스냅샷효과를내기위해서는 P124 <step 12> 참조 3 하드디스크등의 H/W 를내맘대로여러개장착해서테스트가능 4 현재컴퓨터상태를그대로저장후, 다음사용할때현재상태를이어서구동가능 (Suspend 기능 ) 41 42 7
< 실습 3> VMware Player 닫기버튼의기능 [p62] 가상머신을닫을때, Suspend 와 Power Off 의기능을구분함 Suspend 된화면 < 실습 4> 가상머신이모니터화면전체사용 [p64] 게스트 OS 를전체화면으로꽉채워서사용해보자. 1024x768 이하해상도의 PC 에서유용하게사용 왼쪽 Ctrl + Alt 는호스트 OS 와가상머신을포커스를이동함 전체화면사용 가상머신안에서왼쪽 Ctrl + Alt + Enter 키 43 44 여러개의가상머신을동시에부팅 [p65] 가상머신 2 개를동시에실행한 VMware Player 네트워크정보확인 [p66] 호스트 OS 에서 IP 정보확인 상단의탭으로분리된 VMware Workstation 환경 45 46 < 실습 5> VMnet8 의 IP 주소설정 [p67] 책의네트워크환경상세 [p69] VMware Player 에서책과동일한네트워크환경을구성한다 Virtual Network Editor VMware Workstation 은 [Edit] [Virtual Network Editor] 47 48 8
< 실습 6> 호스트 OS 와게스트 OS 사이의파일전송 [p71] C:\Windows\Media\ 폴더의파일을 ISO 로만든후, 게스트 OS 로전송한다. FreeISO 사용법을익힌다. 물리적인 CD/DVD 대신에 ISO 파일을사용한다. 실습화면 49 책의네트워크환경상세 [p69] 52 3 대의 CentOS 설치 [p86] < 실습 1> Server 설치 CentOS 7 DVD ISO 파일을이용해서, Server 를설치 개발및창조를위한워크스테이션 패키지선택설치 (P90. [ 그림 3-9]) 파티션은 2 개로수동분할 (P94. [ 그림 3-16]) 일반사용자이름을 centos 로지정 (P96. [ 그림 3-20]) 결과화면 ( 설치시작과설치완료화면 ) < 실습 2> Client 설치 [p103] Client 설치 대부분기본값으로설치진행 < 실습 3> Server(B) 설치 [p106] 텍스트모드로사용할 Server(B) 설치 최소설치 ' 로설치진행 파티션은 2 개로분할 53 54 9
< 실습 5> Server 의보안및네트워크설정 [p112] 앞으로실습이교재와동일하도록 Server 의보안과네트워크와관련된설정변경 설정이완료된가상머신을스냅숏 (= 백업 ) 실습화면 (Server 의네트워크설정변경 ) < 실습 6> Client 의보안및네트워크설정 [p128] Client 설정변경 설정이완료된가상머신을스냅숏 (= 백업 ) 실습화면 (Client 의배경화면변경 ) 55 56 < 실습 7> Server(B) 의보안및네트워크설정 [p132] 텍스트모드인 Server(B) 의설정변경 설정이완료된가상머신을스냅숏 (= 백업 ) 실습화면 (Server(B) 의화면해상도변경 ) WinClient 설치 [p139] < 실습 8> Windows Client 를설치 평가판 Windows 클라이언트설치 Windows XP 이후의어떤것도관계없슴 실습화면 (Windows Client 설치화면 ) 57 58 CentOS 설치된가상머신설치하기 1) dream.dsc.ac.kr 서버의강의자료실에서 2) 기설치된압축파일다운 i) GUI Client : CentOS-client2.exe Ii) GUI Server : CentOS-Server2.exe 3) 다운파일실행 HDD 에폴더지정후 압축품 60 10
4) Vmware 실행 Open a Virtual Machine 선택 압축푼폴더선택 client.vmx 또는 sever.vmx 파일선택 5) Play virtual machine 선택 주 ) 처음실행시 대화상자 I moved it 반드시선택할것 6) 부팅후로그인 ID : centos, PW: centos ID : root, PW: password 7) 첫로그인화면 61 62 시스템종료절차 1) 우측상단사용자 ID 마우스우측버튼클릭 컴퓨터끄기 CentOS 7 설치후추가로변경할내용 [p109] < 실습 4> 가상머신메모리조절 3 대의가상머신을 PC 의메모리상황에맞게메모리할당조절 P57 의 [ 표 1-3] 참조 실습화면 (Server 의메모리조절 ) 63 64 시작과종료 [p146] 종료하는방법 1 바탕화면의 [ 사용자이름 ] [ 컴퓨터끄기 ] < 컴퓨터끄기 > 2 터미널 / 콘솔에서시스템종료명령입력 shutdown P now, halt p, init 0 시스템재부팅 1 바탕화면의 [ 사용자이름 ] [ 컴퓨터끄기 ] < 다시시작 > 2 터미널 / 콘솔에서시스템재부팅명령입력 shutdown -r now, reboot, init 6 로그아웃 1 바탕화면의 [ 사용자이름 ] [ 로그아웃 ] 2 터미널 / 콘솔에서시스템종료명령입력 logout 또는 exit # 프롬프트는 root 사용자 $ 프롬프트는일반사용자 66 11
가상콘솔 [p148] 쉽게 가상의모니터 라생각하면됨. CentOS 는총 6 개의가상콘솔제공. 각가상콘솔로이동하는단축키 Ctrl+ Alt + F2 ~ F6 (Ctrl + Alt + F1 은 X 윈도우모드 ) < 실습 1> 여러명의사용자가동시접속 멀티유저의환경실습 가상콘솔기능활용 런레벨 (Runlevel) [p151] RunLevel init 명령어뒤에붙는숫자 이번실습은 Windows 버전 /Vmware 버전 / 키보드종류에따라서잘수행되지않을수있음. 대신 chvt 가상콘솔번호 명령을사용해도됨. 런레벨모드확인 /lib/systemd/system 디렉터리 runlevel?.target 파일확인 67 68 < 실습 2> 시스템에설정된런레벨을변경 [p152] 런레벨개념파악 런레벨변경방법파악 실습화면 ( 런레벨 3 로변경 ) 자동완성과히스토리 [p154] 자동완성이란? 파일명의일부만입력한후에 Tab 키를눌러나머지파일명을자동완성기능을말함. 예 ) cd /etc/sysconfig/network-scripts/ 를입력하려면 cd /et[tab 키 ]sysco[tab 키 ]network[tab 키 ] 자동완성기능은빠른입력효과도있지만, 파일명이나디렉터리가틀리지않고정확하게입력되는효과도있으므로자주활용된다. 도스키란? 이전에입력한명령어를상 / 하화살표키를이용해서다시나타내는기능을말함. 69 70 < 실습 3> 자동완성과도스키 [p155] 자동완성기능과도스키기능익힘 history 명령어기능확인 실습화면 (history 명령어 ) 에디터사용 [p158] < 실습 4> 에디터를사용하자 gedit 기본사용법학습 vi 사용법연습 vi 에디터사용법개요도 vi 는자주사용해야할기능이므로반드시익혀야한다. 71 72 12
< 실습 5> vi 의비정상종료시조치법 [p163] vi 에디터가비정상적으로종료시조치법학습 실습화면 (vi 의비정상종료후다시열었을때 ) vi 기능요약 [p165] 명령모드 입력모드 문자열을치환은 :%s/ 기존문자열 / 새문자열 행번호표시는 :set number 명령모드에서커서이동 73 74 vi 기능요약 [p165] 문자열을치환은 :%s/ 기존문자열 / 새문자열 행번호표시는 :set number 도움말사용법 [p167] man 페이지는섹션 1~9 까지로나뉨 명령모드에서삭제, 복사, 붙여넣기 man 명령어 를사용하면도움말출력 75 76 마운트와 CD/DVD 및 USB 메모리의활용 [p167] 물리적인장치를특정한위치 ( 대개는디렉터리 ) 에연결시켜주는과정 < 실습 6> CD/DVD 마운트 [p168] X 윈도우에서 CD/DVD 와 USB 사용법학습 텍스트모드에서 CD/DVD 와 USB 사용법학습 실습화면 (X 윈도우와텍스트모드에서 USB 마운트 ) 77 78 13
< 실습 7> 리눅스에서 ISO 파일을제작 [p180] CD 레코딩명령어 genisoimage 사용법학습 ISO 파일을리눅스에서마운트해서사용법학습 리눅스기본명령어 (1) [p183~p186] ls Windows 의 dir 과같은역할, 해당디렉터리에있는파일목록나열예 ) # ls /etc/sysconfig 실습화면 (ISO 파일생성 ) cd 디렉터리이동예 ) # cd../etc/sysconfig pwd 현재디렉터리전체경로출력 rm 파일또는디렉터리삭제예 ) # rm -rf abc. ( 현재디렉터리 ).. ( 현재의상위디렉터리 ) 리눅스는별도의숨김파일 (Hidden File) 이라는속성이존재하지않음. 파일명이나디렉터리의제일앞글자를. 으로하면자동으로숨김파일이됨 79 80 리눅스기본명령어 (2) [p183~p186] cp 파일이나디렉터리복사예 ) # cp abc.txt cba.txt touch 크기가 0 인새파일생성, 이미존재하는경우수정시간변경예 ) # touch abc.txt mv 파일과디렉터리의이름변경또는위치이동시사용예 ) mv abc.txt www.txt mkdir 새로운디렉터리생성예 ) # mkdir abc 81 리눅스기본명령어 (3) [p183~p186] rmdir 디렉터리삭제. ( 단, 비어있어야함 ) 예 ) # rmdir abc cat 텍스트로작성된파일을화면에출력예 ) # cat a.txt b.txt head, tail 텍스트로작성된파일의앞 10 행또는마지막 10 행만출력예 ) # head anaconda-ks.cfg more 텍스트로작성된파일을화면에페이지단위로출력예 ) # more anaconda-ks.cfg 82 리눅스기본명령어 (4) [p183~p186] less more 와용도가비슷, 기능이더확장된명령예 ) # less anaconda-ks.cfg file File 이어떤종류의파일인지를표시예 ) # file anaconda-ks.cfg 사용자와그룹 (1) [p186~p188] 리눅스는다중사용자시스템 (Multi-User System) 임 기본적으로 root 라는이름을가진수퍼유저 (Superuser) 가있으며, 모든작업을할수있는권한이있음 모든사용자를하나이상의그룹에소속되어있음 사용자는 /etc/passwd 파일에정의되어있음 clear 명령창을깨끗하게지워줌예 ) # clear 83 각행의의미는다음과같음사용자이름 : 암호 : 사용자 ID: 사용자가소속된그룹 ID: 전체이름 : 홈디렉터리 : 기본셸 84 14
사용자와그룹 (2) [p187~p188] 사용자비밀번호는 /etc/shadow 파일에정의되어있음 그룹은 /etc/group 파일에정의되어있음 사용자와그룹관련명령어 (1) [p188~p190] useradd 새로운사용자를추가예 ) # useradd newuser passwd 사용자의비밀번호를지정하거나변경예 ) # passwd newuser 사용자생성시옵션 -u : ID 지정 -g : 그룹지정 -d : 홈디렉터리지정 -s : 셸지정 각행의의미는다음과같음그룹명 : 비밀번호 : 그룹 id: 그룹에속한사용자명 85 usermod 사용자의속성을변경예 ) # usermod -g root newuser userdel 사용자를삭제예 ) # userdel newuser 86 사용자와그룹관련명령어 (2) [p188~p190] chage 사용자의암호를주기적으로변경하도록설정예 ) # chage -m 2 newuser groups 현재사용자가속한그룹을보여줌예 ) # groups groupadd 새로운그룹을생성예 ) # groupadd newgroup 사용자와그룹관련명령어 (3) [p188~p190] groupdel 그룹을삭제예 ) # groupdel newgroup gpasswd 그룹의암호를설정하거나, 그룹의관리를수행예 ) # gpasswd newgroup groupmod 그룹의속성을변경예 ) # groupmod -n newgroup mygroup 87 88 < 실습 8> 사용자와그룹관리연습 [p190] 사용자와그룹의생성 / 삭제 / 변경명령어연습 사용자와그룹의관련파일파악 X 윈도우에서사용자관리툴을확인 실습화면 (system-config-users) 파일과디렉터리의소유와허가권 (1) [p195~p197] 파일의리스트와파일속성 89 90 15
파일과디렉터리의소유와허가권 (2) [p195~p197] 파일유형 디렉터리일경우에는 d, 일반적인파일일경우에는 -가표시 파일허가권 (Permission) rw-, r--, r-- 3개씩끊어서읽음 (r은 read, w는 write, x는 execute 의약자 ) 첫번째 rw- 는소유자 (User) 의파일접근권한 두번째의 r-- 는그룹 (Group) 의파일접근권한 세번째의 r-- 는그외의사용자 (Other) 의파일접근권한 숫자로도표시가능 (8진수) 파일과디렉터리의소유와허가권 (3) [p195~p197] chmod 명령 파일허가권변경명령어 예 ) # chmod 777 sample.txt 파일소유권 (Ownership) 파일을소유한사용자와그룹을의미 chown/chgrp 명령 파일의소유권을바꾸는명령어 예 ) # chown centos.centos sample.txt 또는 # chown centos sample.txt 및 # chgrp centos sample.txt 91 92 < 실습 9> 파일의허가권및소유권연습 [p197] 파일의허가권에대한개념과명령어학습. 파일의소유권에대한개념과명령어학습및보안관련내용확인 실습화면 ( 소유권변경실패 ) 링크 [p201] 파일의링크 (Link) 에는하드링크 (Hard Link) 와심볼릭링크 (Symbolic Link 또는 Soft Link) 두가지가있음 심볼릭링크는 Windows 의바로가기아이콘과개념이비슷하다. 하드링크생성 : 하드링크파일 만하나생성되며같은 inode1 을사용 ( 명령 : # ln 링크대상파일이름링크파일이름 ) 심볼릭링크생성 : 새로운 inode2 를만들고, 데이터는원본파일을연결하는효과 ( 명령 : # ln -s 링크대상파일이름링크파일이름 ) 93 94 < 실습 10> 하드링크, 심볼릭링크연습 [p202] [ 그림 4-87] 의개념실습 프로그램설치를위한 RPM (1) [p204~p207] RPM(Redhat Package Manager) Windows 의 setup.exe 와비슷한설치파일 확장명은 *.rpm 이며, 이를 패키지 (Package) 라고부름. 실습화면 ( 링크실습화면 ) 파일의의미 x86_64 : 64 비트 CPU i386~686 : 32 비트 CPU src : 소스 noarch : 모든 CPU 95 패키지이름 - 버전 - 릴리즈번호.CentOS 버전. 아키텍처.rpm 패키지이름 : gedit 패키지 ( 프로그램 ) 의이름 버전 : 3.8.3 대개 3 자리수로구성. 주버전, 부버전, 패치버전 릴리즈번호 : 6 문제점을개선할때마다붙여지는번호 CentOS 버전 : el7 CentOS 에서배포할경우에붙여짐 아키텍처 : x86_64 64 비트 CPU 를의미 96 16
프로그램설치를위한 RPM (2-1) [p204~p207] 자주사용하는 RPM 명령어옵션 설치 : rpm -Uvh 패키지파일이름.rpm U ( 대문자 ) 패키지가설치 / 업그레이드 v 설치과정의확인 h 설치진행과정을 "#" 마크로화면에출력 삭제 : rpm -e 패키지이름 프로그램설치를위한 RPM (2-2) [p204~p207] 자주사용하는 RPM 명령어옵션 이미설치된패키지질의 rpm -qa 패키지이름 패키지가설치되었는지확인 rpm -qf 파일의절대경로 파일이어느패키지에포함된것인지확인 아직설치되지않은 rpm 파일에대한질의 rpm -qlp 패키지파일이름.rpm 패키지파일에어떤파일들이포함되었는지확인 rpm -qip 패키지파일이름.rpm 패키지파일의상세정보 97 98 프로그램설치를위한 RPM (3) [p204~p207] RPM 단점 의존성 문제 A 패키지가설치되기위해서 B 패키지가필요할경우, RPM 으로는해결이까다로움. 이를해결하기위해 YUM 이등장함 < 실습 11> rpm 패키지설치연습 [p208] RPM 명령어의사용법학습 RPM 파일의의존성문제파악 실습화면 (mc 패키지설치 ) 99 100 편리한패키지설치, YUM (1) [p210~p219] YUM(Yellowdog Updater Modified) 개념 rpm 명령의패키지의존성문제를완전하게해결됨. 인터넷을통하여필요한파일을저장소 (Repository) 에서자동으로모두다운로드해서설치하는방식 저장소의 URL은 /etc/yum.repos.d/ 디렉터리 YUM 기본적인사용법 기본설치 : yum install 패키지이름 주로 yum -y install 패키지이름 으로사용 -y 는사용자의확인을모두 yes 로간주하고설치를진행한다는옵션 RPM 파일설치 : yum localinstall rpm파일이름.rpm 업데이트가능한목록보기 : yum check-update 업데이트 : yum update 패키지이름 삭제 : yum remove 패키지이름 정보확인 : yum info 패키지이름 < 실습 12> yum 기본연습 [p212] 의존성문제가있는패키지를 yum 명령으로설치실습 실습화면 ( 의존성패키지자동다운로드 ) 101 102 17
편리한패키지설치, YUM (2) [p210~p219] YUM 고급사용법 패키지그룹설치 yum groupinstall 패키지그룹이름 편리한패키지설치, YUM (3) [p210~p219] YUM 작동방식설정파일 yum install 패키지이름 명령이작동하는방식 패키지리스트확인 yum list 패키지이름 특정파일이속한패키지이름확인 yum provides 파일이름 GPG 키검사생략 yum install --nogpgcheck rpm 파일이름.rpm CentOS 19 에서검증되지않은패키지를강제로설치할때사용 기존저장소목록지우기 yum clean all 103 104 편리한패키지설치, YUM (4) [p210~p219] YUM 작동방식설정파일 /etc/yum.conf 파일 : 특별히변경할필요없음 편리한패키지설치, YUM (5) [p210~p219] CentOS-Base.repo 파일 /etc/yum.repos.d/ 디렉터리 yum 명령을입력했을때검색하게되는네트워크의주소가들어있는여러개의파일이있음 /etc/yum.repos.d/ 디렉터리의 *.repo 파일 CentOS-Base.repo : [base], [extra] 만남기고 [updates] 부분은삭제했음. 즉, 출시시점의원본패키지만설치됨. 105 106 < 실습 13> yum 고급실습 [p219] CentOS DVD 에서직접설치하기위한방법확인 *.repo 파일을직접편집 네트워크와 DVD 를동시에사용하는효율적인방법확인 패키지그룹 을설치하는방법학습 실습화면 ( 네트워크와 DVD 를동시사용 ) [p226] 힌트 1 : 설치할패키지가많으므로 DVD에서설치 힌트 2 : 패키지환경그룹중에서 GNOME Desktop을설치 힌트 3 : 설치후에 startx 명령으로 X 윈도를시작 힌트 4 : 재부팅후깨진글자가나오면 2 2 c c 를입력 ( 라이선스동의화면임 ) 107 108 18
파일의압축과묶기 (1) [p227~p229] 파일압축 압축파일확장명은 xz, bz2, gz, zip, Z 등 xz 나 bz2 압축률이더좋음 파일압축관련명령 xz : 확장명 xz 로압축을하거나풀어준다예 ) xz 파일명 xz -d 파일명.xz bzip2 : 확장명 bz2 로압축을하거나풀어준다예 ) bzip2 파일명 bzip2 -d 파일명.bz2 bunzip2 : bzip2 -d 옵션과동일한명령어 gzip : 확장명 gz 으로압축을하거나풀어준다예 ) gzip 파일명 gzip -d 파일명.gz gunzip : gzip -d 옵션과동일한명령어 109 파일의압축과묶기 (2) [p227~p229] 파일묶기 리눅스 ( 유닉스 ) 에서는 파일압축 과 파일묶기 는원칙적으로별개의프로그램으로수행 파일묶기의명령어는 tar 이며, 묶인파일의확장명도 tar 임 파일묶기명령 (tar) tar : 확장명 tar 로묶음파일을만들어주거나묶음을풀어줌동작 : c( 묶기 ), x( 풀기 ), t( 경로확인 ) 옵션 : f( 파일 ), v( 과정보이기 ), J(tar+xz), z(tar+gzip), j(tar+bzip2) 사용예 # tar cvf my.tar /etc/sysconfig/ 묶기 # tar cvfj my.tar.xz /etc/sysconfig/ /etc/sysconfig/ 묶기 + xz 압축 # tar xvf my.tar tar 풀기 # tar xvfj my.tar.xz /etc/sysconfig/ xz 압축해제 + tar 풀기 110 파일위치검색 [p229~p230] find [ 경로 ] [ 옵션 ] [ 조건 ] [action] : 기본파일찾기 [ 옵션 ] -name, -user( 소유자 ), -newer( 전, 후 ), -perm( 허가권 ), -size( 크기 ) [action] -print( 디폴트 ), -exec ( 외부명령실행 ) 사용예 # find /etc -name "*.conf # find /bin -size +10k -size -100k # find /home -name "*.swp" -exec rm { } \; 시스템설정 [p231~p232] 날짜및설정 (system-config-date) 네트워크설정 (nmtui) 방화벽설정 (firewall-config) 서비스설정 (ntsysv) 그외설정 system-config-keyboard 키보드설정 system-config-language 언어설정 system-config-printer 프린터설정 system-config-users 사용자설정 system-config-kickstart 네임서버설정 which 실행파일이름 : PATH 에설정된디렉터리만검색 whereis 실행파일이름 : 실행파일, 소스,man 페이지파일까지검색 locate 파일이름 : 파일목록데이터베이스에서검색 111 112 CRON 과 AT (1) [p233~p235] cron 주기적으로반복되는일을자동적으로실행될수있도록설정 관련된데몬 ( 서비스 ) 은 crond, 관련파일은 /etc/crontab /etc/crontab 예 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 03 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly CRON 과 AT (2) [p233~p235] at cron 은주기적으로반복되는작업을예약하는것이지만, at 는일회성작업을예약 사용예 예약 : # at < 시간 > 예 ) # at 3:00am tomorrow 내일새벽 3 시 # at 11:00pm January 30 1 월 30 일오후 11 시 # at now + 1 hours 1 시간후 at> 프롬프트에예약명령어입력후 [Enter] 완료되면 [Ctrl] + [D] 첫줄은매시간 1분에 /etc/cron.hourly 디렉터리안에있는명령들을자동실행 113 확인 : # at -l 취소 : # atrm < 작업번호 > 114 19
< 실습 14> cron, at 실습 [p235] CRON 을활용하여매월 15 일새벽 3 시 1 분에 /home 디렉터리와그하위디렉터리를 /backup 디렉터리에백업하는방법학습 AT 의사용법학습 실습화면 ( 백업진행 ) 힌트없음 [p238] 115 116 네트워크관련필수개념 (1) [p239~p242] TCP/IP 컴퓨터끼리네트워크상으로의사소통을하는 프로토콜 중가장널리사용되는프로토콜의한종류 호스트이름 (Hostname) 과도메인이름 (Domain name) 호스트이름은각각의컴퓨터에지정된이름 도메인이름 ( 또는도메인주소 ) 는 hanbit.co.kr 과같은형식 IP 주소 각컴퓨터의랜카드에부여되는중복되지않는유일한주소 4 바이트로이루어져있으며, 각자리는 0~255 까지의숫자 예 ) Server 의 IP 주소는 192.168.111.100 네트워크주소 같은네트워크에속해있는공통된주소 ( 예 : 192.168.111.0) 117 네트워크관련필수개념 (2) [p239~p242] 브로드캐스트 (Broadcast) 주소 내부네트워크의모든컴퓨터가듣게되는주소 현재주소의제일끝자리를 255 로바꾼주소 (C 클래스 ) 게이트웨이 (Gateway), 라우터 (Router) 라우터 = 게이트웨이 네트워크간에데이터를전송하는컴퓨터또는장비 Vmware 의게이트웨이주소는 192.168.111.2 로고정 넷마스크 (Netmask) & 클래스 (Class) 넷마스크 : 네트워크의규모를결정 ( 예 :255.255.255.0 C 클래스 ) DNS(Domain Name System) 서버 (= 네임서버 ) 주소 URL 을해당컴퓨터의 IP 주소로변환해주는서버 설정파일은 /etc/resolv.conf Vmware 를사용하면 Vmware 가 192.168.111.2 번을게이트웨이및 DNS 서버로, 192.168.111.254 를 DHCP 서버로설정함. 118 네트워크관련필수개념 (3) [p239~p242] 리눅스에서의네트워크장치이름 CentOS 7 은랜카드를 ens32 또는 ens33 으로할당함 이전버전에서는 eth0, eth1 등으로인식했음. Vmware 에 CentOS 를설치할경우에는 Vmware 버전에따라서완전히다른이름으로인식할수도있음. 중요한네트워크관련명령어 (1) [p242~p244] nmtui 네트워크와관련된대부분의작업을이명령어에서수행 자동 IP 주소또는고정 IP 주소사용결정 IP 주소, 서브넷마스크, 게이트웨이정보입력 DNS 정보입력 네트워크카드드라이버설정 네트워크장치 (ens32) 의설정 텍스트기반으로작동함 X 윈도의그래픽모드를사용하려면 gnomecontrol-center network 명령어를사용한다. systemctl <start/stop/restart/status> network 네트워크의설정을변경한후에, 변경된내용을시스템에적용시키는명령어 119 120 20
중요한네트워크관련명령어 (2) [p242~p244] ifup < 장치이름 > 및 ifdown < 장치이름 > 네트워크장치를 On 또는 Off 시키는명령어 ifconfig < 장치이름 > 장치의 IP 주소설정정보를출력 nslookup DNS 서버의작동을테스트하는명령어 ping <IP 주소또는 URL> 해당컴퓨터가네트워크상에서응답하는지를테스트하는간편한명령어 네트워크설정과관련된주요파일 [p242~p244] /etc/sysconfig/network 네트워크의기본적인정보가설정되어있는파일 /etc/sysconfig/network-scripts/ifcfg-ens32 ens32 장치에설정된네트워크정보가모두들어있는파일 /etc/resolv.conf DNS 서버의정보및호스트이름이들어있는파일 /etc/hosts 현컴퓨터의호스트이름및 FQDN 이들어있는파일 nmuti 명령을수행하면위 4 개파일이변경되는효과임. 즉, 이 4 개파일을직접편집하면 nmuti 를사용하지않아도됨. 121 122 < 실습 15> nmtui 명령 [p244] nmtui 명령작동이해 네트워크관련파일들내용확인 DNS 의작동을 /etc/resolv.conf 파일과연관해서이해. 실습화면 ( 네트워크설정 ) 네트워크보안을위한 SELinux [p251] SELinux(Security Enhanced Linux) 는보안에취약한리눅스를보호하기위해탄생 강제 (Enforcing), 허용 (Permissive), 비활성 (Disabled) 세가지레벨 설정파일인 /etc/sysconfig/selinux 를편집하거나, system-configselinux 명령으로설정 작동방식 강제 (Enforcing) 는시스템보안에영향을미치는기능이감지되면아예그기능이작동되지않도록시스템에서막아줌. 허용 (Permissive) 은시스템보안에영향을미치는기능이감지되면허용은되지만그내용이로그에남음. 비활성 (Disabled) 은 SELinux를사용하지않음 123 124 파이프, 필터, 리다이렉션 [p252] 파이프 (pipe) 두개의프로그램을연결해주는연결통로의의미 문자를사용함 예 ) # ls -l /etc more 필터 (filter) 필요한것만걸러주는명령어 grep, tail, wc, sort, grep, awk, sed 등 주로파이프와같이사용 예 ) # ps -ef grep bash 리다이렉션 (redirection) 표준입출력의방향을바꿔줌 예 ) ls -l > list.txt soft < list.txt > out.txt 125 프로세스, 데몬 (1) [p253~p255] 정의 하드디스크에저장된실행코드 ( 프로그램 ) 가, 메모리에로딩되어활성화된것 포그라운드프로세스 (Foreground Process) 실행하면화면에나타나서사용자와상호작용을하는프로세스 대부분의응용프로그램 백그라운드프로세스 (Background Process) 실행은되었지만, 화면에는나타나지않고실행되는프로세스 백신프로그램, 서버데몬등 프로세스번호 각각의프로세스에할당된고유번호 작업번호 현재실행되고있는백그라운드프로세스의순차번호 126 21
프로세스, 데몬 (2) [p253~p255] 부모프로세스와자식프로세스 모든프로세스는부모프로세스를가지고있음 부모프로세스를 kill 하면, 자식프로세스도자동으로 kill 됨 프로세스관련명령 ps 현재프로세스의상태를확인하는명령어 ps -ef grep < 프로세스이름 > 을주로사용함 kill 프로세스를강제로종료하는명령어 kill -9 < 프로세스번호 > 는강제종료 pstree 부모프로세스와자식프로세스의관계를트리형태로보여줌 < 실습 16> 프로세스연습 [p255] 포그라운드프로세스와백그라운드프로세스의상호전환연습 실습화면 ( 백그라운드프로세스로실행 ) 127 128 서비스와소켓 (1) [p258~p262] 서비스 (service) 시스템과독자적으로구동되어제공하는프로세스 예 ) 웹서버 (httpd), DB 서버 (mysqld), FTP 서버 (vsftpd) 등이있다. 실행및종료는대개 systemctl start/stop/restart 서비스이름 으로사용됨 서비스의실행스크립트파일은 /usr/lib/systemd/system/ 디렉터리에 서비스이름.service 라는이름으로확인 예 ) 웹서비스는 httpd.service 라는이름의파일로존재 서비스와소켓 (2) [p258~p262] 소켓 (socket) 서비스는항상가동되지만, 소켓은외부에서특정서비스를요청할경우에 systemd 가구동시킴. 그리고요청이끝나면소켓도종료됨 그래서소켓으로설정된서비스를요청할때는처음연결되는시간이앞에서설명한서비스에비교했을때약간더걸릴수있음. 왜냐하면 systemd 가서비스를새로구동하는데시간소요되기때문. 이와같은소켓의대표적인예로텔넷서버를들수있다. 소켓과관련된스크립트파일은 /usr/lib/systemd/system/ 디렉터리에소켓이름.socket 라는이름으로존재 예전 CentOS 에서는소켓과비슷한개념으로 xinetd 데몬이주로사용되었다. CentOS 7 도 xinetd 데몬을지원한다. 하지만많은서비스가 xinetd 대신에소켓으로사용된다. 129 130 응급복구 [p261] 시스템이부팅이되지않을경우에수행 < 실습 17> root 비밀번호분실시 [p261] root 비밀번호를분실시, 응급복구하는방법학습 GRUB 에서부팅시설정을변경하는방법학습 실습화면 (GRUB 편집 ) GRUB 부트로더 (1) [p264~p266] GRUB 부트로더의특징 부트정보를사용자가임의로변경해부팅가능함 즉, 부트정보가올바르지않더라도수정하여부팅가능 다른여러가지운영체제와멀티부팅가능함 대화형설정을제공해줘서, 커널의경로와파일이름만알면부팅이가능함 GRUB2 의장점 셸스크립트를지원함으로써조건식과함수사용가능함 동적모듈을로드가능함 그래픽부트메뉴를지원하며, 부트스플래시 (boot splash) 성능개선 ISO 이미지를이용해서바로부팅가능하 131 132 22
GRUB 부트로더 (2) [p264~p266] GRUB2 설정방법 /boot/grub2/grub.cfg 설정파일 ( 직접변경하면안됨 ) /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의파일을수정한후에 grub2-mkconfig 명령어를실행해설정함. /etc/default/grub 파일 파일의설명은 p265~p266 참조 < 실습 18> GURB 부트로더변경 [p266] 부트로더를변경하는방법학습 GRUB 에비밀번호를지정방법학습 실습화면 ( 제목이변경된 GRUB) 133 134 모듈의개념과커널컴파일의필요성 [p269] 모듈 : 필요할때마다호출하여사용되는코드 커널컴파일 ( 업그레이드 ) [p271] 커널컴파일순서 135 136 < 실습 19> 커널업그레이드 [p271] 최신의커널로업그레이드방법학습 실습화면 ( 컴파일환경설정및컴파일결과 ) [p278] 힌트 1 : 추가설치할패키지 wget, gcc, gcc-c++, tar, ncurses-devel, bc, perl 힌트 2 : 다운로드는 wget ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.17.4.tar.xz 를사용한다. 힌트 3 : make xconfig 대신 make menuconfig 를사용한다. 137 138 23
[p278] 힌트 1 : 추가설치할패키지 gcc 힌트 2 : http://www.tuxera.com/community/ntfs-3gdownload/ 에서소스파일을다운로드한다 ( 파일명 : ntfs- 3g_ntfsprogs-xxxx.xx.xx.tgz). 힌트 3 : 소스를컴파일한다../configure; make; make install 힌트 4 : 다음명령으로마운트한다. mount -t ntfs-3g USB장치이름마운트할폴더 139 24