GNU/Linux 파일과디렉터리 Seo, Doo-Ok Clickseo.com clickseo@gmail.com
목 차 UNIX 파일시스템 파일과디렉터리 소유권과보호 데이터압축 2
파일 (File) UNIX 파일시스템 (1/9) UNIX 파일은임의의정보를포함하는 0 또는그이상의 Bytes 집합체 UNIX의파일구조는트리형태의계층적인형태 파일명과디스크에서물리적인파일위치를연결하는디렉터리항목을가지는파일 파일형태 : 일반파일, 디렉터리파일, 디바이스 ( 특수 ) 파일또는링크 [clickseo@localhost clickseo]$ ls -lai 17531398 drwxr-xr-x 2 clickseo clickseo 4096 2019-12-31 23:04. 17530891 drwxr-xr-x 4 clickseo clickseo 4096 2019-12-31 22:59.. 17531399 -rw-r r-- 1 clickseo clickseo 5 2019-12-31 24:00 data 17531400 -rwxr-xr-x 1 clickseo clickseo 4072 2019-12-31 23:04 test i-node 블록번호 3
UNIX 파일시스템 (2/9) 디렉터리 (Directory) UNIX 디렉터리는단지파일에불과하다. 구조적으로디렉터리는일련의디렉터리항 (entry) 들로구성 각항은디렉터리에포함되어있는하나의파일또는부디렉터리 각디렉터리항은파일의 i-node 번호와파일이름을저장하는문자필드로구성 각디렉터리는. ( 점 ) 과.. ( 이중점 ) 은모든디렉터리에항상존재 clickseo 디렉터리 clickseo book clickseo 123 247.. \0. \0 chap1 chap2chap3 kd kh mw 260 401 b c o l o i k \0 c k \0 4
UNIX 파일시스템 (3/9) 계층구조 / bin etc dev usr home unix.................. ls mount lp ttym0 bin ucb test seo... doc mbox... 프린터 터미널 디렉터리파일일반파일디바이스파일 5
UNIX 파일시스템 (4/9) 디스크파티션과트리시스템 < 디바이스파일이름 > /dev/dsk/0s1 디스크장치 < 논리디스크 > 제 1 파티션 (root 파일시스템 ) 파일시스템 Boot Block Super Block /dev/dsk/0s2 (dev/swap) /dev/dsk/0s3 /dev/dsk/0s4 제 2 파티션 (swap 영역 ) 제 3 파티션 (usr 파일시스템 ) 제 4 파티션 (home 파일시스템 )... i-node Block Data Block 6
UNIX 파일시스템 (5/9) 디스크파티션과트리시스템 Boot Block 시스템을실행하는프로그램이있는부분 boot loader 또는 bootstrap : 시스템을실행하는프로그램 Super Block 파일시스템을관리하는정보저장 i-node 개수, 디스크블록개수, 가용디스크블록들의리스트시작등 i-node Block Data Block Boot Block Super Block i-node Block Data Block [ UNIX 파일시스템의구조 ] 7
UNIX 파일시스템 (6/9) 디스크파티션과트리시스템 i-node 블록과데이터블록 접근권한 소유자 파일크기 시간... 데이터블록의 데이터블록데이터블록데이터블록데이터블록 포인터 [clickseo@localhost clickseo]$ ls -l data -rw-r r-- 1 clickseo clickseo 5 2019-12-31 23:00 data i-node 블록에저장 데이터블록에저장 8
UNIX 파일시스템 (7/9) 디스크파티션과트리시스템 System V 계열의 i-node 구조 9
UNIX 파일시스템 (8/9) 디스크파티션과트리시스템 /usr/ast/mbox 파일을찾는절차 10
UNIX 파일시스템 (9/9) 절대경로와상대경로 경로명 : 파일시스템내에서파일의위치를의미절대경로 /home/apple 현재디렉터리에상관없이항상동일한대상을가리킴 상대경로./bin 현재디렉터리에따라가리키는대상이달라짐 현재디렉터리가 banana 현재디렉터리가 root 11
UNIX 파일시스템 파일과디렉터리 로그인과접속종료 디렉터리관련명령어 파일관련명령어 소유권과보호 파일압축 파일과디렉터리 12
시스템로그인 : login 로그인과접속종료 리눅스는다중사용자환경을제공 접속종료 : exit, logout 시스템사용후더이상사용하지않고시스템을빠져나오는것 exit, logout 또는 Ctrl + D 를누른다. [clickseo@localhost clickseo]$ exit [clickseo@localhost clickseo]$ logout exit : 쉘안에서시동된쉘도포함하여 현재의쉘을종료 한다는의미 logout : 로그인한쉘안에서만유효한명령 13
디렉터리관련명령어 (1/2) 현재작업중인디렉터리확인 : pwd print working directory UNIX 파일시스템은루트디렉터리 (/) 부터시작, 트리모양구조 시스템계층구조상에서자신이어디에있는지를알려준다. 디렉터리생성 : mkdir make a directory 일반형식 주요옵션 mkdir [ 옵션 ] 디렉터리명 -p 지정된디렉터리에서중간의디렉터리도같이생성 -m 새로운디렉터리의허가모드를지정된접근권한으로설정하여생성 빈디렉터리삭제 : rmdir remove directory 14
디렉터리관련명령어 (2/2) 디렉터리변경 : cd change directory 절대경로 : 루트 (/) 디렉터리부터시작하는경로명지정 상대경로 : 현재자신이위치한디렉터리부터시작하는경로명지정 사용예 구분 설명 cd cd.. cd../.. cd / cd /home/clickseo cd ~user 사용자의홈디렉터리로변경한단계상위디렉터리로변경두단계상위디렉터리로변경시스템의루트디렉터리로변경지정된절대경로명으로변경지정된사용자명의홈디렉터리로변경 15
파일과디렉터리 파일관련명령어 16
파일관련명령어 (1/7) 파일및디렉터리목록보기 : ls list directory contents 일반형식 ls [ 옵션 ] [ 인자 ] -l 파일과디렉터리이름외에도파일크기, 날짜 / 시간, 허가권, 소유권, 그룹등의정보를보여준다. -L 현재디렉터리의파일과디렉터리명만열거한다. -a 모든파일을열거한다 ( 숨겨진파일도포함 ). 주요옵션 -t 마지막으로수정된시간순서대로보여준다. -r 목록을역순으로보여준다. -F 끝부분에항목의유형 ( 파일의형식을표시해준다. 디렉터리 / 소켓 = 심볼릭링크 @ 실행가능파일 * 17
파일생성 : touch 파일관련명령어 (2/7) 새로운빈파일의생성 일반형식 touch [ 옵션 ] 파일명 주요옵션 -t 파일의접근시간이나갱신시간을수정 ( 년월일시간분. 초형태로시간을적어서파일의시간을수정한다.) touch 명령어를통하여파일의접근시간이나갱신시간도수정이가능하다. 18
파일관련명령어 (3/7) 파일생성및내용보기 : cat 파일내용출력, 새로운파일생성그리고파일이동및추가기능 원래의의미는여러개의파일을하나의파일로합치는명령 화면출력에더욱많이사용되는명령 일반형식 cat [ 옵션 ] 파일명 -n 각줄에줄번호를붙여준다. 주요옵션 -b 빈라인에는번호를붙이지않고출력한다. -e 각줄의끝에 $ 기호를보여준다. -s 여러개의빈라인을하나로출력한다. Redirection : 기호 > 와 >> 출력이나입력의방향을지정하는방향지시자의의미로사용이된다. > 기호 : 무조건새로운파일을생성한다. >> 기호 : 기존의파일에새로운내용추가한다. 19
파일복사 : cp copy a file 파일관련명령어 (4/7) 한파일의내용을다른파일에복사한다. 일반형식 cp [ 옵션 ] [ 복사할파일명 ] [ 대상파일명 ] -a 원본파일의속성, 링크, 정보들을유지하면서복사한다. -b (Backup) 이미파일이존재할경우백업본을만들고복사한다. -f (Force) 기존파일을강제로삭제하고복사한다. 주요옵션 -i (Interactive) 덮어쓰기전에여부를묻는다. -r (Recursive) 디렉터리를순환적으로복사한다. ( 서브디렉터리도모든내용과함께복사한다.) -u 대상파일보다파일이새로운것일때복사 20
파일삭제 : rm remove a file 파일관련명령어 (5/7) 일반형식 rm [ 옵션 ] 파일명 -i (Interactive) 파일을삭제하기전에사용자의확인을요구한다. 주요옵션 -r, -R (Recursive) 하위디렉터리와그안의파일까지재귀적으로모두삭제한다. -f (Force) 사용자에게확인하는메시지없이지정한파일을모두삭제한다. -v (Verbose) 각각의파일을지우는정보를자세하게보여준다. rm rf 다수의파일이존재하고있는디렉터리를한번에삭제 -f 옵션 : 파일의개수와관계없이강제로삭제 -r 옵션 : 하위디렉터리와파일까지재귀적으로모두삭제디렉터리삭제명령어 rmdir 은항상비어있는디렉터리만을삭제한다. 21
파일관련명령어 (6/7) 파일또는디렉터리이름변경및이동 : mv move a file 일반형식 mv [ 옵션 ] 파일및디렉터리명 -b (Backup) 기존파일이이미있어백업파일을만든다. -i (Interactive) 기존파일을덮어쓸것인지질문을한다. 주요옵션 -f (Force) 기존에동일한이름의파일이있는경우 사용자에게알려주지않고강제적으로파일을이동한다. -u (Upgrade) 대상파일보다원본파일이최신것일때업그레이드한다. -v (Verbose) 파일을옮기는과정을자세하게보여준다. 22
파일관련명령어 (7/7) 파일내용보기 : more, less 주어진파일의내용을화면단위로출력한다. 일반형식 more [ 옵션 ] [+pattern] 파일명 less [ 옵션 ] [+pattern] 파일명 -c 내용을보여주기전에화면을깨끗이지운다. 주요옵션 -lines 한화면에보여줄줄수를지정한다. -d 계속하기위한프롬프트출력스페이스나 q 키를누르라는프롬프트를출력한다. [+ 줄번호 ] 지정한줄번호부터내용을출력한다. 파일내용보기 : head, tail 파일의시작부분과끝부분을보여준다. 23
소유권과보호 UNIX 파일시스템 파일과디렉터리 소유권과보호 권한설정 SetUID, SetGID 데이터압축 24
UNIX 파일시스템 소유권과보호 (1/2) 파일접근을위하여 UNIX 는각파일에대해사용권한을설정한다. 파일과디렉터리를사용할수있는사용자범위를제한 사용범위제한을통하여발생할지도모르는사용자실수를보호해준다. 사용권한및사용자 종류의미 사용권한 r Read 지정된파일의읽기권한 w Write 지정된파일의쓰기권한 x execute 지정된파일의실행권한 ( 명령어로서사용가능 ) u User 파일의소유자 (Owner) 사용자 g Group 파일의그룹 ( 사용자는특정그룹에속한다.) o Other 파일의소유자와그룹을제외한모든사용자 a All 현재시스템에사용자계정을가진모든사용자 (Public) 25
파일및디렉터리권한 소유권과보호 (2/2) 접근권한및소유권등세부정보표시 문자 항목유형 d 디렉터리 - 일반파일 첫번째 b c l s r 블록유형의특수파일문자유형의특수파일심볼릭링크소켓 (Read) 읽기권한 두번째 w (Write) 쓰기권한 x (execute) 실행권한 - 접근불가 26
접근권한변경 : chmod change file modes 권한설정 (1/6) 파일또는디렉터리의접근권한을변경 일반형식 chmod [ 옵션 ] [ 기호모드 ] 파일및디렉터리명 chmod [ 옵션 ] [8 진수모드 ] 파일및디렉터리명 주요옵션 -i, -f -R (Force) 강제로수행한다. ( 변경이되지않더라도오류메시지를보여주지않는다.) (Recursive) 디렉터리구조를따라내려가면서서브디렉터리의모드도순환적으로모드를변경한다. 27
접근권한변경 : 기호모드 권한설정 (2/6) 기호모드 (Symbolic mode) chmod [ugoa] [+ - =] [rwx] 파일및디렉터리명 옵션 설명 사용자 허가여부 u (User) 사용자 g (Group) 사용자가속한그룹 o (Other user) 기타사용자 a (All user) 모든경우의사용자 + 허가첨가 - 허가삭제 = 명시된특정권한만을할당하고나머지는제거 허가종류 r w x (Read) 읽기권한 (Write) 쓰기권한 (execute) 실행권한 28
접근권한변경 : 8 진수모드 권한설정 (3/6) 8진수모드 : 절대모드 (Absolute mode) chmod [8진수표기 ] 파일및디렉터리명 문자 허가권 값 (8진수) r (Read) 읽기권한 4 w (Write) 쓰기권한 2 x (execute) 실행권한 1 문자 허가권 값 (8진수) --- 허가권없음 0 r-- 읽기만가능 4 rw- 읽기, 쓰기가능 6 rwx 읽기, 쓰기, 실행가능 7 r-x 읽기, 실행가능 5 --x 실행만가능 1 29
파일소유자변경 : chown change ownership 권한설정 (4/6) UNIX 시스템은파일을작성하면그사용자를파일의소유자로자동으로지정한다. 파일의소유자변경은 root 나파일의소유자만이할수있다. 일반형식 주요옵션 chown [ 옵션 ] user [. group] 파일명 -f (Force) 강제로수행한다. 변경이되지않더라도오류메시지를보여주지않는다. -R (Recursive) 디렉터리구조를따라내려가면서순환적으로수행한다. 30
파일그룹명변경 : chgrp change group 권한설정 (5/6) 일반형식 주요옵션 chgrp [ 옵션 ] group 파일명 -f (Force) 강제로수행한다. 변경이되지않더라도오류메시지를보여주지않는다. -R (Recursive) 디렉터리구조를따라내려가면서순환적으로수행한다. 31
권한설정 (6/6) 자동사용권한부여 : umask user mask 새로이만들어지는파일에대한파일권한을제한하는기능 쉘의기본적인 umask 값 :8진수0022 umask 값설정비트들은요청된허가설정비트들과 mask 된다. 일반형식 umask [-S] 모드 umask 8 진수값 파일과디렉터리기본권한설정 디렉터리 : 실행권한이필수적이기때문에실행권한을부여한다 (777). 파일 : 실행권한이중요하지않기때문에실행권한을제외하고지정한다 (666). 32
소유권과보호 SetUID, SetGID 33
SetUID SetUID 프로그램을실행시킨사용자의권한이아닌프로그램파일소유자권한으로실행된다. SetUID 설정 : 지정할허가권값의앞에 4 를붙인다. [root@localhost /root] # chmod 4755 /bin/ls passwd 명령 : SetUID 적용예 passwd 명령을사용해서패스워드를설정하면, 패스워드에대한암호화나해시된값이 /etc/shadow 에저장된다. [root@localhost root]# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 59640 12월 31 2019 /usr/bin/passwd [root@localhost root]# ls -l /etc/passwd [root@localhost root]# ls -l /etc/shadow 34
SetGID SetGID 프로그램을실행시킨사용자의권한이아닌프로그램파일그룹의권한으로실행된다. SetGID 설정 : 지정할허가권값의앞에 2 를붙인다. [root@localhost /root] # chmod 2755 /bin/ls 35
Sticky bit Sticky bit 스티키비트는디렉터리에만주어지는권한 스티키비트가부여된디렉터리에있는파일은접근권한과상관없이파일의소유자와관리자만이파일을삭제할수있다 /tmp 디렉터리 drwxrwxrwt 14 root root 4096 12 월 31 23:597 tmp 36
데이터압축 UNIX 파일시스템 파일과디렉터리 소유권과보호 데이터압축 파일압축및풀기 파일묶음 37
compress 파일압축및풀기 (1/7) 유닉스초기배포판에주로사용되었던압축프로그램 LZW 압축알고리즘기반의 UNIX 쉘압축프로그램 압축파일확장자 :.Z 일반형식 compress [ 옵션 ] 파일명 주요옵션 -d (Decompress) 압축풀기 uncompress 파일명 uncompress 유틸리티는 compress 유틸리티를사용하여파일을압축한후파일을원래상태로복원한다. 38
gzip : gzip.org GNU zip 파일압축및풀기 (2/7) 파일압축및해제에사용되는파일형식및데이터압축프로그램 초기 UNIX 시스템에서쓰이던압축프로그램을대체하기위한자유소프트웨어 압축파일확장자 :.gz GNU Gzip : gnu.org/software/gzip/ GNU Gzip 릴리즈 1992년 10월, gzip 0.1 1993년 02월, gzip 1.0 2018년 12월, gzip 1.10 라이선스 : GNU GPL 3.0 (GPLv3) 프로그래밍언어 : C gzip GNU Savannah : savannah.gnu.org https://git.savannah.gnu.org/cgit/gzip.git 39
gzip : 명령어형식 파일압축및풀기 (3/7) 압축파일확장자 :.gz 일반형식 gzip [ 옵션 ] 파일명 -d (Decompress) 압축풀기 gunzip [ 옵션 ] 파일명 -l (List) 현재압축된파일의내용 ( 정보 ) 을보여준다. 주요옵션 -r (Recursive) 현재디렉터리부터하위디렉터리까지전부를압축한다. -t 압축파일의완전성검사 -v (Verbose) 압축진행내용 ( 정보 ) 을보여준다. -?? 자리에 1~9 까지의숫자사용 ( 기본값 -6 정도의비율 ) -9 : 압축속도는떨어지지만압축률을최고로사용 -1 : 압축속도는빠르지만압축률이가장떨어진다. 여러파일을한의파일로압축하는옵션이없다 (tar 유틸리티의 -z 옵션과사용 ). 40
bgzip2 : bzip.org 파일압축및풀기 (4/7) 압축파일확장자 :.bz2 Burrows-Wheeler 알고리즘을사용하는자유-오픈소스파일압축프로그램 gzip 보다 60~70% 이상의높은압축률 압축해제속도는상당히느린단점 bzip2 릴리즈 1996 년 07 월, bgzip2 0.15 -- 2000 년말, bgzip2 1.0 2018 년 11 월, bgzip2 1.0.6 라이선스 : BSD-like license 프로그래밍언어 : C bgzip2 : sourceforge.net https://sourceforge.net/projects/bzip2/ 41
bgzip2 : 명령어형식 파일압축및풀기 (5/7) 압축파일확장자 :.bz2 일반형식 bzip2 [ 옵션 ] 파일명 -z (compress) 파일압축 -d (Decompress) 압축풀기 bunzip2 [ 옵션 ] 파일명 -f (Force) 기존파일에덮어쓴다 (overwrite). 주요옵션 -t 파일의안전성검사 -v (Verbose) 압축진행내용 ( 정보 ) 을보여준다.? 자리에 1~9 까지의숫자사용 ( 기본값 -6 정도의비율 ) -? -9 : 압축속도는떨어지지만압축률을최고로사용 -1 : 압축속도는빠르지만압축률이가장떨어진다. 42
xz : tukaani.org/xz/ Tukaani 프로젝트 파일압축및풀기 (6/7) Slackware 기반배포판으로시작된프로젝트 ( 현재는존재하지않는배포판 ) XZ 무손실데이터압축프로그램 : LZMA 유틸리티에서파생 XZ 데이터압축프로그램 압축파일확장자 :.xz Burrows-Wheeler 알고리즘을사용하는자유-오픈소스파일압축프로그램 2013년 02월, 리눅스커널은 2014년도부터 bzip2 대신 ZF를압축도구로발표 xz 릴리즈 2009년 01월, XZ 1.0.0 2018년 04월, XZ 5.2.4 라이선스 : GNU GPLv2 또는 GNU GPLv3, GNU LGPLv2.1 프로그래밍언어 : C XZ Git : git.tukaani.org https://git.tukaani.org/?p=xz.git;a=summary 43
xz : 명령어형식 파일압축및풀기 (7/7) 압축파일확장자 :.xz 일반형식 xz [ 옵션 ] 파일명 -z (compress) 파일압축 -d (Decompress) 압축풀기 -f (Force) 기존파일에덮어쓴다 (overwrite). 주요옵션 -l (List) 현재압축된파일의내용 ( 정보 ) 을보여준다. -t 파일의안전성검사 -v (Verbose) 압축진행내용 ( 정보 ) 을보여준다.? 자리에 1~9 까지의숫자사용 ( 기본값 : 6) -? -9 : 압축속도는떨어지지만압축률을최고로사용 -0 : 압축속도는빠르지만압축률이가장떨어진다. 44
데이터압축 파일묶음 : tar 45
tar : 파일묶음 묶음파일확장자 :.tar 파일묶음 : tar (1/2) 여려파일들을하나의큰파일로결합해준다 (tape archive). 일반형식 tar [ 옵션 ] 파일명 -c (Create) 새로운묶음파일생성 -x (extract,) 묶음파일에서파일들을추출 -r (append) 묶음파일에새로운내용추가 주요옵션 -u (Update) 묶음파일보다새로운파일이면업데이트 --delete (DELETE) 묶음파일에서특정파일을삭제 -v (Verbose) 수행중진행내용 ( 정보 ) 을보여준다 -t (list) 묶음파일에들어있는파일들의목록을보여준다. -f 묶음파일을저장한파일이름지정 46
tar : 묶음과압축 파일묶음 : tar (2/2) 압축프로그램과함께사용 일반형식 tar [ 옵션 ] 파일명 -Z compress 를사용해서압축또는풀기 주요옵션 -z gzip 을사용해서압축또는풀기 -j bzip2 를사용하여압축또는풀기 -J xz 를사용하여압축또는풀기 [clickseo@localhost clickseo]$ tar cvzf sample.tar.gz * [clickseo@localhost clickseo]$ tar xvzf sample.tar.gz 47
참고문헌 [1] 이종원, IT CookBook, 우분투리눅스 ( 개정판 ) : 시스템 & 네트워크, 한빛아카데미, 2018. [2] 백창우, 유닉스리눅스프로그래밍필수유틸리티, 한빛미디어. 2010. 이강의자료는저작권법에따라보호받는저작물이므로무단전제와무단복제를금지하며, 내용의전부또는일부를이용하려면반드시저작권자의서면동의를받아야합니다. Copyright Clickseo.com. All rights reserved. 48