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

우리가 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-- 로 생성된 게 보입니다.
'Linux 2급' 카테고리의 다른 글
리눅스 사용자 환경설정 파일, 실행파일(GID, UID, echo, passwd) (0) | 2023.11.02 |
---|---|
리눅스 지역변수,전역변수,알리아스 (Alias) (0) | 2023.11.02 |
리눅스 기본 명령어(grep, sort, uniq, cut, awk, 정규 표현식, 다중 명령어, shell 쿼터) (2) | 2023.11.02 |
리눅스의 꽃 vi 편집기 (vi editor) (1) | 2023.11.02 |
리눅스 기본 명령어 (touch, cat, head, tail, more, less, file, stat, cp, mv, rm, tty) 쉽게 배우기 (0) | 2022.06.29 |