기록/운영체제

리눅스

YongE 2025. 3. 17. 14:34

리눅스 : 파일 시스템, 권한 및 구조


리눅스는 다중 사용자를 지원하는 운영체제로, 안정성과 보안성이 뛰어나다. 파일 시스템, 권한 관리, 사용자 관리 등 다양한 기능을 제공하여 서버 환경에서 널리 사용된다. 이 글에서는 리눅스에 대해 전혀 모르는 사람을 위해 리눅스의 파일 시스템, 권한, 내부 구조 등에 대해 자세히 설명한다.

 

파일 시스템의 이해

파일 시스템 개념

파일 시스템은 디스크에 저장된 데이터와 논리적인 단위인 파일을 연결하는 체계이다. 운영체제가 데이터를 찾아 읽고 쓰기 위해 구성하는 구조이다. 파일 시스템의 기능은 다음과 같다.

  • 파일 관리(생성, 삭제, 수정 등)
  • 파일 접근 방법과 제어 방법 제공
  • 백업이나 복구 기능 제공
  • 파일 안전을 위한 암호화 및 복호화 기능
  • 파일 접근 인터페이스 및 명령어 제공

리눅스의 파일 시스템은 크게 다음과 같이 분류된다.

  • 디스크 기반 파일 시스템: EXT3, EXT4, XFS 등
  • 네트워크 파일 시스템: NFS, SMB 등
  • 특수 파일 시스템(가상 파일 시스템): proc, sysfs, tmpfs 등

파일 시스템 구조

리눅스의 파일 시스템은 효율적인 디스크 관리를 위해 저장 장치를 논리적인 블록 그룹으로 나눈다. 대표적인 ext4 파일 시스템의 구조는 다음과 같다.

  • 슈퍼 블록: 파일 시스템 전체 정보 저장
  • 그룹 디스크립터: 블록 그룹에 대한 정보
  • 데이터 블록 비트맵: 블록 사용 여부 표시
  • inode 비트맵: inode 사용 여부 표시
  • inode 테이블: 파일 메타데이터 저장
  • 데이터 블록: 실제 파일 내용 저장

마운트 개념

마운트는 외부 저장장치(HDD, USB 등)를 다른 디스크의 하위 디렉토리로 연결해서 운영체제가 쉽게 접근할 수 있게 해주는 과정이다. 리눅스에서는 모든 파일이 루트 디렉터리(/)의 아래에 있는 구조로 통합된다.

마운트 관련 기본 명령어는 다음과 같다.

  • mount /dev/장치명 /마운트경로: 장치를 지정된 경로에 마운트한다.
  • umount /마운트경로: 마운트된 장치를 해제한다.
  • mount: 현재 마운트된 모든 장치를 보여준다.

리눅스 기본 명령어


파일 및 디렉터리 관리 명령어

ls (List segments): 현재 위치의 파일 목록을 조회하는 명령어이다.

  • ls -l: 파일의 상세정보를 보여준다.
  • ls -a: 숨김 파일까지 표시한다.
  • ls -t: 파일들을 생성시간순(최신 것부터)으로 표시한다.
  • ls -rt: 파일들을 생성시간순(가장 오래된 것부터)으로 표시한다.

cd (Change directory): 디렉터리를 이동할 때 사용하는 명령어이다.

  • cd [디렉터리 경로]: 지정한 디렉터리로 이동한다.
  • cd ~: 홈 디렉터리로 이동한다.
  • cd /: 최상위 디렉터리로 이동한다.
  • cd ..: 상위 디렉터리로 이동한다.
  • cd -: 이전 경로로 이동한다.

pwd (Print working directory): 현재 작업 중인 디렉터리 정보를 출력한다.

touch: 0바이트 파일을 생성하거나 파일의 날짜와 시간을 수정하는 명령어이다.

  • touch filename: filename의 파일을 생성한다.
  • touch -c filename: filename의 시간을 현재 시간으로 갱신한다.
  • touch -t 202110291608 filename: filename의 시간을 지정한 날짜 정보로 갱신한다.

mkdir (Make directory): 디렉터리를 생성하는 명령어이다.

  • mkdir dirname: dirname이라는 디렉터리를 생성한다.
  • mkdir dir1 dir2: 한 번에 여러 개의 디렉터리를 생성한다.
  • mkdir -p dirname/sub_dirname: 하위 디렉터리까지 함께 생성한다.

cp (Copy): 파일을 복사하는 명령어이다.

  • cp file1 file2: file1을 file2라는 이름으로 복사한다.
  • cp -f file1 file2: 강제로 복사한다(file2가 이미 있을 경우 덮어쓴다).
  • cp -r dir1 dir2: 디렉터리를 모든 하위 경로와 파일을 포함해 복사한다.

mv (Move): 파일을 이동하거나 이름을 변경하는 명령어이다.

  • mv file1 file2: file1 파일을 file2 파일로 이름을 변경한다.
  • mv file1 /dir: file1 파일을 dir 디렉터리로 이동한다.
  • mv /dir1 /dir2: dir1 디렉터리를 dir2 디렉터리로 이름을 변경한다.

rm (Remove): 파일을 삭제하는 명령어이다.

  • rm file1: file1을 삭제한다.
  • rm -f file1: file1을 강제로 삭제한다.
  • rm -r dir: dir 디렉터리를 삭제한다(디렉터리는 -r 옵션 없이 삭제 불가).

cat (Concatenate): 파일의 내용을 화면에 출력하거나 리다이렉션을 통해 파일을 생성한다.

  • cat file1: file1의 내용을 출력한다.
  • cat file1 file2: file1과 file2의 내용을 출력한다.
  • cat file1 file2 | more: file1과 file2의 내용을 페이지별로 출력한다.

