[Linux] File & Directory Permission

반응형

이번 글에서는 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 에 대한 권한 정보는 다음과 같이 해석 할 수 있습니다.

  1. ali (user)는 tpsreport 파일에 대해 read / write / execute 권한을 가집니다.
  2. sales (group)는 tpsreport 파일에 대해 read / wrtie 권한을 가집니다.
  3. 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

댓글

Designed by JB FACTORY