03 Acess Control

Sisyphus·2022년 7월 16일

Ubuntu

목록 보기
4/9

접근 권한

r ⇾ read, 4    (ls, cat 같은 명령어를 사용하려면 있어야 됨)
w ⇾ write, 2   (touch, mkdir 같은 명령어를 사용하려면 있어야 됨)
x ⇾ execute, 1


접근 카테고리

user : 파일 소유자
group : 파일 소유 그룹
other : 모든 다른 사용자들

Ex)
drwxr-xr-x 5 mglee dsm 4096 2012-01-30 11:15 mglee

d : 디렉터리, (파일: -)
rwx : user permission, read, write, execute
r-x : group permission, read, execute
r-x : other permission, read, execute
4096 : 파일 크기
날짜, 시간 : 최신 수정 날짜, 시간
mglee : 이름


접근 권한 변경

chmod ###(user, group, other) file/directory name

오직 파일 소유자나 root만이 접근 권한 변경 가능

Ex) chmod 421 testtest 디렉토리 권한을 user(r--), group(-w-), other(--x)로 변경


접근 권한 숫자로 표현

숫자권한설명
0---no permission
1--xexecute permission
2-w-write permission
3-wxwrite, execute permission
4r--read permission
5r-xread, execute permission
6rw-read, write permission
7rwxread, write, execute permission

write permission ⇾ 매우 조심스럽게 다뤄줘야 함 ⇾ 왜? 누군가 중요한 파일 내용을 수정할 수 있음
⇾ sticky 비트를 통해 해결 가능

cf) 디렉토리에 touch 명령어를 사용하여 파일을 생성하기 위해서는 write 권한 뿐만 아니라 execute 권한도 필요하다.



+-=

add(+) : add permission
remove(-) : remove permission
assignment(=) : assignment permission

Ex)
chmod +r test : user, group, other에 read 권한 추가
chmod o-x test : other 권한 중에 execute 권한 제거
chmod g=rw test : group 권한에 read, write 권한 할당
chmod u+x,go+w test : user에 execute 권한 추가, group과 other에 write 권한 추가
chmod ugo=rw test : user, group, other에 rw 권한 할당
chmod =rw test : user, group, other에 rw 권한 할당, But) umask의 영향을 받음
⇾ umask가 000면 모두 rw 권한을 할당 받지만, 022같이 다른 값이면 umask 값에 따라 권한을 할당 받음


소유권 변경

오직 root만 소유권 변경 가능

chown owner file/directory name
Ex) chown user1 a : a의 소유권을 user1으로 변경


그룹의 소유권 변경

오직 그룹 구성원(변경 전 그룹, 변경 후 그룹 둘다의 멤버 여야 함)이나 root만 변경 가능

chgrp group file/directory name

Ex) chgrp team1 test : test의 그룹 소유권을 team1으로 변경

cf) 그룹 소유권 변경은 해당 유저가 로그아웃 후 재로그인 해야 적용이 됨


Recursive modification

-R 옵션을 사용하여 chown 또는 chgrp 사용시 하위 디렉토리 와 파일 까지 변경 사항이 적용 됨

Ex) chgrp -R team1 test : test 디렉토리와 그 하위 디렉토리, 파일들 까지 group 소유권을 team1으로 변경

chmod -R u+x test ⇾ 문제 발생

원래 실행 권한이 없던 파일들 까지 실행 권한을 줘버림 (디렉토리는 실행 권한이 있지만, 일반 파일은 실행 권한이 없음)
solution) chmod -R u+X testtest 디렉토리와 그 하위 디렉토리, 파일들 까지 user에 실행 권한 추가, 실행 권한 부여시 디렉토리와 원래 실행권한이 있던 파일만 권한 추가


특별 권한

setuid : setuid가 설정된 파일 실행시 일시적으로 파일 소유자의 권한을 얻을 수 있게 됨 ⇾ 파일 소유자가 root이면 root 권한을 얻게 됨 ⇾ 보안상 문제가 될 수 있음
setuid가 걸린 프로그램 실행시 euid(effective user id)가 파일 소유자의 id가 됨.
사용법 : sudo chmod u+s file/directory name
ls -l 을 하면 해당 대상의 user 권한에 s가 추가 됨
cf) 파일 실행 방법 ⇾ ./backbash -p : backbash 파일을 -p 옵션으로 실행

setgid : setgid가 설정된 파일 파일 실행시 일시적으로 파일 소유 그룹의 권한을 얻을 수 있게 됨
사용법 : sudo chmod g+s file/directory name
ls -l 을 하면 해당 대상의 group 권한에 s가 추가 됨

sticky : sticky bit가 설정된 디렉토리에 파일을 생성하면 해당 파일 생성자와 root만이 파일 삭제 및 수정 가능 (원래 other에 write 권한이 있으면 다른 사람도 파일 삭제 및 수정 가능)
사용법 : chmod o+t directory name
ls -l 을 하면 해당 대상의 other 권한에 t가 추가 됨



Permission as numbers

4000 ⇾ setuid
2000 ⇾ setgid
1000 ⇾ sticky
맨앞 숫자 ⇾ special bit ⇾ special permission을 나타냄

chmod 1777 tempdirectory ⇾ sticky directory, read/write/execute for all users
chmod 6711 program ⇾ setuid+setgid, read/write/execute for user, execute for group and other


umask

파일 or 디렉터리 생성시 초기 권한, 파일 or 디렉터리 기본 권한에서 umask 값을 뺌

파일 ⇾ mask : 666(rw-rw-rw-)
디렉터리 ⇾ mask : 777(rwxrwxrwx)

umask 022 ⇾ umask를 022로 설정
파일 : 666 - 022 = 644 (rw-r--r--)
디렉터리 : 777 - 022 = 755(rwxr-xr-x)

주의!
umask 333 (-wx-wx-wx)
파일
  rw-rw-rw-
- -wx-wx-wx
----------------
r--r--r-- (444)333 아님 조심해야 함! 

umask : umask 값 출력
umask -S : umask 값 글자로 출력 (read, write, execute)

0개의 댓글