자격증/리눅스마스터 1급

[리눅스마스터1급 실기] 파일시스템 관리

ahgle 2023. 4. 20. 21:37
728x90
반응형

파일 및 디렉터리 관리

소유권과 허가권

허가권은 r,w,x로 이루어져 있음. 소유권 이후에 허가권은 소유자 권한과 그룹 권한

권한 파일 디렉터리
r 파일의 내용을  볼 수 있는 권한 디렉터리 내부의 내용을 볼 수 있는 권한
w 파일의 내용을 수정할 수 있는 권한 디렉터리 내부에 파일을 생성 또는 삭제할 수 있는 권한
x 실행 파일을 실행시킬 수 있는 권한 디렉터리  내부로 접근할 수 있는 권한

 

umask

파일이나 디렉터리 생성 시 부여되는 기본 허가권을 지정하는 명령. 

파일 생성 시에는 666, 디렉터리인 경우에는 777에서 설정한 umask 값을 뺀 값을 기본 허가권으로 지정한다.

 

파일 링크

리눅스에서는 파일이나 디렉터리를 생성하면 I-node(Index Node)라는 번호가 임의로 부여되고, 이 번호를 기준으로 관리된다.

이 번호는 'ls -i'라는 명령으로 확인할 수 있는데 파일명이 다르더라도 이 번호가 같다면 내부적으로는 같은 파일로 인식된다.

 

이렇게 하나의 파일을 여러 개의 이름으로 관리하거나 디렉터리 접근  경로를 단축하는 형태를 링크(Link)라고 부르고, ln 명령을 이용해서 만들 수 있다. 링크는 하드 링크심볼릭 링크로 나뉘고 ln 명령을 이용해서 만들 수 있다. 심볼릭 링크는 소프트 링크 라고도 부른다.

 

*명령어 : ln ( 심볼릭 링크를 생성 시에는 ln -s)

 

ex)

#ln joon.txt j : joon.txt의 하드 링크 파일인 j를 현재 디렉터리에 생성한다.

#ln -s joon.txt j : joon.txt라는 파일의 심볼릭 링크 파일인 j를 현재 디렉터리에 생성한다.

#ln -s /etc/xinetd.d x : /etc/xinetd.d의 심볼릭 링크 파일인 x를 현재 디렉터리에 생성한다.

 

하드 링크

하나의 동일한  파일을 디스크의 다른 곳에 배치(복사와 같은 형태)하여  여러 이름으로 사용하는 형식이다.

하드 링크는 파일에만 부여할 수 있는데 리눅스 초기에는 Sticy-bit가 설정되지 않는 공유 디렉터리에서 사용했다. 일반적인 공유 디렉터리에 

쓰기(w) 권한을 설정하면 누구나 파일을 생성 및 삭제할 수 있는데, 문제는 다른 사용자 소유의 파일도 삭제하는 경우가 발생 가능하다는 것.

이 경우를 대비해서 사용자의 홈 디렉터리에 하드  링크 파일을 생성해 두면 다른 사용자에 의해 파일이 삭제되어도 안전하게 보존 가능!

 

하드 링크의 특징

  • ls -i 명령으로 I-node 의 번호를 확인하면 원본과 링크 파일의 번호가 같다
  • 원본과 링크 파일의 내용과 파일의 크기가 같다
  • ls -l 명령 시에 출력되는 링크의 숫자가 올라간다
  • 원본이나 링크 파일 중에 어떤 파일을 수정해도 같이 반영된다
  • 원본 파일을 삭제해도 링크 파일은 아무런 영향을 받지 않는다
  • 하드 링크는 파일만 설정 가능하고 동일한 파일 시스템에서만 사용 가능하다
  • 파티션이나 드라이브를 가로질러 사용할 수는 없다

 

심볼릭 링크

심볼릭 링크는 하나의 파일을 여러 이름으로 가리키게 하는 것으로 원본과 생성된 링크 파일은 완전히 다른 파일로 관리된다. 파일이나 디렉터리 모두 사용 가능하나 일반적으로 디렉터리의 경로 단축이나 변경에 사용된다.

 

심볼릭 링크의 특징

  • ls -i 명령으로 I-node의 번호를 확인하면 원본과 생성된 링크 파일의 번호가 다르다
  • 생성된 링크 파일의 크기가 매우 작다
  • ls -l 명령 시에 출력되는 권한 영역의 맨 앞 쪽에 I 라고 표시된다.

