나의 IT일지
특수 권한과 권한 제어 본문
특수권한
권한에는 소유권과 허가권으로 나뉘며, 계정이 파일/ 디렉토리를 소유할 수 있는 권한을 소유권, 소유권에 따라 파일/ 디렉토리를 수정, 생성, 삭제, 진입 등을 할 수 있는 권한을 허가권이라고 한다. 즉 계정은 파일/ 디렉토리의 소유권과 허가권에 따라 사용할 수 있는 기능이 달리진다.
일반적으로 읽기, 쓰기, 실행 및 진입을 통해 계정에게 권한을 부여하지만 특수권한을 통해 추가적으로 게정에게 권한을 부여할 수 있다. 이를 특수권한이라 하는데, 특수권한은 일반 권한 외에 추가적으로 부여되는 권한으로, SetUID, SetGID, Stickybit이 있다.
- SetUID
- 파일에 대한 UID소유권을 가지고 있지 않은 계정이 UID 소유권을 가지고 있는 계정을 호출해서 해당 피일을 실행하는 파일 특수 권한
- 일반 사용자가 관리자 권한으로 명령어를 실행하기 위함
- 이때, 실행시키려는 계정의 허가권 중에 x 권한이 있어야 함
- symbolic 기법으로는 s/S로 설정하며, numeric 기법으로는 4000으로 설정한다.
- x 권한이 없을 경우 : S로 표시
- x 권한이 있을 경우 : s로 표시
- chmod 4xxx [파일 경로] : 해당 파일을 SetUID 권한을 가지도록 설정
- chmod u+s [파일 경로] : 해당 파일에 SetUID 권한 부여
- find / -perm -u=s : 파일 중 SetUID권한을 가진 파일 탐색
- 파일에 대한 UID소유권을 가지고 있지 않은 계정이 UID 소유권을 가지고 있는 계정을 호출해서 해당 피일을 실행하는 파일 특수 권한
#include<stdio.h>
int main(){
int ruid,euid;
ruid = getuid(); //계정의 UID
euid = geteuid(); //해당 파일을 실행하는 UID
printf("RUID = %d\n",ruid);
printf("EUID = %d\n",euid);
return 0;
}
SetUID를 사용하지 않을 경우 | SetUID를 사용한 경우 |
리눅스에서 코드 파일 실행 방법 |
1. yum groupinstall "Development Tools" : 개발 툴 설치 |
2. vi [파일명].c : c파일 편집후 생성 |
3. gcc -o [컴파일한 뒤의 파일명] [파일명].c : c파일을 컴파일 |
4. ./[파일명] : 현 디렉토리의 파일을 실행 |
- SetGID
- 해당 디렉토리에 파일 / 디렉토리를 생성할 경우 그룹이 고정시키는 디렉토리 특수 권한
- 이때, 파일/ 디렉토리를 생성하는 계정의 허가권중에 r 권한이 있어야 함
- symbolic 기법으로는 s/S로 설정하며, numeric 기법으로는 2000으로 설정한다.
- x 권한이 없을 경우 : S로 표시
- x 권한이 있을 경우 : s로 표시
- chmod 2xxx [디렉토리 경로] : 해당 디렉토리을 SetGID 권한을 가지도록 설정
- chmod g+s [디렉토리 경로] : 해당 디렉토리에 SetGID 권한 부여
- find / -perm -g=s : 디렉토리 중 SetGID권한을 가진 파일 탐색
- 해당 디렉토리에 파일 / 디렉토리를 생성할 경우 그룹이 고정시키는 디렉토리 특수 권한
- Stickybit
- 파일 생성은 자유롭지만 삭제는 소유권을 가진 계정만 삭제 가능하도록 하는 디렉토리 특수 권한
- OTHER의 w권한을 가지고 있더라도 소유권이 없으면 생성만 가능
- symbolic 기법으로는 t/T로 설정하며, numeric 기법으로는 1000으로 설정한다.
- x 권한이 없을 경우 : T로 표시
- x 권한이 있을 경우 : t로 표시
- chmod 1xxx [디렉토리 경로] : 해당 디렉토리에 Stickybit 권한을 가지도록 설정
- chmod o+t [디렉토리 경로] : 해당 디렉토리에 Stickybit 권한 부여
- find / -perm -o=t : 디렉토리 중 Stickybit 권한을 가진 파일 탐색
- 파일 생성은 자유롭지만 삭제는 소유권을 가진 계정만 삭제 가능하도록 하는 디렉토리 특수 권한
그 외의 접근 제어
- 접근 제어 목록
- 파일/ 디렉토리의 권한을 계정별로 주는 방식
- getfacl [파일/ 디렉토리 경로] : 파일/ 디렉토리 권한 확인 명령어
- setfacl -m u:[계정명]:[권한] [파일/ 디렉토리 경로] : 파일 / 디렉토리의 권한을 계정에 따로 부여
- setfacl -m g:[그룹명]:[권한] [파일/ 디렉토리 경로] : 파일 / 디렉토리의 권한을 그룹에 따로 부여
- setfacl -x u:[계정명]:[권한] [파일/ 디렉토리 경로] : 계정에 따로 부여한 파일 / 디렉토리의 권한을 삭제
- setfacl -x g:[그룹명]:[권한] [파일/ 디렉토리 경로] : 그룹에 따로 부여한 파일 / 디렉토리의 권한을 삭제
- 파일/ 디렉토리의 권한을 계정별로 주는 방식
- 파일/ 디렉토리 속성변경
- 권한 외에 파일/디렉토리의 속성을 변경해서 모든 계정에 대해서 해당 파일의 접근을 제어하는 방식
- lsattr [파일/디렉토리 경로] : 파일/ 디렉토리의 속성을 확인하는 명령어
- chattr +[옵션] [파일/디렉토리 경로] : 해당 파일/ 디렉토리에 속성 추가하는 명령어
- chattr -[옵션] [파일/디렉토리 경로] : 해당 파일/ 디렉토리에 속성 삭제하는 명령어
- 권한 외에 파일/디렉토리의 속성을 변경해서 모든 계정에 대해서 해당 파일의 접근을 제어하는 방식
옵션 | 의미 |
i | 수정금지 |
d | dump백업 금지 |
c | 압축저장 |
a | 추가만 가능 |
s | 블럭0으로 다시 디스크 쓰임 |
S | 디스크상에 동기화 |
u | 복구가능 |
관리자 권한 실행
일반 사용자가 관리자의 권한을 일부 받아 사용하도록 함으로써 최상위 관리자의 계정이 아닌 권한을 받은 사용자 계정으로 관리할 수 있도록 한다.
- sudo [멍령어] : 해당 명령어를 관리자 권한으로 실행하도록 하는 명령어
- 관리자가 사용할 수 있는 권한을 일부 부여하기 위해서는 "/etc/sudoers"파일에 부여할 권한을 작성, 수정해야 한다.
- 관리자의 90퍼의 권한을 사용하기 위해서는 wheel 그룹에 해당 사용자를 추가하면 된다.
- visudo : /etc/sudoers파일을 VI 편집기로 출력하는 명령어
'정보보안' 카테고리의 다른 글
NCS)관리적 보안 구축 (0) | 2023.06.21 |
---|---|
링크와 쉘 (0) | 2023.06.20 |
권한 적용 (0) | 2023.06.16 |
리눅스 계정과 권한 (0) | 2023.06.15 |
VLSM과 supernetting (0) | 2023.06.14 |
Comments