본문 바로가기
Linux 2급

리눅스 권한 (umask, chmod), symbolic (심볼릭링크x)

by 방뭉밍봉 2023. 11. 2.

리눅스의 권한을 알아보는 시간입니다 리눅스에서 권한은 아주 중요한 역할을 하기 때문에 꼭 공부하셔야 하는 것 중에 하나입니다 엄청 쉽고 이해하기 쉽게 설명하겠습니다.

우리가 ls -l / 을 하면 / 경로에 있는 파일들을 전부 보여줍니다 여기서 권한이라는 것은

저것들입니다. 저것들을 한번 자세히 살펴봅시다.

drwxr-xr-x. 2 root root 23 9월 30 22:13 test

- ------------ - ------ ---- -- --------------- ----

1) 2) 3) 4) 5) 6) 7) 8)

1) 파일의 타입

- 일반 파일

d 디렉터리 파일

b, c 장치 파일

l 링크 파일

2) 파일의 권한

rw- / r-- / r--

① ② ③

① 파일 소유자의 권한

② 파일 소유 그룹의 권한

③ 그 외 사용자의 권한

3) 하드 링크 파일의 개수

4) 파일의 소유자

5) 파일의 소유 그룹

6) 파일의 크기

7) 파일의

8) 파일의 이름

파일의 타입을 확인할 수 있습니다 자세하게 보는 명령어로는 file이라는 명령어가 있죠

# > file [path]

/test는 디렉터리라는 것을 알 수 있습니다

여기서 도 d라고 써져있어 디렉터리 파일이란 것을 알 수 있습니다

 

 

이제 정말 중요한 파일의 권한을 설명해드리겠습니다 우선 파일에는 세 가지 권한이 있슴다.

r = read (읽기 권한)

w = write (쓰기 권한)

x = execute (실행 권한)

그리고 그 권한을 갖는 소유자가 있습니다 아까 본 /test 파일로 설명을 해드리면

drwxr-xr-x

제일 앞 부분 d 파일의 종류를 가리키는 곳을 빼면 rwx/r-x/r-x로 나눌 수 있습니다

저 나눈 곳은 순서대로

rwx / r-x / r-x

user group other

u g o

이렇게 나눠지게 됩니다.

첫 번째 옥탯에 rwx 가 있으니 (user) 파일의 소유자가 읽기 권한 쓰기 권한 실행 권한 모두 갖고 있다는 것이고

두 번째 옥탯인 (group) 해당 그룹에 있는 사람들은 읽기 권한 실행 권한을 가집니다

세 번째 옥탯인 (other) 파일의 소유자 해당 그룹에 없는 그 외 사용자들도 마찬가지로

읽기 권한과 쓰기 권한을 가집니다.

쉽게 정리하면 권한에는 세 가지 권한과 세 가지 사용자들로 나뉩니다

r w x 세 개의 권한과

read write execute

u g o 세 개의 사용자

user group other

그리고 권한 rwx에는 각각 숫자(symbolic)이 붙습니다

r = 4

w = 2 (중요 중요 중요 중요)

x = 1

이 숫자들은 권한을 설정할 때 사용됩니다. 우선/test 파일에 권한을 건드려 봅시다

권한 경로

# > chmod [perm] [path]

 

#> ls -l / | grep "test"라는 저번에 배운 파이프와 grep 명령어를 사용해

/test 파일에 권한을 확인해 봅시다

rwx/r-x/r-x 권한을 가지고 있군요 우리는 여기서 chmod 명령어로 user 그룹 u에 쓰기 권한을 빼 봅시다

# > chmod 555 /test

해석해 봅시다

(chmod) 권한을 바꾸는 명령어

(555) 권한 설정 아까 권한은 숫자로도 표기한다고 했습니다

r = 4 읽기 권한

w = 2 쓰기 권한

x = 1 실행 권한

555를 줬다는 것은

(user) (group) (other)

u g o

5 5 5

4+1 = 5

r+x = r-x

이렇게 세 그룹에 r=4 + x=1 읽기 권한과 쓰기 권한만 주겠다는 소리입니다 확인해 볼까요?

 

