파일의 접근 권한
리눅스는 다중 사용자 시스템으로 여러 명의 사용자가 동시에 접속해 작업이 가능하다.
이때, 다른 사용자가 내 파일을 읽고 수정, 삭제가 가능해 이를 막기 위해 보안 기능을 제공한다.
사용자 카테고리
소유자 그룹 기타사용자가 있다.
소유자 : 파일을 생성한 사용자, 명령으로 소유자 변경 가능
그룹 : 파일과 동일한 그룹에 속한 사용자들
이때 파일과 동일한 그룹이란 일반적으로 파일을 생성한 사용자의 기본 그룹
상위 디렉토리에 특수한 권한이 부여되어 있을 때, 다른 그룹으로 지정
파일 소속 그룹은 (root가) 명령으로 변경 가능
기타 사용자 : 소유자도 아니고 그룹에도 속하지 않는 모든 사용자
파일이 속한 그룹 명령어
groups[사용자명]
사용자 명 안쓰면 자신이 속한 그룹 이름 출력
사용자 명 쓰면 내가 쓴 사용자가 속한 그룹의 이름 출력
<파일 종류> (ls -l 했을 때 맨 앞 첫 문자가 파일 종류를 뜻함)
- | 일반파일 |
d | 디렉토리 파일 |
I | 심볼릭 링크파일 |
b | 블록장치 특수파일 |
c | 문자 장치 특수파일 |
s | 통신에 사용되는 특수파일 |
p | 소켓, 네트워크 통신에 사용되는 특수파일 |
숫자와 기호 이용한 파일 접근 권한
chmod[옵션] 모드 파일명
1. 기호모드
chmod [사용자 카테고리 연산자 권한] 파일명
사용자 카테고리 | 의미 |
u | 소유자 |
g | 그룹 |
o | 기타 사용자 |
a | 모든 사용자 (u+g+o) |
연산자 기호 | 의미 |
+ | 허가권 부여 |
- | 허가권 제거 |
= | 특정 사용자에게 허가권 지정 |
권한 기호 | 의미 |
r | 읽기 허가 |
w | 쓰기 허가 |
x | 실행 허가 |
한번에 여러 사용자에게 여러 권한 부여 가능
<실습 1>
1. 홈 디렉토리 밑에 study 디렉토리 만들고, 그 안에 test 파일 vi로 만들기
(파일 내용은 echo "Hello world") echo는 내용을 출력하라는 의미
2. ls -l로 파일 속성 확인
3. chmod로 권한 변경하기
1) test 파일 소유자의 권한에 읽기, 쓰기 추가
2) 그룹과 기타 사용자에게 쓰기 권한 추가
3) 모든 권한 제거
4) 소유자에게 일기, 실행 권한만 지정
test 색이 변한 것을 볼 수 있다. 색이 변한 것은 실행권한이 있다는 뜻.
5) test 실행
파일 실행할 때는 ./ 사용해야 함.
6) 그룹에겐 읽기권한을, 기타에게 쓰기권한만 주고 싶다. 한번에 될까?
문자모드에서는 한번에 되지 않는다. 따로 따로 두 번 권한을 부여해야 한다. 그래서 이때 더 편한 것은 숫자모드!
2. 숫자 모드
chmod[u 8진수 g 8진수 o 8진수] 파일명
숫자를 이용해 접근 권한 표현
모든 사용자 카테고리를 동시에 조정할 때 기호모드보다 편리하다는 장점이 있다.
각 카테고리 별로 접근 권한을 하나의 8진수로 표현 -> 3개의 8진수로 전체 권한 표기 가능
8진수로 변환할 때 먼저 사용권한을 2진수로 바꾼다.
이때 2진수로 변환하는 방법은 사용권한이 있으면 1, 없으면 0으로 적는 것이다.
그렇게 적은 2진수를 8진수로 바꾸면 된다.
소유자 | 그룹 | 기타 |
읽기[4] | 읽기[4] | 읽기[4] |
쓰기[2] | 쓰기[2] | 쓰기[2] |
실행[1] | 실행[1] | 실행[1] |
사용 권한을 3문자씩 나눠서 소유자 그룹 기타 권한으로 구분할 수 있다.
<실습 2>
(위에서 만듦) 홈 디렉토리 밑에 study 디렉토리 만들고, 그 안에 test로 실습
1. chmod 646 test
소유자는 읽기 쓰기, 그룹은 읽기, 기타 사용자는 읽기 쓰기 권한 가짐.
2. chmod 450 test
소유자는 읽기, 그룹은 읽기 실행 가짐.
기타 사용자는 아무 권한도 없음.
3. chmod 777 test
소유자, 그룹, 기타사용자 모두 읽기, 쓰기, 실행 권한 가짐.
4. chmod 000 test
소유자, 그룹, 기타사용자 모두 아무 권한도 없음.
5. 소유자에겐 읽기와 실행권한을, 그룹에겐 읽기 권한을, 기타에게 쓰기 권한만 주고 싶다. 한번에 될까?
-> 된다! chmod 542 test
숫자 모드는 기호 모드와 달리 모든 사용자 카테고리 동시에 권한 부여 가능!
<실습 3>
1. swing 계정으로 /home/swing 디렉토리 접근 권한을 700으로 수정
apple 계정으로 접근
apple 계정으로 cd ls 될까? -> 안됨
2. apple 계정으로 /home/swing 디렉토리 접근 권한으로 711으로 수정
오류가 난 것 같다. 자꾸 해봐도 똑같은 오류가 나서 어떻게 해야할지 모르겠다.
apple 계정으로 cd ls 될까?
ls 하면 아무것도 안뜨고, cd는 권한이 없다고 뜬다.
3. swing 계정으로 /home/swing 디렉ㅇ토리 접근 권한으로 744로 수정
apple 계정으로 cd ls 될까?
cd는 권한이 없다고 뜨고, ls는 아무것도 뜨지 않는다.
setuid
사용자가 실행파일을 실행 시 소유자 권한으로 실행하는 권한
setuid가 설정된 파일을 실행할 때, 일시적으로 파일 소유자의 권한을 얻어 실행할 수 있도록 함
/etc/passwd : 패스워드 보관 파일
수정은 root만 변경가능, 권한보면 rw-r--r-- 확인가능
/usr/bin/passwd : 대표적인 setuid파일
setuid 설정되면 빨간색 형광펜 표시
Q. 어떻게 passwd 명령어로 패스워드 변경할 수 있는 걸까?
A. 일반 사용자가 패스워드 변경을 위해 passwd(/usr/bin/passwd) 명령 사용시,
setuid의 퍼미션으로 root 권한으로 실행이 된다.
그래서 /etc/passwd 파일이 root 소유임에도 불구하고, 일반 사용자가 변경 가능
//setuid 사용 방법//
touch로 setuid 이름의 파일 생성
첫 번째 방법(숫자모드 : chmod 이용해 4 추가
두 번째 방법(문자 모드) : user에 s 추가
두가지 방법 모두 같은 결과가 나오는 것을 볼 수 있다.
앞에 s추가되어 있고, 빨간 형광펜으로 표시된 것을 보아 setuid 설정된 것을 볼 수 있다.
'Kali Linux' 카테고리의 다른 글
week-2 [과제 2] (0) | 2020.05.18 |
---|---|
week-2 [과제 3] (0) | 2020.05.18 |
week-2 [과제 4] (0) | 2020.05.17 |
week-1 [과제 4 재제출] (0) | 2020.04.21 |
week-1 [과제2 재제출] (0) | 2020.04.21 |
댓글