Linux Enginner

리눅스의 대한 모든 지식들을 공유하고 배울 수 있는 블로그입니다.

리눅스 파일 및 디렉토리 권한 변경하기 (chmod, chown)

Linux 및 Unix 기반 시스템에서는 파일과 디렉토리의 권한을 설정하고 변경하는 것이 중요합니다. 이를 통해 시스템 보안을 강화하고, 특정 사용자 또는 그룹에게만 접근을 허용할 수 있습니다.
파일 및 디렉토리의 권한을 변경하는 주요 명령어는 chmod와 chown입니다.

이 글에서는 파일 및 디렉토리 권한 개념, chmod 명령어를 이용한 권한 변경 방법, chown을 활용한 소유권 변경 방법을 자세히 살펴보겠습니다.


1. 파일 및 디렉토리 권한의 기본 개념

Linux에서 파일과 디렉토리는 소유자(Owner), 그룹(Group), 기타 사용자(Other) 이렇게 세 가지 범주로 접근 권한을 가집니다.
각 범주에는 다음 세 가지 권한이 적용됩니다.

권한 기호 설명

읽기 r (4) 파일 내용을 읽을 수 있음
쓰기 w (2) 파일을 수정하거나 삭제할 수 있음
실행 x (1) 파일을 실행할 수 있음 (디렉토리의 경우 내부 이동 가능)

권한 표기 방법

파일 및 디렉토리의 권한은 ls -l 명령어를 사용하면 확인할 수 있습니다.

ls -l

예제 출력:

-rw-r--r-- 1 user group 1234 Mar 8 12:00 example.txt

이 출력의 의미는 다음과 같습니다.

  • -rw-r--r-- → 파일 권한
  • 1 → 하드 링크 수
  • user → 파일 소유자
  • group → 파일이 속한 그룹
  • 1234 → 파일 크기(바이트)
  • Mar 8 12:00 → 파일 수정 시간
  • example.txt → 파일 이름

권한 부분 -rw-r--r--을 해석해 보면:

  • - : 일반 파일 (d는 디렉토리를 의미)
  • rw- : 소유자(user)는 읽기(r) 및 쓰기(w) 가능
  • r-- : 그룹(group)은 읽기(r)만 가능
  • r-- : 기타 사용자(other)도 읽기(r)만 가능

2. chmod 명령어로 권한 변경하기

chmod 명령어는 파일 및 디렉토리의 읽기, 쓰기, 실행 권한을 변경하는 데 사용됩니다.
권한 변경 방법에는 기호 모드(Symbolic Mode)숫자 모드(Numeric Mode) 가 있습니다.

(1) 기호 모드(Symbolic Mode)

기호 모드는 다음과 같은 형식으로 사용됩니다.

chmod [누구를][+/-/=][권한] 파일명
  • u → 소유자(Owner, user)
  • g → 그룹(Group)
  • o → 기타 사용자(Others)
  • a → 모든 사용자(All, u, g, o 포함)

예제:

chmod u+x script.sh  # 소유자에게 실행 권한 추가
chmod g-w document.txt  # 그룹의 쓰기 권한 제거
chmod o=r notes.txt  # 기타 사용자에게 읽기 권한만 부여
chmod a+x program  # 모든 사용자에게 실행 권한 추가

(2) 숫자 모드(Numeric Mode)

숫자 모드는 권한을 8진수 값으로 설정하는 방법입니다.
각 권한 값의 합계를 이용하여 설정합니다.

  • r (읽기) = 4
  • w (쓰기) = 2
  • x (실행) = 1
  • 없을 경우 = 0

권한 숫자 값

--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7

예제:

chmod 755 script.sh  # 소유자는 rwx(7), 그룹과 기타 사용자는 r-x(5)
chmod 644 document.txt  # 소유자는 rw-(6), 그룹과 기타 사용자는 r--(4)
chmod 777 myfile  # 모든 사용자에게 모든 권한 부여 (rwxrwxrwx)
chmod 600 private.txt  # 소유자만 읽기/쓰기 가능, 나머지는 접근 불가 (rw-------)

디렉토리 권한 설정 예제:

chmod 755 myfolder  # 모든 사용자가 디렉토리를 열 수 있음
chmod 700 private_folder  # 소유자만 접근 가능

3. chown 명령어로 소유자 및 그룹 변경하기

chown 명령어는 파일 또는 디렉토리의 소유자(owner)와 그룹(group)을 변경하는 데 사용됩니다.

(1) 소유자 변경

chown 새로운사용자 파일명

예제:

chown alice example.txt  # 파일의 소유자를 alice로 변경

(2) 소유자와 그룹 변경

chown 새로운사용자:새로운그룹 파일명

예제:

chown bob:developers project/  # 프로젝트 디렉토리의 소유자를 bob, 그룹을 developers로 변경

(3) 디렉토리 및 하위 파일까지 변경 (재귀적 변경)

chown -R user:group directory/

예제:

chown -R alice:staff /var/www/html  # /var/www/html 내부의 모든 파일 및 디렉토리 소유자 변경

4. chgrp 명령어로 그룹 변경하기

소유자는 유지하고 그룹만 변경하려면 chgrp을 사용합니다.

chgrp 새로운그룹 파일명

예제:

chgrp admins config.ini  # config.ini 파일의 그룹을 admins로 변경

디렉토리 내부까지 그룹 변경 (재귀적 변경):

chgrp -R developers project/

5. 실전 예제: 사용자 접근 권한 설정하기

예제 1: 특정 사용자만 접근 가능한 파일 만들기

touch secret.txt
chmod 600 secret.txt  # 소유자만 읽기/쓰기 가능

예제 2: 실행 가능한 스크립트 파일 설정

chmod 755 script.sh  # 모든 사용자가 실행 가능하도록 설정

예제 3: 웹 서버 디렉토리 설정

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

6. 결론

  • chmod를 사용하여 파일 및 디렉토리의 권한을 변경할 수 있습니다.
  • chown을 이용하면 소유자와 그룹을 변경할 수 있습니다.
  • chgrp은 그룹만 변경하는데 사용됩니다.
  • 적절한 권한 설정은 보안 및 시스템 관리에 매우 중요합니다.

위 내용을 익히면 파일과 디렉토리의 접근 제어를 효과적으로 관리할 수 있습니다!