Linux
파일 시스템
Linux 파일 종류, 디렉토리/파일 관리 명령어, 권한 관리 정리
1 ) 개요
- UNIX 계열의 OS. 많은 것이 계승 되었음
- 시스템 정보, 하드웨어 장치를 모두 파일로 관리
- File → 관련있는 정보들의 집합
- 효과적인 관리를 위해 계층구조(디렉토리) 사용
- 윈도우와 달리 시스템 전체에 단 하나의 트리만 가짐
- Ubuntu에서 관리하는 모든 데이터는 파일로 인식 → 현재 실행 중인 프로세스, 일반 파일, 하드웨어 등
- 하나의 프로세스는 하나의 작업 디렉토리를 가짐
- 우분투는 일반 파일, 디렉토리 파일, 장치 파일, 심볼릭 링크를 가짐
2 ) 파일의 종류
Common Files
- 데이터를 관리하는 데 주로 사용되는 일상적인 파일
- 실행 파일 • 텍스트 파일 • 이미지 파 • 프로그램 소스파일 등 Ubuntu에서 사용되는 대부분의 파일을 의미
- 실행 파일이나 이미지 파일의 경우는 데이터가 바이너리 형태로 저장됨
- 실행 파일을 확인하기 위해 내용 확인이 가능한 유틸리티 프로그램 필요
- 텍스트 파일의 경우 문서 편집기나 명령어로 가능
Binary Files
- 문자가 아닌 데이터 파일을 의미
- 기계어인 0과 1의 값으로 구성
- 프로그램을 코딩 → 컴파일을 수행하는 과정에서 생성되는 파일을 의미, 실행이라고도 부름
Directory Files
- 디렉토리도 하나의 파일로 관리
- 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보를 소유
- 일반 파일과 마찬가지로 디스크에 저장
→ 다른 파일을 조작하고 액세스하는 데 필요한 정보를 소유
Link Files
- 사용자에게 편리성을 제공해주는 파일
-
리눅스에서는 Link개념을 이용해 여러개의 파일 이름이 하나의 i-node를 가리킴 → 실제 파일이나 디렉토리 또는 다른 링크를 가리키도록 함
- 하드 링크
- 원본 파일을 복사해 동일한 내용의 사본 파일을 만드는 것
- 하드 링크에서는 원본 파일과 링크 파일 2개가 서로 다른 파일로 취급 → 하나가 지워지더라도 다른 파일은 남아있음
- 하드 링크에선 원본 파일의 내용이 변경될 경우 복사된 파일의 내용도 자동으로 변경
- 심볼릭 링크
Windows의 바로가기처럼 원본 파일이 삭제되면 같이 삭제되는 형태의 link 파일
Device Files
- 드라이브나 키보드 같은 장치도 파일로 취급
- 리눅스 시스템에 부착된 장치들을 관리하기 위한 특수 파일
- 대부분의 장치 파일은
/dev에 존재
3 ) 파일의 종류 확인
- file 명령으로 확인 가능
- .profile 이라는 파일 종류 확인 → 텍스트파일
- pwd → 현재 디렉토리 확인
- /bin/bash를 확인 → 실행 파일
4 ) 디렉토리와 파일 관리
개요
- 우분투 파일 시스템은 파일과 디렉토리의 계층형 구조로 구성(Tree)
- 우분투에서는 최상위 디렉토리
" / "를 하나 두고 그 아래에 디렉토리나 파일을 배치 " . "현재 작업 중인 디렉토리" .. "상위 디렉토리" - "홈 디렉토리 ??" ~ "사용자 디렉토리- 절대경로 확인 → pwd
기본 제공 디렉토리
- l
s -F / /로 끝나면 디렉토리-
@로 끝나면 심볼릭 링크 - bin, lib는 UNIX 초기 디렉토리로, 현재는
/usr/bin ** /usr/lib으로 통합되었으나 호환성 유지 문제로 심볼릭 링크로 제공
Root 계정에서 제공하는 디렉토리
/dev→ 디바이스 파일이 배치된 디렉토리/home→ 사용자 별로 할당되는 홈 디렉토리가 배치되는 디렉토리/media→ CD • USB 같은 외부 장치를 연결하는 디렉토리/etc→ 리눅스 설정과 관련된 디렉토리/opt→ 추가 패키지가 설치되는 디렉토리/root→ root 계정의 홈 디렉토리/sys→ 리눅스 커널과 관련된 파일이 저장되는 디렉토리/usr→ 기본 실행 파일과 라이브러리 파일, 헤더 파일이 저장되는 디렉토리/lost+found→ 파일 시스템에 문제가 발생해 복구할 경우 문제가 되는 파일이 저장되는 디렉토리/boot→ 부팅 관련 파일/mnt→ 파일 시스템을 임시로 마운트하는 디렉토리/srv→ 시스템에서 제공하는 서비스 디렉토리/tmp→ 임시 저장 디렉토리- `/var
→ 데이터나 로그가 저장되는 디렉토리
절대 경로와 상대 경로
- 절대 경로
- 루트로부터의 경로
- 상대 경로
- 현재 작업 디렉토리로부터의 경로
5 ) 파일의 구성 요소
구성
- 파일 이름: 파일을구분하기 위한 이름
- i-node: 파일에 대한 정보
- 파일의 종류
- 파일의 소유권
- 파일의 액세스 모드
- 파일의 타임스탬프
- 데이터블록: 파일의 실제 내용
6 ) file
- 파일의 종류를 확인하는 명령어
/usr/share/file디렉토리의 magic 파일을 참조하여 파일 종류를 표시file [opt] [file / path]- C: 매직 파일의 포맷을 확인
- f {목록파일}: 많은 파일을 확인
- m {매직파일}: 지정된 매직 파일로 대상파일을 확인
7 ) ls
- 디렉토리의 내용을 출력함
ls [option] [file / path]- 파일을 전달할 경우 존재 여부를 확인
- a : 숨김 파일 포함
- d : 디렉토리 자체 정보 조회
- i : i-node 조회
- ㅣ: 파일의 상세 정보 조회
- A :
.과..을 제외한 정보 조회 - F : 파일과 종류 표시
- L : 심볼릭 링크의 경우 원본 파일의 정보 출력
- R : 하위 디렉토리까지 출력
- 상세 정보
drwxr-x--- 5 adam adam 4096 Jul 20 22:06 .
- d: 디렉토리 여부로 d이면 디렉토리
rwxr-x---:3개씩 나누어서 해석하는데 소유자, 그룹, 기타 사용자 에 대한 권한으로 r(읽기)w(쓰기)x(실행)5: 하드 링크 개수adam: 소유자adam: 그룹4096: 파일의 크기- 파일이 마지막으로 수정된 날짜
-
.: 이름 - 디렉토리 자체 정보 확인은 -dl
- 유사한 명령으로 윈도우에서 사용하던 dir 과 vdir 사용 가능
8) 파일 관련 명령
cat (파일 내용 출력)
- 텍스트 파일 내용을 출력
- 파일이 화면보다 크면 스크롤 제공
- 여러 파일 지정 가능
-n: 라인 번호 출력cat /etc/hostname cat -n /etc/hosts
more / less
more: 화면 단위 출력, spacebar 다음 페이지, b 이전 페이지less: more 개선판, 방향키로 이전 내용 확인 가능more /etc/services
head / tail
head: 맨 앞 10행 출력 (숫자 지정 가능)tail: 뒤에서 출력,-f옵션으로 실시간 로그 확인
cp (파일 복사)
cp [옵션] [원본] [대상]
cp -i file1 file2 # 대화식 복사
cp -r dir1 dir2 # 디렉토리 복사
mv (파일 이동/이름 변경)
mv [옵션] [원본] [대상]
mv file1 file2 # 이름 변경 (같은 디렉토리)
mv file1 dir1/ # 다른 디렉토리로 이동
rm (파일 삭제)
rm [옵션] [파일...]
rm -i file1 # 대화식 삭제
rm -r dir1 # 디렉토리 삭제
ln (링크 생성)
- 하드링크: I-node 복사, 원본 삭제되어도 유지
- 심볼릭 링크: 원본 파일 경로 참조,
-s옵션- 원본 삭제 시 링크 깨짐
- 디렉토리 링크는 심볼릭만 가능
ln print.txt link.ln # 하드링크 ln -s /원본/경로 링크이름 # 심볼릭 링크
touch
- 빈 파일을 만드는 명령
grep
- 파일 내용을 검색하는 명령
- 정규 표현식 사용 가
grep [opt] [ptrn] [path] - 대소문자 같이 검색 → i
- 지정한 패턴이 포함된 파일 이름 출력 → l
- 행 번호 출력 → n
find
- 특정 파일이 어떤 디렉토리에 있는지 찾아주는 명령
- 파일의 생성 일자, 이름, 소유자 등 다양한 조건에 맞는 파일 검색
find [path] [condition] [cmd]- name 파일명
- type 파일 종류
- use 사용자ㅂ
- group
- perm
- size
- newer
동작
exec 명령 {}\; → 파일에 명령을 실행ok 명령 {} \; → 파일에print→ 검색된 파일의 절대 경로를 출력하는데 기본동작exec 명령 {} \; → 검색 결과를 목록 형식으로 출력locate
- 파일이나 디렉토리를 검색
- find와 차이?
- 검색 속도가 빠름
- 옵션이 제한적
- 파일이나 디렉토리를 DB화 해서 검색
- 파일이 존재하는 것은 알고있으나 어디 있는지 모를 때 사용
- 설치
apt install plocate -y - DB 구축
- sudo update db
- 파일 검색
locate [opt] <ptrn>
wc
- 파일 또는 표준 입력에서 단어 수, 줄 수, 문자 수 등을 셀 때 사용하는 명령어
wc [opt] [path]- 줄 수 → l
- 단어 수 → w
- 바이트 수 → c
- 문자 수 → m
- 가장 긴 줄의 길이 → L
sort
- 문자열 정렬에 사용
awk
- 텍스트 처리 도구
- 패턴을 기반으로 텍스트 파일, 스트림 및 기타 데이터 형식 조작 및 처리
sed
- 스트림 편집기
- 파일 내용 수정이나 텍스트 치환, 라인 삭제 등을 편리하게 수행해줌
9) 파일 접근 권한 관리
개요
- 다중 사용자 시스템은 사용자의 파일에 마음대로 접근하지 못하도록 보안 기능 제공
- 파일의 접근 권한 확인 → ls -l
그룹
- 파일이 속한 그룹의 이름
- 그룹 내 사용자들에게 권한을 부여해 파일을 공유할 수 있도록 함
- 그룹이 정의된 파일은
/etc/group, 관리자만 수정 가능 - 사용자가 속한 그룹을 알려주는 명령은 groups
권한 종류
- 읽기 → 파일의 내용을 읽거나 복사 가능 디렉토리의 경우 ls 명령으로 디렉토리 목록은 볼 수 있으나 옵션은 실행 권한 필요
- 쓰기 → 파일을 수정, 이동, 삭제 가능 디렉토리 안에 파일을 생성하거나 삭제 가능
- 실행
→ 파일 실행 가능, 디렉토리 경우 cd 명령 사용 가
파일 접근 권한 변경 → chmod
chmod [opt] 권한 [파일이나 디렉토리 경로]- 옵션
- 하위 디렉토리까지 변경 → R
- 권한 설정 방법
- 숫자 모드
- 소유자, 그룹, 기타 사용자를 각각 묶어 8진수로 권한을 나타냄
- 권한이 있는 자리는 1 없는 자리는 0
- 기호 모드
chmod 사용자카테고리문자 연산자기호 접근권한문자 경로- 사용자 카테고리 문자- u → 파일 소유자
- g → 그룹
- o → 기타
- a → 전 - 연산자 기호
-
- → 추가
-
- → 제거
- = → 설정 - 접근 권한 문자
- r → readable
- w → writable
- x → executable
기본 접근 권한
- 숫자 모드
- 파일이나 디렉토리를 생성할 때 자동 설정되는 권한
- 파일의 경우 파일 소유자, 그룹에는 RW권한이 부여, 기타 사용자에겐 R권한만 부여
- 디렉토리의 경우 소유자와 그룹에게 RWX 권한 부여, 기타 사용자는 RW 부여
- 기본 접근 권한 확인 및 변경
umask [opt] [mask]
- 마스크는 반대로 적용함 → 부여할 때 1, 마스크에서는 부여할 때 0
- 옵션은
-S→ 문자로 출력특수 접근 권한
- umask의 맨 앞 자리는 특수 접근 권한
-
맨 앞자리의 숫자 0이면 일반적인 접근권한, 4면 SetUID, 2면 GetID, 1은 sticky bit
- SetUID
- 해당 파일이 실행되는 동안에는 파일을 실행한 사용자의 권한이 아니라 소유자의 권한이 적용
- 이를 설정하면 소유자의 실행 권한이 s로 조회됨
- SetGID
- 해당 파일이 실행되는 동안에는 파일을 실행한 그룹의 권한이 아니라 파일 소유 그룹의 권한이 적용
- 이를 설정하면 그룹의 실행 권한이 s로 조회됨
- Sticky bit
- 디렉토리에 설정하는데 디렉토리에 sticky bit가 설정되면 이 디렉토리는 누구나 파일을 생성할 수 있음
댓글