Linux

[Linux] 파일과 접근 권한 관리

gangintheremark 2024. 3. 20. 22:22
728x90

파일의 종류

  • 일반(정규)파일 : 텍스트나 바이너리 형태의 데이터를 저장하고 있는 파일
  • 디렉터리 : 디렉터리에 포함된 파일명과 해당 파일의 inode number 정보를 목록으로 가지고 있는 특별한 파일
  • 특수파일 : 프로세스 간 통신(IPC)목적의 특수파일(e.g. 파이프, 소켓) 또는 입출력 장치(e.g. 프린터, 키보드)를 사용하기 위한 장치파일

ls 명령어

ls 명령어는 list의 약자로 디렉터리에 있는 파일 목록을 보여주고 여러가지 정보(파일타입, 접근권한, 소유자, 소유그룹, 크기, 최종 수정일시 등) 확인할 때 사용한다.

디렉터리에는 파일명과 해당 파일의 inode number 정보만 가지고 있으며 ls 명령어로 파일의 상세정보를 볼 수 있는 것은 해당 inode number를 통해 inode 구조체 정보를 참조하기 때문이다.

[옵션]

  • -l : 목록 형태로 디렉터리 및 파일 정보를 자세히 보여줌
  • -a : 숨긴 파일을 포함한 모든 파일을 보여줌
  • -i : 디렉터리 및 파일에 지정된 inode number를 보여줌

ls 명령어 실습

[ls -l 명령 실행 결과 ]

파일종류 및 접근권한 하드링크 수 소유자 소유그룹 파일크기 최종 수정일시 파일명

gang.txt 파일은 일반파일이며 소유자는 읽고 쓸 수 있고, 소유그룹과 기타 사용자는 읽는 것만 가능하다.

 

① 파일종류 및 접근권한

  • 파일 종류 : - :일반파일 d: 디렉터리 l: 심볼릭링크 파일 등
  • 접근권한은 소유자(User), 소유그룹(Group), 기타사용자(Others) 순서로 각각 읽기(r), 쓰기(w), 실행(x) 권한을 표시 - 은 권한 없음

접근권한은 파일과 디렉터리에 따라 의미가 다르다.

기호(8진수)  
r (4) 파일 파일의 내용을 읽을 수 있는 권한
디렉터리 디렉터리에 있는 파일 목록을 읽을 수 있는 권한
w (2) 파일 파일에 내용을 쓸 수 있는 권한
디렉터리 디렉터리 내에 파일이나 디렉터리 생성 또는 삭제할 수 있는 권한
x (1) 파일 파일을 실행할 수 있는 권한
디렉터리 디렉터리로 이동할 수 있는 권한
- (0) 권한이 없음

 

② 하드링크 개수 : 링크 카운트라고도 하며, 동일한 inode를 참조하는 파일의 개수이다.
③ 소유자 : 소유자는 관리자에 의해 변경될 수 있으며 chown 명령 사용
④ 소유그룹 : 소유그룹은 관리자에 의해 변경될 수 있으며 chgrp 명령 사용


기타 명령어

  • cd : 디렉터리 간 이동 ( . 현재 디렉터리, .. 상위 디렉터리, ~ 홈디렉터리)
    • 절대 경로: 최상위 루트 디렉터리(/) 기준 경로 표시 (e.g. /home/gang)
    • 상대 경로 : 현재 디렉터리 기준 경로 표시 (e.g. ./gang)
  • mkdir : 새로운 디렉터리 생성
  • rmdir : 기존 디렉터리 삭제 (하위 디렉터리가 없어야 한다.)

파일 권한 관리

파일 접근권한 변경 → chmod 명령어

chmod 명령어는 Change Mode의 약자로 파일 또는 디렉터리에 대한 접근권한을 변경할 때 사용한다. 기호나 8진수로 접근권한을 지정할 수 있다. 또한 해당 파일의 소유자나 root만 실행 할 수 있다

기호로 설정하는 방식

  • 대상 : u(user), g(group), o(others), a(all)
  • 연산자 : + (추가), -(제거), =(설정)
  • 접근권한: r(읽기), w(쓰기), x(실행)

대상을 지정하지 않으면 all을 의미

chmod 기호로 설정

8진수로 설정하는 방식

  • r(읽기) = 4, w(쓰기) = 2, x(실행) = 1

chmod 8진수로 설정

 

파일 소유자 또는 소유 그룹 변경

chown 명령어는 Change Owner 의 약자로 파일 또는 디렉터리의 소유자를 변경할 때 사용한다.chgrp 명령어는 Change Group 의 약자로 파일 또는 디렉터리의 소유그룹을 변경할 때 사용한다. 슈퍼 유저(root)만 실행할 수 있다.

 

일반 사용자 계정으로 chown, chgrp 명령 수행 시 허용하지 않는다. 슈퍼 유저(root) 권한으로 명령 수행 시 소유자 및 소유그룹을 변경 가능하다.

chown 소유자명:소유그룹명 파일명 을 사용하면 소유자와 소유그룹을 동시에 변경할 수 있다.


접근 권한 마스크 설정 ⇒ umask

umask 파일 또는 디렉터리 생성 시 접근권한을 설정하기 위해 사용되는 값으로 제거할 접근권한 정보가 설정되어 있다.

  • e.g. umask=002 : 파일/디렉터리 생성 시 Others에 w권한 제거
  • e.g. umask=022 : 파일/디렉터리 생성 시 Group, Others에 w 권한 제거
  • e.g. umask=027 : 파일/디렉터리 생성 시 Group에 w권한 제거, Others에 rwx 권한 제거
  • 파일 : 기본 접근권한(666)에 umask 권한 제거 (rw-rw-rw- → umask 022 설정 → rw-r—r— (644))
  • 디렉터리 : 기본 접근권한(777)에 umask 권한 제거 (rwxrwxrwx → umask 022 설정 → rwxr-xr-x (755))

/etc/profile 등 시스템에 로그인하는 모든 사용자에게 적용되는 환경 설정파일에 umask를 설정하고 umask 값은 Group과 Others 에 쓰기 권한을 제거하는 022 이상으로 설정하는 것을 권장한다.

umask 가 022 일 때, 디렉터리는 777-022 = 755 (rwxr-xr-x) 파일은 666-022= 644(rw-r—r—)

umask 가 333 일 때, 디렉터리는 777-333 = 444 (r—r—r—) 파일은 666-333 =444 (r—r—r—)

umask산술적인 빼기 연산을 하는 것이 아니라 설정된 권한만큼을 기본 접근권한에서 제거하는 방식이다.

 

728x90