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은 그룹만 변경하는데 사용됩니다.
- 적절한 권한 설정은 보안 및 시스템 관리에 매우 중요합니다.
위 내용을 익히면 파일과 디렉토리의 접근 제어를 효과적으로 관리할 수 있습니다!
'Linux' 카테고리의 다른 글
리눅스에서 디렉토리 탐색하는 명령어 (ls, cd) (0) | 2025.03.18 |
---|---|
리눅스에서 파일 검색하는 방법 (find, locate) (0) | 2025.03.17 |
리눅스에서 파일 이름 바꾸기 (rename) (0) | 2025.03.15 |
리눅스에서 파일 복사 및 이동하는 법 (0) | 2025.03.14 |
리눅스 파일 및 디렉토리 생성 및 삭제 (0) | 2025.03.13 |