짠! /test 파일이 rwx/r-x/r-x에서 /r-x/r-x/r-x로 권한이 변경되었습니다

(useradd) (su) 명령어 등은 나중에 다루겠습니다. 우선 따라 해봅시다

vi /test/touchtest라는 파일을 수정해서 아무 말이나 써 봅시다

그리고 useradd test라는 명령어를 사용해 test라는 임시 사용자를 생성해줍시다

su test 하면 root 계정에서 test라는 방금 만든 계정으로 사용자가 변경됩니다.

짠! test 계정으로 로그인이 됐습니다

test 계정으로 # > cat /test/touchtest 방금 수정한 파일을 읽어옵니다 (hi test user?!)

exit라고 쓰시면 로그아웃하고 다시 root 계정으로 돌아옵니다

root 계정에서 chmod 770 /test로 /test 디렉터리의 권한을

7 7 0

u g o

소유자 u 와 그룹 g 에겐 모든 권한을 그 외 사용자 o 에게는 권한을 하나도 안 줍니다

/test 파일의 권한이 rwx/rwx/---로 변경된 걸 확인할 수 있습니다.

다시 su test 명령어로 test 계정으로 로그인하여 cat /test/touchtest 파일을 읽어보려 하지만 허가가 거부된 걸 확인할 수 있습니다 test 계정은 root의 그룹도 파일 생성자도 아닌 (other) 그 외 사용자이기에 --- 권한을 가져 cat, vi 명령어 등 읽기, 쓰기, 실행이 불가능한 상태인 것을 확인할 수 있습니다.

또한 chmod 명령어는

이렇게도 사용 가능합니다 o(other) + w (write) 권한을 주겠다는 소리입니다

반대로 -를 사용하면 권한을 다시 없앨 수도 있습니다

여러 개의 권한을 한 번에 줄 수 있고 여러 사용자의 권한도 한 번에 줄 수도 없앨 수도 있습니다.

(원래는 이 방식을 먼저 알려드려야 하지만 그 아무 누구도 이렇게 권한 설정을 하지 않을 겁니다 아마도... )

umask [perm]

umask 명령어를 알아봅시다

exit 하여 root 계정으로 돌아온 뒤 umask라는 명령어를 사용하면 0022라고 뜨는 걸 확인할 수 있습니다.

umask 명령어는 쉽게 설명해서 0 022 맨 앞자리 0은 스페셜 모드를 설정하는 것인데 저도 아직 한 번도 사용해본 적 없을 정도로 건드리지 않습니다.

1인경우 (2진수 001) - Sticky mode

2인경우 (2진수 010) - set GID mode

4인경우 (2진수 100) - set UID mode

맨 앞자리 0 을 빼고 022인데 이것은 새로운 파일을 생성할 때

0 2 2

u g o

저 숫자만큼의 권한을 빼고 생성하겠다는 기본값 설정 같은 거입니다

새로운 파일을 생성하여 예로 들어 봅시다

기본 umask 값은 022에서 새로운 파일을 생성하였더니

777-022=755의 rwx/r-x/r-x 권한이 설정된 걸 확인할 수 있습니다

★참고로 ll <- (LL) 명령어는 저희가 자주 쓰는 ls -l 명령어의 축약어 정도로 보시면 됩니다

touch 명령어로 /test 파일에 umasktest라는 일반 파일을 생성하였는데

응? rw-/r--/r-- ????

777-022=755 가 나오지 않고 777-133=644 가 나온 것을 확인할 수 있습니다

이는 일반 빈 파일은 실행 권한이 없기 때문에 실행 권한인 1, x를 빼고 생성되는 걸 확인할 수 있습니다

아까 건드려준 touchtest 파일은 x 권한이 한 군데라도 있기 때문에 실행파일인 초록 색깔로 변한 것을 확인할 수 있습니다(초록색 파일은 실행파일입니다. 윈도우에.exe 라고 생각)

이 umask 값을 건드려줍시다

# > umask 333

새로운 파일을 만들어서 확인했더니

777-333=444 권한인 r--/r--/r-- 로 생성된 게 보입니다.