심볼릭 링크 파일은 허가권 맨 앞에 l 이라고  표시됨.

  • 원본이나 링크 파일 중에 어떠한 파일을 수정해도 같이 반영된다(하드링크와 동일)
  • 원본 파일을 삭제하면  링크 파일은  아무런 구실을 하지 못한다 
  • 디렉터리에 링크 파일을 생성하면 윈도우의 바로가기나 단축 아이콘의 기능과 같다
  • 생성되는 링크 파일의 퍼미션 값이 777로 표시되나, 이 값은 원본 파일의 퍼미션과는 무관하다

파일시스템 관리 및 복구

 

파일 시스템 생성

  • 하드디스크 인식 여부 확인 : #fdisk -l
  • 파티션 분할 및 생성 : #fdisk /dev/sdb
  • 파일시스템 생성 : mkfs.ext4 /dev/sdb
  • 사용하려는 디렉터리 생성 : mkdir /lee
  • 마운트 : mount 명령어
  • 관련 파일 등록 : /etc/fstab 파일에 등록

fdisk 명령 : 디스크 파티션을 확인하고 추가/삭제하는 명령. 설정 후 반드시 재부팅해야 한다.

사용법 : #fdisk [옵션] [장치명]

[옵션]

  • -l : 현재 디스크의 파티션 테이블 정보를 출력
  • -s [파티션] : 특정 파티션의 크기를 출력
  • -v : 버전 출력

ex)

#fdisk /dev/sdb2 : /dev/sdb 디스크의 파티션을 설정

#fdisk -s /dev/sdb4 : /dev/sdb4의 파티션 크기를 출력

 

[fdisk 실행 시 주요 명령]

  • -p : 현재 디스크의 정보를 출력
  • -d : 파티션을 삭제
  • -n : 파티션을 새롭게 추가
  • -t : 파티션 속성을 변경(82 :swap, 83 : Linux, 8e : Linux LVM, fd : RAID)
  • -w : 저장하고 종료
  • -q : 저장하지 않고 종료

mkfs 명령 : 새로운 파일 시스템을 만드는 명령. 유형을 지정하지 않을 시 ext2로 생성됨(root만 가능)

사용법 : #mkfs [-t 파일시스템] [옵션] [장치명]

[옵션]

  • -t 파일시스템 : 파일 시스템 유형을 지정하는 옵션으로 리눅스 파일 시스템인 ext3, ext4 등을 지정하면 됨
  • -c : 배드 블록을 체크한 후 파일 시스템을 구축
  • -v : 결과를 상세히 출력

ex) mkfs -t ext4 /dev/sdb1 : /dev/sdb1 을 리눅스 파일 시스템인 ext4로 만든다.

 

mke2fs : ext2, ext3, ext4 파일 시스템을 만드는 명령. 유형을 지정하지 않을 시 ext2로 생성됨

(최근 리눅스 배포판에서 mkfs 명령 실행시 실제 사용하는 명령)

 사용법 : #mke2fs [옵션] [장치명]

[옵션]

  • -j : 저널링 파일 시스템인 ext3으로 생성됨
  • -t 파일 시스템 : 파일 시스템을 지정하는 명령
  • -b 블록 사이즈 : 블록 사이즈를 지정

ex) 

#mke2fs -j /dev/sdb1 : /dev/sdb1 장치를 파일 시스템인 ext3으로 생성한다

#mke2fs -j -b 4096 /dev/sdb1 : /dev/sdb1 장치의 블록 사이즈를 4096으로 지정하고 ext3으로 생성한다.

 

mount :

리눅스에서는 보조 기억장치나 파일 시스템이 다른 디스크의 / 하위 디렉터리로 연결하여 사용 가능하게 해주 명령. 

특별한 옵션없이 mount 명령을 내리면 현재 마운트된 장치나 디스크를  확인할 수 있다.

 

사용법 : #mount [옵션] [장치명] [디렉터리]

[옵션]

  • -a : /etc/fstab에 명시된 파일 시스템을 마운트할 때 사용하는 옵션
  • -t 파일시스템 : 파일 시스템의 유형을 지정하는 옵션
  • -o : 마운트할 때 추가적인 설정을 적용할 때 사용하는 옵션, 콤마(,)로 구분하면 됨

