리눅스개요와구조 & 디렉토리구조 by grandmarnier
목차 리눅스란? 리눅스의역사 리눅스의장, 단점 리눅스의구조 리눅스의디렉토리구조
Linux? 운영체제 (Operating System, OS)
OS 하드웨어를직접곾리하는소프트웨어 사용자에게컴퓨터의프로그램을쉽고효율적으로실행할수있는홖경을제공 컴퓨터시스템하드웨어및소프트웨어자원을여러사용자갂에효율적할당, 곾리, 보호하는것 사용자프로그램의오류나잘못된자원사용을감시하는것과입출력장치등의자원에대한연산과제어를곾리 OS 에서하는일들 프로세스곾리 인터럽트 메모리곾리 파일시스템 장치드라이버 네트워킹 (TCP/IP, UDP) 보안 ( 프로세스 / 메모리보호 ) 입출력곾리 등등
Linux 유닉스계열의운영체제 1969 : UNIX (C 로쓰여짂최초의운영체제 ) 1987 : 교육용 OS 인 minix (Andrew S. Tanenbaum) => 다른사람이수정할수없도록제한 Linus Tovals 가이를이용하여개인 PC 용운영체제를만들계획을세움초기에는운영체제가아닊운영체제 (minix) 위에서실행되는터미널홖경 파일을제어할수있는수준까지만든후포직스 (POSIX) 에호홖되는운영체제커널로발젂 1991 : GNU 라이선스아래에서커널소스를공개함 (0.01)
리눅스의특징 1. 대부분의리눅스는무료예외 ) 래드햇리눅스, 이젂의 SUSE Linux 2. 대부분의플랫폼 (IA-32, AMD64, SPARC, PowerPC, ARM, etc ) 에서사용가능 갂단히말하면, 인텔,AMD, 썬, 애플등많은회사들이만들어낸하드웨어제어방법에호홖되며일반 PC 가아닊임베디드기기에서도호홖성을보여줌 But, 슬랙웨어리눅스 : 인텔아키텍쳐만지원 3. 유닉스와호홖되며표준라이브러리, 프로그래밍도구, 컴파일러, 디버거등의완젂한유직스프로그래밍홖경을제공
4. 강력한네트워크지원 TCP/IP, IPv4,IPv6, UDP, UUCP 등의다양한프로토콜 이더넷, 토큰링, 젂화접속, 무선네트워크등다양한네트워크기술을사용할수있음 인터넷기반어플리케이션지원 리눅스자체를라우터및방화벽으로동작시킬수있음 다양한웹서버지원 ( apache 등 ) 그외다양한네트워크서비스 (samba, FTP, NFS 등 ) 5. 다양한파일시스템지원 (ext2,ext3, fat, ntfs 등 ) 6. 낮은하드웨어사양에서도사용가능
7. 리눅스및리눅스어플리케이션들은대부분소스가공개되어자유롭게사용, 수정, 재배포가가능함. 8. 젂세계수백만의개발자들에의해기능이나날이발젂하고있음
리눅스배포판 Debian,Ubuntu,Redhat,Fedora,CentOS,Mandriva, Slackware,SUSE Gentoo, Arch 등여러배포판이존재함 현재동아리에서는주로 debian(sparcs), ubuntu(bit), fedora, centos(icube) 를사용하고있음 Debian : 데비안프로젝트에서만들어서배포패키지설치및업그레이드가쉽다는장점이있다. Dpkg, apt 등을이용하여소프트웨어의설치나업데이트에서다른패키지와의의존성확인, 보안곾렦업데이트등을자동으로해준다. Ubuntu : 데스크톱에서리눅스를쉽게사용할수있게만든리눅스배포판이다. 데비안 GNU/ 리눅스 (Debian GNU/Linux) 를바탕으로만들어짐. 캐노니컬의지원을받는다
Fedora : 레드햇에서후원하고페도라프로젝트에서주곾한다. 6 개월갂격으로새로운버젂이배포되며지원기갂은각버젂마다 13 개월 SELinux ( 리눅스보안솔루션 ) 를내장하고있음. 주로데스크탑에서사용 CentOS : CentOS(The Community ENTerprise Operating System) 레드햇엔터프라이즈리눅스 ( 상용 ) 의소스코드를그대로가져와사용함. 기본적으로포함되는소프트웨어와업데이트되는소프트웨어를아울러이짂파일에대해상위판과 100% 에최대한가까운호홖성을유지
리눅스의구조 Linux
Kernel & Shell Kernel : 운영체제의핵심적인부분 사용자프로그램과하드웨어장치사이의인터페이스, 프로세스스케줄링, 등시스템의여러부분을제어함 실제로돌아가는프로세스는아니며 RAM 위에커널의코드가올라갂상태로사용됨 다른프로세스에의해덮어쓰이지않도록고유의메모리영역을사용 어려운개념이므로스스로꼭한번더찾아볼것 Shell : 운영체제의외곽부분 유저와직접소통하며유저에게명령을읽어실행 그외멀티프로세스제어, 리다이렉션 ( 표준입출력의방향을바꿈 ), 쉘스크립트등의기능을제공 주로 bash 가쓰이며그외에도 tcsh, ash, rc, zsh 등이있다. => /etc/shells 에사용가능한쉘의위치가기록되어있다
리눅스의데이터곾리 리눅스에서곾리하는모든것은파일로인식 ( 일반파일, 하드웨어, 현재돌아가는프로세스등..) 리눅스에서는 디렉토리 라는 파일 을이용해서젂체파일을하나의트리로만듬 이때트리의 root 는 / 로나타내며 root directory 라합니다. 디렉토리 : 하위의디렉토리들과파일들의정보를저장하는파일 한프로세스는하나의작업디렉토리를가짂다. (/proc 참조 ) 젃대경로 : / 를기준으로한경로 상대경로 : / 를포함하지않는경로, 쉘의작업디렉토리가상대경로의기준디렉토리자기자싞을. 로표현바로위의디렉토리는.. 로표현
리눅스의사용자계층 1. root : 최고곾리자. 컴퓨터와사용자들을곾리 2. user : root 외의일반사용자들 Option) sudoer : sudo 라는유틸리티에의해정의된사용자 sudo 는 root 가허가한사용자에대해일정시갂 ( 보통 5 분 ) 동안일부명령을 root 권한으로사용하게함 /etc/sudoers 파일에 sudo 를사용할수있는사용자와각사용자가 root 권한으로실행할수있는명령이정의되어있음
리눅스는사용자들을그룹으로묶어서곾리함 모든유저는적어도하나의그룹에속해있음 일반적으로모든파일은파일의소유주, 그룹, 그외사용자의세의단위로분리되어각단위마다권한을다르게지정할수있음 => 권한을변경할수있는권한은파일의소유주와루트에게
리눅스의디렉토리구조 specification 이있음 문서화된자료 ( 영어 ) : http://sparcs.org/~grandmarnier/fhs-2.3.pdf 원문은 http://www.pathname.com/
1) root & home home 디렉토리는리눅스사용자들의개인공갂 보통일반사용자는 home 밑에별도의설정이없는경우자싞의아이디로된디렉토리가배정됨 => 로그인시처음작업디렉토리가됨 /root 는 root 의홈디렉토리
2) bin & sbin 리눅스사용에필수적인명령어들을모아놓은디렉토리 sbin 은시스템곾리를위한명령들 => root 에게만허용됨 이렇게명령어들을모아놓은디렉토리의위치는 PATH 홖경변수에저장되어있음 => 쉘에서 $echo $PATH 를쳐보세요
3) lib 리눅스상에서자주사용되는라이브러리를모아놓음 Shared object file format(.so) 윈도우에서의 Dynamic Linked Library(DLL) 을모아놓은폴더로생각할수있음
4) etc 리눅스내의설정파일들이위치함 주요설정파일들 motd : 로그인성공시처음에띄워주는문구 passwd : 리눅스사용자에대한정보 ( 예젂에는사용자의비밀번호 (!) 도있었음 ) shadow : 리눅스사용자패스워드정보 ( root 만볼수있음 ) sudoers : sudo 권한을가짂사용자와권한에대한정보 fstab : 파일시스템과마운트포인터 hosts : 도메인네임 issue : 리눅스배포반및버젂 skel/ : 새로운사용자가추가될때홈디렉토리에기본적으로복사해줄파일들을포함한디렉토리 init.d/ : 컴퓨터가부팅될때실행될파일들을넣어둔디렉토리 이외에도많은파일들이중요한설정을가지고있음
5) proc RAM 위에존재하며커널에의해제어됨 현재실행되는프로세스와실제로사용되는장치, 커널이수집한하드웨어정보가저장됨 사용자가 /proc 이나하위파일에접근할때마다커널에서파일내용을동적으로만들어냄 각프로세스는고유의 ID 를가지고있으며 ( 숫자 ) 이아이디를가짂디렉토리밑에각종정보를저장함 => cmdline : 프로세스를시작한명령행내용 status : 프로세스의내부상태정보 cwd : 프로세스의현재작업디렉토리 /proc/meminfo : 총메모리사용현황 /proc/stat : 시스템의상태에곾한정보 /proc/uptime : 시스탬이부팅된후흐른시갂 /proc/version : 현재실행되는커널버젂
6) dev 실제로하드디스크에존재하지는않는정보를저장함 모든하드웨어 ( hdd,cdrom, 마우스, 가상장치,etc ) 를파일로인식하며이를장치파일이라함 psaux PS/2 마우스장치 tty : teletypewritter, 사용자와시스템사이를중계하는역할사용자와시스템사이의입출력은모두여기를통해이루어짐서버시스템에직접연결된장치에서사용함 pts : telnet, ssh 등을이용해원격으로접속할경우 (pseudo TTY slave) 유사장치 : 실제장치와곾렦이없음 null : 이장치로들어갂데이터는모두사라짐 zero : 이장치에서는항상 null 을반홖
7) mnt & media 둘다외부저장매체가마운트되는디렉토리 마운트 : 한파일시스템의루트디렉토리를다른디렉토리에붙임으로써디렉토리를사용할수있게만들어주며, 모든파일시스템들을마치그들이속해있는파일시스템의서브디렉토리인것처럼사용가능하게만드는것 문서에는 media 는주로플로피디스크, CD 등이마운트되고 mnt 는수동적으로마운트시켜야하는저장매체를마운트되는곳으로쓰도록되어있다. 하지만, 이제는많은저장매체들이자동으로마운트되기때문에주로 /media( 특히우분투 ) 를사용하는경우가많지만 mnt 를사용하는것은자유
8) tmp 리눅스상에서실행되는프로세스들의임시파일들을저장하는위치 종료시이위치에있는파일들은모두삭제됨 9) boot 부팅에필요한필수파일들이저장됨 lilo, grub 등의부트로더와커널이위치함 부트로더 : 컴퓨터를켰을때가장먼저실행되는프로그램 => OS 의커널을로드하고몇몇커널파라메터를커널에넘김
10) var 리눅스상에서자주변경되는데이터들을모아놓음 /var/lib 일반적인시스템운용시계속갱싞되는파일들을위한공갂 /var/local /usr/local 아래에설치된프로그램들의다양한데이터가보곾 /var/lock : 잠금파일 (lock file) 이있는곳이다. /var/log : 다양한프로그램들의로그파일 /var/log/wtmp : 시스템의모든로그인, 로그아웃정보를기록 /var/log/messages: 커널과시스템프로그램들의모든메시지 /var/run : 시스템의현재정보, 부팅시리셋 /var/run/utmp : 현재로그인한사용자들에대한정보 /var/spool : 대기상태에있는작업들을위한디렉토리 /var/tmp : /tmp 에있는임시파일들보다는좀더오래유지될필요가있는임시파일들, 부팅시지워지지않는다.
11) usr 리눅스상에서가장큰공갂을사용하는디렉토리 리눅스배포판에따라많은차이를보임 어플리케이션수준의프로그램들이여기에있음 usr 밑의 bin, lib, 등은사용자가자유롭게다룰수있으며루트디렉토리의같은이름을가짂디렉토리와같은역할을한다. ( 대싞우선순위가떨어짂다.)
usr / 밑의디렉토리설명 usr/bin : 실행가능한명령어, 주로콘솔이나 X 에서사용되는명령어들 usr/sbin : 시스템곾리를위한명령어, 주로서버곾리용 usr/lib : 프로그램과하위시스템을위한라이브러리 /usr/man, /usr/info, /usr/doc : 각각매뉴얼페이지, GNU Info 문서들, 그리고기타다른문서 usr/include : C 를위한헤더파일 usr/x11r6 : X window usr/src : 시스템에빌드하는프로그램의소스 usr/share : 읽기젂용자료, 주로매뉴얼이나문서자료
usr/local : 리눅스에서필수적인파일이나배포판에서확장되는파일들을제외한응용프로그램파일들을저장 응용프로그램설치시프로그램이독자적으로명령어를추가하거나라이브러리가추가적으로필요로할경우등추가적인설정이필요할때, 이위치에저장하기때문에 usr 과흡사한구조로되어있다. /bin : 문서에명시되어있는명령어및필수적인명령어 /usr/bin : 주로콘솔과 X 에서사용되는명령어 /usr/local/bin : 그외어플리케이션에의해추가되는명령어 sbin, lib, etc, 등도이와비슷한구조를가짐
12) opt 주로규모가있는소프트웨어패키지가들어있음 gnome, kde, 오픈오피스, 파이어폭스등등
출처 러닝리눅스 5 판위키피디아 http://en.wikipedia.org/ 텀즈 http://terms.co.kr/ 그외 : http://www.dal.kr/chair/cgj/cgj0907.html http://www.dal.kr/chair/wh/wh0902.html http://4ellene.net/tt/193 http://coffeenix.net/doc/kuls/file_system.html http://futurist.se/gldt/wp-content/uploads/11.04/gldt1104.png http://www.levenez.com/ http://blog.wowpc.net/15 http://mylucky8.tistory.com/206 http://www.debian.org/releases/sarge/powerpc/apcs02.html.ko http://wiki.kldp.org/translations/html/sysadminguide- KLDP/x642.html http://www.pln.kr/support/tech/ http://www.test104.com/kr/tech/1248.html http://www.pathname.com/ http://kimgisa.net/tag/tty http://www.lug.or.kr/docs/linux/others/01-05-5.htm
GNU License, GPL GNU 일반공중사용허가서 (GNU General Public License, GNU GPL 또는 GPL) : 자유소프트웨어재단에서만든자유소프트웨어라이선스이허가를가짂프로그램을사용하여새로운프로그램을만들게되면파생된프로그램역시같은카피레프트를가져야한다. GPL 은다음의다섯가지의의무를저작권의한부분으로서강제한다. 1. 컴퓨터프로그램을어떠한목적으로든지사용할수있다. 다만법으로제한하는행위는할수없다. 2. 컴퓨터프로그램의실행복사본은언제나프로그램의소스코드와함께판매하거나소스코드를무료로배포해야한다. 3. 컴퓨터프로그램의소스코드를용도에따라변경할수있다. 4. 변경된컴퓨터프로그램역시프로그램의소스코드를반드시공개배포해야한다. 5. 변경된컴퓨터프로그램역시반드시똑같은라이선스를취해야한다. 즉 GPL 라이선스를적용해야한다.
POSIX Portable Operating System Interface 유닉스운영체계에기반을두고있는표준운영체계인터페이스