파일의 종류
1. 일반 파일(Regular File) 또는 정규 파일
- 데이터 또는 프로그램 코드에 해당하는 일련의 바이트 스트림으로 구성
- 정규 파일은 표준 파일 입출력 시스템 호출을 통해 참조됨
2. 디렉토리 파일(Directory File)
- 특별한 형식으로 디스크에 저장
- 디렉토리 파일은 디렉토리의 명시적인 시스템 호출을 통해 참조됨
3. 특수 파일(Special File)
- 프린터와 터미널, 디스크 같은 주변 장치나 또는 파이프와 소켓 같은 프로세스 간 상호 통신 기법에 해당
- 표준 입출력 시스템 호출을 통해 참조됨
4. UNIX 파일 시스템
- 일반 파일(Ordinary File)과 특수 파일(Special File)로 구성
- 일반 파일: 아스키 파일(ASCII File), 링크된 파일(Linked File), 실행 파일(Execute File) 등
- 특수 파일: 디렉터리(Directory), 장치 파일(Device File) 등
디렉토리(파일) 정보 출력(ls)
- ls(List) 명령어: 특정 디렉토리에 있는 디렉토리와 파일의 정보를 열거 (기본적으로 현재 디렉토리를 리스트)
- 추가 옵션으로 파일이나 디렉토리의 크기, 소유주, 만든 시간, 변경 시간, 이름, 접근 권한 등도 알 수 있음
- 일반적으로 알파벳 오름 차순으로 표시함
1. ls 명령어 도움말
- 여러 파일이나 디렉토리를 지정할 수 있음
- 여러 옵션 문자를 연속적으로 사용하여 옵션 기능을 복합적으로 사용할 수 있음
- 주요 옵션
옵션 |
설명 |
-l |
목록(List) 형태로 디렉토리 및 파일의 정보를 자세히 보여줌 |
-a |
도트(.) 파일(숨김 파일)을 포함하여 디렉토리 내에 있는 모든 디렉토리 및 파일을 보여줌 |
-R |
하위 디렉토리에 있는 내용까지 보여줌 |
-F |
디렉토리인지 어떤 종류의 파일인지를 알려줌, 지시 문자를 추가로 표시 (디렉토리: '/', 실행 파일:'*', 심볼릭 링크: '@') |
-i |
디렉토리 및 파일에 지정된 inode 번호를 보여줌 |
-s | 파일을 크기순으로 정렬하여 보여줌 |
-t | 파일을 수정 시간 순으로 정렬하여 보여줌 |
-r | 출력 결과를 역순으로 표시 |
2. ls 명령 출력 결과
- ls -alFi 명령 실행 결과
- 각 필드 설명
① inode 번호, ② 파일 종류, 접근 권한, ③ 하드 링크수, ④ 소유주, ⑤ 소유 그룹, ⑥ 크기,
⑦ 최종 변경일, ⑧ 최종 변경 시간, ⑨ 이름
3. 각 필드 상세 설명
1) 파일 종류 (File Type)
문자값 |
디렉토리 및 파일의 종류 |
d |
디렉토리 |
b |
불록 디바이스 파일 (하드 드라이브나 CD-ROM 같이 블록 단위의 데이터를 처리하는 디바이스) |
c |
문자 디바이스 파일(터미널과 모뎀같이 바이트의 열로 데이터를 처리하는 디바이스) |
l |
심볼릭 링크 파일 |
p |
명명된 파이프(Named Pipe) |
s |
유닉스 도메인(Socket) |
- |
일반(정규) 파일 |
2) 접근 권한 (파일 모드(File Mode))
- 권한에 대한 자세한 내용은 아래 링크의 글을 참조
2015/04/30 - [보안/- System] - [UNIX / Linux] 권한 관리(chmod, chown, chgrp, umask)
2015/06/27 - [보안/- System] - [UNIX / Linux] 특수 권한(setuid, setgid, sticky bit)
a. UNIX 운영체제에서는 권한 부여의 대상을 세 종류로 구분
- user: 파일을 만든(생성) 소유주
- group: 파일을 만든 소유주가 속한 그룹의 사용자
- other: 기타 사용자
b. 접근 권한의 종류
문자값 |
파일 | 디렉토리 |
r(4) |
파일에 대한 읽기 권한(열기, 읽기 허용) | 실행 속성이 설정되어 있으면 디렉토리 내의 파일을 나열할 수 있게 허용 |
w(2) |
파일에 대한 쓰기 권한(쓰기, 잘나내기 허용, 이름 변경이나 파일 삭제 허용하지 않음, 파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정됨) | 실행 속성이 설정되어 있으면 디렉토리 내의 파일들을 생성, 삭제, 이름변경이 가능하도록 허용 |
x(1) |
파일에 대한 실행 권한 (파일이 프로그램으로 처리되고 파일이 실행되도록 허용, 스크립트 언어에서 작성된 프로그램 파일들은 읽기 가능으로 설정 되어 있어야만 실행 가능함) | 디렉토리 내에서 탐색을 위해 이동 할 수 있도록 허용(디렉토리에 들어 올 수 있도록 허용) |
- |
r, w, x에 대한 권한이 없음을 표시(문자 자리를 -로 대체) |
c. 접근 권한 기본 값(파일과 디렉토리 생성시 접근 권한, 단, umask로 지정한 값은 기본값에서 제거)
- 일반(정규) 파일; 666(rw-rw-rw-) - umask로 지정한 값
- 디렉토리: 777(rwxrwxrwx) - umask로 지정한 값
* umask
- 앞으로 만들어질 파일에 영향을 미치는 명령, 파일이 생성될 때 주어진 기본 퍼미션을 제어
- 명령 시 지정한 8진수는 새로 만들어질 파일에서 제거 될 권한을 명시
d. 기타
- 심볼릭 링크 파일 속성: 항상 lrwxrwxrwx으로 더미값을 의미, 실제 파일의 속성은 심볼릭 링크가 가리키는 파일의 속성값을 따름
3) 하드 링크수(Hard Link)
- 링크 카운터라고도 함
- 동일한 inode를 참조하는 파일 수를 말함
4) 소유주
- 해당 디렉토리 및 파일의 소유주, 디렉토리 및 파일을 생성한 UNIX 시스템의 사용자 계정이 지정됨
- 소유주는 생성 후에도 변경이 가능(chown 명령 사용, 추후 자세히 다룸)
5) 소유그룹
- 소유주가 소속된 기본 그룹명이 지정됨
- 소유 그룹은 생성 후에도 변경 가능 (chgrp 명령 사용, 추후 자세히 다룸)
6) 파일 크기
- 바이트 단위
디렉토리 관리 관련 명령어
1. 디렉토리 간의 이동(cd)
- cd 명령: Change Working Directory의 약자, 파일시스템 내의 특정 디렉토리로 이동할 때 사용
1) cd 명령 사용 방법: cd [Directory Name]
2) cd 명령 예시
표현 |
설명 |
cd |
홈 디렉토리로 이동 |
cd / | root 디렉토리로 이동 |
cd - |
이전 작업 디렉토리로 이동 |
cd ~username |
username의 홈 디렉터리로 이동 (예: cd ~bob을 입력: 사용자 bob의 홈 디렉토리로 이동) |
cd /usr/include |
/usr/include 디렉터리로 이동 |
cd ~/work/project | 홈 디렉토리 하위의 work/project 디렉토리로 이동 |
3) 현재 디렉토리 확인 명령
- pwd 명령: Print Working Directory의 약자, 사용자가 현재 작업하고 있는 디렉토리를 알려줌
4) 절대 경로명(Absolute Pathname)
- 루트 디렉토리를 기준으로 기술
- 루트 디렉토리에서 원하는 디렉토리 또는 파일(목적지) 까지의 경로에 대하여 각 디렉토리 위치를 하나하나 모두 명시
- 사용 예시
a. 홈 디렉토리에서 /usr/bin 디렉토리로 이동
- 절대 경로명: /usr/bin (루트 디렉토리(/) 다음에 usr 디렉토리가 있고 usr 안에는 bin 디렉토리가 있음을 의미)
b. /usr/bin 디렉토리에서 상위 디렉토리인 /usr로 이동
- 절대 경로명: /usr
5) 상대 경로명(Relative Pathname)
- 현재 디렉토리를 기준으로 기술, 현재 작업 디렉토리가 시작점
- 상대 경로명을 표시하려면 파일 시스템 트리상의 상대적인 위치를 대신 표현해주는 특수 기호를 사용
- '.' 기호: 현재 디렉토리, '..' 기호: 상위 디렉토리를 의미
- 사용 예시
a. /usr/bin 디렉토리에서 상위 디렉토리인 /usr 디렉토리로 이동
- 상대 경로명: ..
b. /usr에서 하위 디렉토리인 /bin 디렉토리로 이동
- 상대 경로명: ./bin
* 참고
- 거의 모든 경우에 ./ 기호를 생략할 수 있음
- 예시: /usr 디렉토리 하위 디렉토리인 /bin 디렉토리로 이동
2. 새로운 디렉토리 생성(mkdir)
- mkdir 명령: Make Directory의 약자, 디렉토리를 새로 만드는 경우에 사용
- 이미 존재 하는 디렉토리를 생성하려고 하면 오류가 발생
1) mkdir 명령 도움말
- 주요 옵션
옵 션 |
설 명 |
-m |
새로 생성되는 디렉토리의 파일 모드(접근권한)를 명시적으로 설정 |
-p |
이미 존재하는 디렉토리 생성시 오류를 발생하지 않고, 계층적 구조를 디렉토리를 한꺼번에 만듦 |
-m, -p 같이 사용 | -p 옵션과 함께 -m 옵션이 사용되는 경우에 명시적인 접근 권한은 최하위 디렉토리에만 적용 |
2) mkdir 명령어 사용 예시
3. 기존 디렉토리 삭제(rmdir)
- rmdir 명령어: Remove Directory의 약자, 기존 디렉토리를 삭제함
- 디렉토리를 성공적으로 삭제 하려면 삭제 하려고 하는 디렉토리에 하위 디렉토리나 파일이 없어야 함
(즉, 비어 있어야 함, 비어있지 않으면 Directory not empty(디렉토리가 비어있지 않음) 오류 발생)
- 단, '.'와 '..'는 비어 있어야 하는 하위 디렉토리 개념에서 제외, 사용자에 의해 임의로 삭제 되지 않음
1) rmdir 명령어 도움말
- 주요 옵션
옵 션 |
설 명 |
-p |
계층적인 구조를 갖는 디렉토리를 한꺼번에 삭제함 p 옵션이 성공하려면 명령어에 나열한 하위 디렉토리 외에는 추가적인 파일이나 디렉토리가 없어야 함 |
2) rmdir 명령어 사용 예시
'보안 > System' 카테고리의 다른 글
[UNIX / Linux] 프로세스 응용 (0) | 2015.05.10 |
---|---|
[UNIX / Linux] 디렉토리 및 파일 관련 명령어 (1) | 2015.05.02 |
[UNIX / Linux] 파일 검색(find) (0) | 2015.05.02 |
[UNIX / Linux] 권한 관리(chmod, chown, chgrp, umask) (13) | 2015.04.30 |
[UNIX / Linux] 특수 문자(Shell Metacharacter) (0) | 2015.04.28 |
[UNIX / Linux] 파일링크(ln) (0) | 2015.04.27 |
[UNIX / Linux] 입출력 재지정, 파이프 (1) | 2015.04.26 |
[UNIX / Linux] 사용자 정보, 그룹 정보 (0) | 2015.04.25 |
[UNIX / Linux] 로그인, 로그아웃 (0) | 2015.04.25 |