Linux의 파일 권한에 대해서 간단히 소개하고, 파일 권한을 어떻게 변경하는지 알아보겠습니다.
1. File Owner
리눅스에서는 파일 소유자 별로 다른 접근 권한을 부여할 수 있습니다.
리눅스는 파일 소유자를 3가지(Owner, Group, Others)로 분류합니다.
- Owner : 파일의 소유자
- Group : 파일의 그룹
- Others : 사용자가 Owner와 Group에 속하지 않으면 Others입니다.
파일의 Owner, Group은 Shell에서 ls -al
명령어를 입력하면 확인할 수 있습니다. 아래 그림에서 Owner와 Group으로 표기한 것이 파일의 Owner 이름과 Group 이름입니다.
그리고 Shell에서 id
명령어를 입력하면, 현재 Shell의 Owner(uid)와 Group(gid)이 무엇인지 확인할 수 있습니다.
$ id
uid=1000(js) gid=1000(js) groups=1000(js),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare)
Shell의 소유자와 파일이 소유자에 따라서, 다음과 같은 방식으로 접근 권한이 적용됩니다.
- 만약 Shell의 Owner가 파일의 Owner와 일치한다면, 파일 Owner에 설정된 접근 권한이 적용됩니다.
- 만약 Group과 일치한다면, 파일의 Group에 설정된 접근 권한이 적용됩니다.
- 둘 다 일치하지 않는다면, 파일의 Others에 설정된 접근 권한이 적용됩니다.
2. File Permission
파일 그룹은 터미널에서 ls -al
명령어를 입력했을 때, 아래 그림과 같이 Permission으로 표기한 위치에 보여줍니다.
맨 왼쪽의 위치가 1이고 가장 마지막의 위치가 10이라고 했을 때, 각각 다음과 같은 의미를 갖습니다.
Position | Description |
---|---|
1 | File type |
2~4 | Owner permission |
5~7 | Group permission |
8~10 | Others permission |
File type은 다음과 같은 종류가 있습니다.
- - : 일반 파일
- d : 디렉토리 파일
- b : 블록 디바이스 파일 (Block Device File)
- c : 문자 디바이스 파일 (Character Device File)
- l : 심볼릭 링크 파일
File type을 제외한 나머지 9개 문자는 Owner, Group, Other의 권한을 의미합니다. 각각 3자리로 권한을 표현하는데, 권한 종류는 다음과 같습니다.
- r : read 권한
- w : write 권한
- x : execute 권한
rwx는 숫자로도 표현하는데, r은 4, w는 2, x는 1입니다. 그래서 7(4+2+1)
은 rwx
권한을 의미합니다. rw-
는 4+2 = 6
이 됩니다.
3. 파일 권한 변경
Linux의 shell은 chmod 명령어를 제공하여 파일의 권한을 변경할 수 있습니다.
Syntax는 다음과 같습니다.
$ chmod <permission> <fileName>
위에서 권한은 숫자로 표현할 수 있다고 했는데, 777은 Owner=7(rwx)
, Group=7(rwx)
, Others=7(rwx)
를 의미합니다.
아래 예제를 보시면, 모든 그룹에 rwx 권한이 부여된 것을 확인할 수 있습니다.
$ chmod 777 sample.txt
$ ls -al sample.txt
-rwxrwxrwx 1 js js 0 10월 10 20:57 sample.txt
그리고 다른 예로, 212
로 파일 권한을 다시 변경해보았습니다.
$ chmod 212 sample.txt
$ ls -al sample.txt
--w---x-w- 1 js js 0 10월 10 20:57 sample.txt
3.1 문자로 파일 권한 설정
숫자 대신에, rwx와 같은 문자로 권한을 변경하려면 다음과 같이 설정하시면 됩니다.
$ chmod u=rwx,g=rw,o=r sample.txt
$ ls -al sample.txt
-rwxrw-r-- 1 js js 0 10월 10 20:57 sample.txt
u=?, g=?, o=?
는 groupName을 의미하며, 의미는 다음과 같습니다. 각각의 그룹에 설정할 권한을 문자로 입력하시면 됩니다.
- u : Owner를 의미
- g : Group을 의미
- o : Others를 의미
3.2 특정 파일 권한 추가, 제거
특정 그룹에 특정 권한만 추가하거나, 제거할 수도 있습니다.
Syntax는 다음과 같습니다.
chmod <groupName>+<permissionName> <fileName>
or
chmod <groupName>-<permissionName> <fileName>
위의 Syntax에서 +
는 특정 그룹에 권한을 부여하라는 의미이고, -
는 특정 그룹에 권한을 뺏으라는 의미입니다.
groupName은 다음과 같습니다.
- u : Owner를 의미
- g : Group을 의미
- o : Others를 의미
- a : Owner, Group, Others 모두를 의미
3.3 특정 파일 권한 추가, 제거
아래 예제에서, u+r
은 Owner에 read 권한을 추가하라는 의미입니다. rw를 추가하고 싶다면 u+rw
로 입력하면 되고, rwx를 추가하고 싶다면 u+rwx
를 입력하시면 됩니다.
$ ls -al sample.txt
------x-w- 1 js js 0 10월 10 20:57 sample.txt
$ chmod u+r sample.txt
$ ls -al sample.txt
-r----x-w- 1 js js 0 10월 10 20:57 sample.txt
만약 Group이나 Others의 권한을 추가하고 싶다면 g+r
또는 o+r
처럼 입력하시면 됩니다.
3.4 특정 파일 권한 추가, 제거
다음 예제는 권한을 뺏는 예제입니다. 위에서 설명한 것과 동일하고, 권한이 회수된다는 것만 차이가 있습니다.
$ ls -al sample.txt
-rwxr-xrwx 1 js js 0 10월 10 20:57 sample.txt
$ chmod o-rwx sample.txt
$ ls -al sample.txt
-rwxr-x--- 1 js js 0 10월 10 20:57 sample.txt
3.5 특정 파일 권한 추가, 제거
마지막으로 a
를 사용하여 Owner, Group, Others에 일괄적으로 권한을 부여하거나 회수하는 예제입니다.
$ chmod a-rwx sample.txt
$ ls -al
---------- 1 js js 0 10월 10 20:57 sample.txt
$ chmod a+rwx sample.txt
$ ls -al
-rwxrwxrwx 1 js js 0 10월 10 20:57 sample.txt
Related Posts
- Ubuntu/Linux - 특정 이름이 들어간 파일 모두 찾고 삭제하기
- Ubuntu/Linux - 특정 이름이 포함된 프로세스 모두 종료
- Ubuntu/Linux - 사용자 계정 이름 확인 (id, whoami)
- Ubuntu/Linux - E: unable to locate package 에러 해결
- Ubuntu 22.04/20.04 - Yarn 설치 방법
- Linux/Ubuntu - grep 명령어로 문자열 검색
- Linux/Ubuntu - 터미널에서 seq로 명령어 N회 반복
- Linux/Ubuntu - wc 명령어로 Line(줄) 개수 세기
- bash: pip: command not found 문제 해결 (Linux/Ubuntu)
- Ubuntu 22.04 - Swap 메모리 늘리기
- Linux - 파일이 수정된 날짜/시간 확인 방법
- Linux - 파일, 디렉토리 삭제 명령어(rm -rf, rmdir)
- 우분투 22.04 - deb 파일 설치하기
- Ubuntu 20.04 - OpenJDK 11 설치, 삭제
- Linux - ps 명령어로 실행 중인 프로세스(PID) 확인
- Ubuntu 20.04 - SSH 설치와 접속 방법
- Ubuntu에서 PPA 저장소 추가, 제거 방법
- Ubuntu 22.04 - Brave 브라우저 설치
- Ubuntu 22.04 - 프로스트와이어(FrostWire) 설치
- Ubuntu 22.04 - Remmina 설치 방법
- Ubuntu 22.04 - Rust 설치하기
- Ubuntu 22.04 - 텔레그램 설치하기
- Ubuntu - Deluge 토렌트 클라이언트 설치
- Ubuntu JDK 17 (OpenJDK) 설치, 삭제
- Ubuntu 20.04 스팀(Steam) 설치 방법
- Ubuntu에서 draw.io 설치하는 방법
- 우분투에 VMware 설치하기
- [Ubuntu] VMware에서 Windows 11 설치
- Vi/Vim에서 1줄 또는 여러줄 삭제 방법
- Vi/Vim에서 라인 번호 표시하 기
- 우분투에서 rar 압축, 압축 풀기
- Ubuntu에서 구글 드라이브 사용하기 (로컬 폴더에 마운트)
- [Ubuntu] apt-cache search, 설치 가능한 패키지 검색
- Ubuntu - DNS 캐시 삭제 방법
- Ubuntu에서 사용할 수 있는 Text Editor 소개