[Linux] File & Directory Permission
- Linux
- 2021. 2. 9.
이번 글에서는 Linux의 File Permission에 대해 알아보겠습니다.
1. Basic File & Directory Permission
1-1) file
permission 의 종류는 다음과 같습니다.
- r : read
- w : wirte
- x : execute
permission 을 부여할 수 있는 대상은 다음과 같습니다.
- u : user owner
- g : group owner
- o : others (other than user and group members)
- a : all
example
예를 들어 위와 같은 permission 을 가진 file 이 있을 때 이 file 에 대한 권한 정보는 다음과 같이 해석 할 수 있습니다.
- ali (user)는 tpsreport 파일에 대해 read / write / execute 권한을 가집니다.
- sales (group)는 tpsreport 파일에 대해 read / wrtie 권한을 가집니다.
- others (other than user and group members) 는 tpsreport 파일에 대해 read 권한을 가집니다.
1-2) directory
directory permission 은 다음과 같이 조금 다른 의미로 해석됩니다.
ls -l 명령어로 directory 의 permission 을 확인해보면 file 과 다르게 permission의 맨 앞에 d 가 명시되어 있는 것을 확인할 수 있습니다.
또한 directory 의 permission 은 다음과 같이 해석 될 수 있습니다.
- r : 해당 디렉토리에 존재하는 파일들의 name 을 읽을 수 있는 권한을 가집니다.
- w : 해당 디렉토리에 존재하는 파일들을 수정할 수 있는 권한을 가집니다.
- x : 해당 디렉토리에 존재하는 파일의 콘텐츠와 메타데이터에 접근할 수 있는 권한을 가집니다. ls -l 명렁어로 확인할 수 있는 파일의 detail 정보 또한 메타데이터 중 하나입니다.
2. Changing File Permission (chmod)
permission 을 수정하는 방법에는 symbolic notation 과 octal notation 두가지 방법이 있습니다.
2-1) symbolic notation
symbolic 의 사용방법은 간단합니다.
# add read permission to group
chmod g+r file1
예를 들어 group 에게 read permission 을 추가하고 싶은 경우 다음과 같이 입력합니다.
# remove read permission to group
chmod g-r file1
마찬가지로 group 에게 read permission 을 제거하고 싶은 경우 다음과 같이 입력합니다.
# multiple permission change in one line
chmod u+rwx,g+rw,o+x file1
한줄의 명령어로 user / group / other 에게 한번에 permission 을 add / remove / set 할 수도 있습니다.
위 명령어를 해석해보면 다음과 같습니다.
- user 에게 read/write/execute permission 을 추가합니다.
- group 에게 read/write permission 을 추가합니다.
- other 에게 execute 권한을 add 추가합니다.
# set permission to all
chmod a=r file1
위와 같이 입력하면 모든 사용자 (user/group/others) 에게 read 권한만 부여합니다.
2-2) octal notation
octal 은 symbolic 의 rwx 를 numeric 하게 풀어서 사용합니다.
예를 들어 -rwx-w----x 권한은 721 로 rwxrwxrwx 는 777로 numeric 하게 변환해 사용합니다.
chmod 721 file1
사용 방법은 위와 같습니다.
3. Modify File Ownership (chown & chgrp)
file 의 user & group ownership 도 간단하게 수정할 수 있습니다.
위와 같이 ec2-user (user) / ec2-user (group) ownership 을 가지고 있는 파일이 있을 경우.
# create new user
useradd user1
먼저 새로운 user를 위의 명령어로 생성합니다. 새롭게 생성된 유저의 group은 자동으로 동일한 이름의 user1 으로 생성됩니다.
# login as root user
sudo su - root
permission denied 에러가 발생한 경우 위의 명령어를 입력해 root 계정으로 접속후 다시 명령어를 실행합니다.
# change user ownership
chown user1 file1
다음으로 위의 명령어를 입력해 file1 의 user ownership 을 변경 할 수 있습니다.
# change group ownership
chgrp user1 file1
마찬가지로 file1 의 group ownership 도 변경할 수 있습니다.
# change user & group ownership in one line
chown user1:user1 file1
한번에 user & group ownership 을 변경하고 싶은 경우 위와 같이 입력할 수 있습니다.
chown -R user1:user1 directory
만약, 특정 directory 내부를 돌면서 recursive 하게 전체 user & group 의 ownership을 변경하고 싶다면 위와 같이 입력할 수 있습니다.
'Linux' 카테고리의 다른 글
[Linux] Copying Files & Directories (0) | 2021.02.20 |
---|---|
[Linux] Finding Files (0) | 2021.02.20 |
[Linux] Listing Files (0) | 2021.02.06 |
[Linux] Shell (0) | 2021.02.06 |
[Linux] Directory Structure (0) | 2021.02.06 |