[파일 시스템 유형]

  • msdos : MS-DOS의 파일시스템인 FAT-16을 마운트할 때 지정
  • vfat : 마이크로소프트 사의 파일 시스템인 FAT-32를 마운트할 때 지정
  • NTFS :  윈도우 NT, 2000, XP 이후 버전에서 사용하는 파일 시스템을 마운트할 때 지정
  • ext2, ext3, ext4 : 리눅스 시스템을 마운트할 때 지정
  • iso9660 : CD-ROM이나 DVD를 마운트할 때 지정
  • smbfs : 네트워크 파일 시스템인 삼바 파일 시스템을 마운트할 때 지정
  • cifs : 삼바 파일 시스템이 확장된 파일 시스템
  • nfs : 네트워크 파일 시스템인 NFS로 공유된 영역을 마운트할 때 지정

[-o의 주요 항목]

  • ro : 읽기 전용으로 마운트
  • rw : 읽기/쓰기 전용으로 마운트(기본 값)
  • remount : 해당 파티션을 재마운트할 때
  • loop : loop 디바이스로 마운트할 때, CD-ROM 이미지 파일인 ISO를 마운트해서 사용할 때 쓰임
  • noatime : 파일이 변경되기 전까지는 Access time이 변경되지 않음
  • username=사용자명 : 사용자 계정이 필요한 경우 사용자명을 입력
  • password=암호 : 패스워드가 설정
  • acl :ext3 파일 시스템에서 지원하는 접근제어 리스트(ACL)를 사용 가능하도록 마운트할 때

ex)

#mount -t ext4 -o ro /dev/sdb1 /mnt : 파일시스템인 ext4를 /dev/sdb1에 적용하고, /mnt 디렉터리에 읽기 전용으로 마운트

#mount -o remount /home : /home 영역을 다시 마운트한다

#mount -t sbmfs -o username=lee,password='1234' //192.168.30.128/date /net

: 삼바로 공유된 192.168.30.128의 date 디렉터리를 /net에 마운트

 

umount : 마운트된 파일시스템을 해제시켜주는 명령

사용법 : #umount [옵션] [장치명] 또는 umount [옵션] [마운트된 디렉터리명]

 

[옵션]

  • -a : /etc/mtab에 명시된 파일 시스템을 언마운트할 때
  • -t 파일시스템 : 언마운트할 파일 시스템을 지정할 때 사용하는 옵션

eject : CD-ROM, DVD 등과 같이 이동식 보조기억 장치의 미디어를 꺼낼 때 사용(자동으로 umount 작업을 수행)

[사용법] : #eject [장치명 or 마운트된 디렉터리]

 

/etc/fstab : 파일시스템에 대한 다양한 정보를 담고 있는 파일로 부팅 시 마운트할 파티션 정보가 기록되어 있는 파일

(6개의 필드로 구성)

장치명(볼륨라벨,UUID) | 마운트할 디렉터리 | 파일시스템 | 마운트 될 때 옵션 | dump 명령을 통한 백업주기 | 부팅시 파일 시스템을 점검하는 fsck 명령의 순서를 정함.

[4번째 필드 (마운트될 때 옵션) 옵션]

  • default : rw, suid, dev,exec, auto, nouser, async가 적용
  • auto : 시스템 부팅 시 미디어가 존재하면 자동으로 마운트, -a 옵션을 이용한 마운트  및 활성화 등을 가능하게 함
  • noauto : auto 반대
  • user : 로컬 시스템에서 일반 사용자가 마운트 할 수 있는 권한을 부여
  • usrquota : 사용자 용량을 제한하는 Disk Quota 를 사용할 때 해당 영역에 설정
  • grpquota : Disk Quota를 그룹 별로 사용할 때 해당 영역에 설정
  • noquota : 해당 파티션에서 사용자들의 quota를 설정하지 않음
  • suid : 해당 파티션에서 SUID나 SGID의 사용을 허가 (Set-UID,Set-GID)
  • nosuid : suid 반대
  • nodev : 해당 파티션에서 문자나 특별한 장치(디바이스)를 허용하지 않음
  • noexec : 해당 파티션에서 실행 파일이 실행되지 않도록 설정
  • ro : 읽기 전용으로 설정
  • rw : 읽기/쓰기 전용으로 설정
  • async : 파일을 비동기적으로 관리하도록 설정
  • acl : Access Control Lists를 사용하도록 설정

 

/etc/mtab : 현재 시스템에 마운트되어있는 파일 시스템 정보를 담고 있는 파일

 

 

728x90