redirection ('>', '>>'): 화면의 출력 결과를 파일로 저장한다.

  • >: 기존 파일 내용을 지우고 저장한다.
  • >>: 기존 파일 내용 뒤에 덧붙여 저장한다.
  • cat file1 file2 > file3: file1, file2의 내용을 합쳐서 file3에 저장한다.

사용자와 그룹


사용자 그룹 개념

리눅스는 다중 사용자를 편하게 관리하기 위해 사용자 그룹이 존재한다. 동일한 권한을 가져야 하는 사용자들을 그룹으로 묶어 관리한다. 모든 계정은 반드시 하나 이상의 그룹에 속해있다.

Primary Group과 Secondary Groups:

  • Primary Group: 리눅스 계정이 반드시 가지는 하나의 그룹이다. 사용자가 파일이나 디렉터리를 만들 때, 해당 사용자와 그 사용자의 Primary Group이 소유자와 소유 그룹이 된다.
  • Secondary Groups: 하나의 계정을 여러 그룹에 소속시킬 수 있다. 파일 접근 시 Primary Group이 아니어도 Secondary Group으로 속해 있다면 그룹원으로 판단한다.

사용자 및 그룹 관련 명령어

그룹 조회:

  • cat /etc/group: 현재 리눅스에 존재하는 모든 그룹을 조회한다.
  • groups 또는 groups 사용자이름: 사용자가 속한 그룹을 확인한다.
  • id: 사용자 아이디, Primary Group 아이디, Secondary Groups 아이디를 모두 볼 수 있다.

그룹 생성:

  • groupadd 그룹명: 새로운 그룹을 생성한다.

그룹에 계정 추가/수정:

  • usermod -g 그룹명 계정명: 계정의 Primary Group을 변경한다.
  • usermod -G 그룹명 계정명: 계정의 Secondary Groups를 변경한다.
  • usermod -aG 그룹명 계정명: 계정의 Secondary Groups에 그룹을 추가한다.
  • gpasswd -a 계정명 그룹명: 그룹에 계정을 추가한다.
  • gpasswd -d 계정명 그룹명: 그룹에서 계정을 삭제한다.

그룹 삭제:

  • groupdel 그룹명: 그룹을 삭제한다(그룹에 속한 계정이 없어야 가능).

파일 권한

권한 체계

리눅스 시스템에서 파일과 디렉터리는 특정 권한 설정을 통해 관리된다. 각 파일이나 디렉터리는 세 가지 유형의 사용자에 대해 각기 다른 권한을 가질 수 있다:

  • 소유자(owner)
  • 그룹(group)
  • 기타 사용자(others)

각 유형별로 세 가지 권한을 설정할 수 있다:

  • 읽기(read): 파일 내용 보기, 디렉터리 목록 보기
  • 쓰기(write): 파일 내용 수정, 디렉터리에 파일 생성/삭제
  • 실행(execute): 파일 실행, 디렉터리 접근

권한 관련 명령어

파일 권한 확인:

  • ls -l: 파일이나 디렉터리의 권한을 확인한다.
    출력 예: drwxr-xr-x 2 user group 4096 Jan 25 10:00 directory
    • 첫 문자 d는 디렉터리를 의미한다.
    • 이후 9개 문자 rwxr-xr-x는 각각 소유자(rwx), 그룹(r-x), 기타 사용자(r-x)의 권한을 나타낸다.

권한 변경:

  • chmod: 파일이나 디렉터리의 권한을 변경한다.
    • 숫자로 표현: chmod 755 파일명
      • 4: 읽기 권한
      • 2: 쓰기 권한
      • 1: 실행 권한
      • 예: 755는 소유자(7=4+2+1, 모든 권한), 그룹(5=4+1, 읽기+실행), 기타(5=4+1, 읽기+실행)

소유자 및 그룹 변경:

  • chown 사용자 파일명: 파일의 소유자를 변경한다.
  • chgrp 그룹명 파일명: 파일의 소유 그룹을 변경한다.
  • chown 사용자:그룹 파일명: 소유자와 그룹을 동시에 변경한다.

리눅스 디렉터리 구조

 


리눅스 디렉터리

  • /bin: 모든 사용자가 사용할 수 있는 기본 명령어가 저장된 디렉터리
  • /boot: 시스템 부팅 시 필요한 파일들이 저장된 디렉터리
  • /dev: 디스크 같은 물리적인 저장장치를 파일화해서 관리하는 디렉터리
  • /etc: 시스템 환경설정 파일 및 부팅 관련 스크립트가 저장된 디렉터리
  • /home: 개인 사용자의 파일이 저장되는 디렉터리
  • /lib: 공유 라이브러리가 저장된 디렉터리
  • /lost+found: 파일 시스템 복구 시 사용되는 디렉터리
  • /mnt: 파일 시스템을 마운트하는 포인트로 사용되는 디렉터리
  • /opt: 응용프로그램 설치를 위해 사용되는 디렉터리
  • /proc: 가상 파일 시스템으로 시스템 운영 정보가 저장된 디렉터리
  • /sbin: 시스템 관리에 필요한 명령어가 저장된 디렉터리
  • /tmp: 임시 파일이 저장되는 디렉터리
  • /usr: 시스템 운영에 필요한 명령어, 프로그램이 저장된 디렉터리
  • /var: 로그 파일 등 가변적인 데이터가 저장되는 디렉터리

커널(Kernel)

커널은 운영체제의 핵심이다. 시스템이 부팅할 때 로드되며 주 역할은 하드웨어를 제어하는 것이다. 하드웨어 보안과 시스템 자원 관리, 프로세스 스케줄링, 메모리 관리, 입출력 및 네트워크 관리 등을 담당한다.

728x90
반응형