linux 권한

greenTea·2023년 9월 16일
0

리눅스 파일 및 디렉터리 권한

🫠리눅스는 다중 사용자 환경에서 개발되었기 때문에 파일과 디렉터리의 권한 관리가 중요합니다. 이 글에서는 리눅스의 파일 및 디렉터리 권한에 대해 설명하고, 어떻게 이를 관리하는지에 대해 알아보겠습니다.

권한의 종류

리눅스에서 파일 및 디렉터리의 권한은 크게 다음 세 가지로 나뉩니다

  • 읽기(Read, r)
  • 쓰기(Write, w)
  • 실행(Execute, x)

권한의 대상

리눅스에서 권한의 대상은 다음과 같습니다:

  • 소유자(Owner)
  • 그룹(Group)
  • 기타 사용자(Others)

🧐ls -l 명령어를 실행하면, 파일 및 디렉터리의 권한, 소유자, 그룹등을 확인할 수 있습니다.

ls -l 실행 결과

$ ls -l
drwxr-xrw- 2 user1 user1 4096 Sep  5 16:21 hello
-rw-r--r-- 1 user1 user1    0 Sep  5 16:21 file1.txt

여기서 drwxr-xr-x는 권한을 나타내며, user1은 소유자와 그룹을 나타냅니다.

hello 폴더를 기준으로 아래와 같은 권한을 가지게 됩니다.

  • 소유자 : rwx (읽기, 쓰기, 실행)
  • 그룹 : r-x (읽기, 실행)
  • 그 외: rw- (읽기, 쓰기)

권한이 없을 경우

🤔만약 user2로 변경하고 나서 /home/user1을 확인해보면 아래와 같은 문구가 나오게 됩니다.

ls -l /home/user1
ls: cannot open directory /home/user1: Permission denied

위와 같은 상황이 발생한 이유는 권한이 없기 때문입니다.
권한을 확인하기 위해 ls -ld를 실행해보면 해당 디렉토리의 권한을 확인 할 수 있습니다.

ls -ld로 다른 디렉토리 권한 확인

ls -dl /home/user1
drwx------. 5 user1 user1 279 Sep  6 10:42 /home/user1

🤔보시면 소유자에 대해서는 모든 권한이 풀려있지만 그 외에는 모두 막혀 있는 상태입니다.

특히 디렉토리의 경우 파일과는 다르게 x의 의미가 조금 다른데 파일에서는 x가 파일의 실행 가능을 의미했다면 디렉토리의 경우 접근 권한을 의미합니다.

그래서 cd 명령어로 /home/user1로 접근하려고 하면 permission이 없다는 문구가 나오면서 거부하게 됩니다.

chmod로 권한 변경하기

😑chmod 명령어는 기본적으로 두 가지 형식으로 사용될 수 있습니다.

기호(Symbolic) 방식

😎기호 방식에서는 u (사용자), g (그룹), o (기타), a (모든 사용자)를 이용하여 권한을 설정합니다. + (추가), - (제거), = (설정) 연산자와 함께 사용합니다.

# 사용자에게 읽기 권한을 추가
chmod u+r myfile.txt

# 그룹에게 쓰기 권한을 제거
chmod g-w myfile.txt

# 모든 사용자에게 실행 권한을 설정
chmod a=x myfile.txt

# 여러 권한을 한번에 설정하기 (아래 명령 실행시 소유자,그룹,그 외의 권한이 모두 rw-로 변경됩니다.)
chmod ugo=rw- myfile.txt

숫자 방식

🫡숫자 방식에서는 0-7 사이의 숫자를 이용해 권한을 설정합니다. 각 숫자는 3비트로 이루어져 있으며, 각 비트는 읽기(r=4), 쓰기(w=2), 실행(x=1)에 해당합니다.

0-7까지의 숫자는 다음과 같은 권한을 나타냅니다:

- `0`: `---` (권한 없음)
- `1`: `--x` (실행)
- `2`: `-w-` (쓰기)
- `3`: `-wx` (쓰기 + 실행)
- `4`: `r--` (읽기)
- `5`: `r-x` (읽기 + 실행)
- `6`: `rw-` (읽기 + 쓰기)
- `7`: `rwx` (읽기 + 쓰기 + 실행)

# 소유자에게 읽기/쓰기/실행(7), 그룹에게 읽기/실행(5), 
#기타 사용자에게 읽기(4) 권한을 준다
chmod 754 myfile.txt
profile
greenTea입니다.

0개의 댓글