시스템 해킹과 보안 permission과 SetUID
퍼미션 (permission) 리눅스와 같은 멀티 테스킹, 멀티유저를 지원하는 L/UNIX 시스템에서는 파일 및 디렉토리에 대해 퍼 미션이라는 접근 권한을 사용한다. 파일 퍼미션에는 read, write, execute 즉, 읽기, 쓰기, 실행에 대한 권한을 지정할 수 있습니다.
파일에 따른 속성 # ls -al 허가권 링크 수 사용자 그룹 파일크기 생성날짜 생성시간 파일명
파일의 속성 총 10개의 문자 : 1+3+3+3 파일속성 + 소유자의 권한 + 그룹의 권한 + 타인의 권한 속성 d 폴더 (directory) - 텍스트 파일, 쉘 스크립트 파일, 실행 파일 c 캐릭터(문자) 디바이스 b 블록 디바이스 (저장 장치) l 심볼릭 링크 파일 (예를 들면 윈도우의 바로가기) s 네트워크 소켓 파일
파일의 권한 사용자/그룹/타인 별로 권한을 각각 설정 문자로 표시 (rwx) r : 읽기(Read) 숫자로 표시 w : 쓰기(Write) x : 실행하기(Execution) 숫자로 표시 r : 4(2진수로 100) w : 2(2진수로 10) x : 1(2진수로 1)
파일의 권한 파일 및 디렉토리 생성 시 기본 권한 디렉토리는 755 파일은 644의 권한으로 생성된다.
파일의 권한 파일과 디렉토리가 생성될 시 기본 퍼미션을 결정할 때 umask로 정해진다.
SetUID SetUID 라는 는 것은 임시적으로 사용자의 권한을 바 꿔줄수 있는 룰을 파일에 적용시켜주는 것을 말한다. SetUID, SetGID, 그리고 스티키 비트도 숫자로 표현하 는데, 값은 4000, 2000, 1000이다. 그럼 4755 권한 의 파일이 있다면 어떻게 표현될까? 이 경우에는 'rwsr-xr-x'를 말한다. 소유자 권한에 'x'가 있을 자리 에 ‘s' 문자가 적혀있다. SetGID는 그룹의 ’x' 자리를 's' 로 바꾸어 쓰고, 스티키 비트는 관련이 없는 이들 (Others)에 대한 실행 비트인 ‘x' 대신에 ’t' 문자를 사 용한다. 따라서 7777의 권한은 ‘rwsrwsrwt'다.
SetUID 특수권한 파일 설정 #find / -perm 7000 –print setuid, setgid, sticky bit가 모두 설정된 파일을 검사 구분 특수권한 설정 특수권한 파일 검색 4 = setuid #chmod 4755 setuid_file #find / -perm 4000 -print 2 = setgid #chmod 2755 setgid_file #find / -perm 2000 -print 1 = sticky bit #chmod 1777 sb_directory #find / -perm 1000 -print
SetUID SetUID의 동작
SetUID Sticky bit의 동작 스티키 비트는 파일에 주어지는 권한은 아니다. 디렉토 리에만 주어지며 스티키 비트가 부여된 디렉토리에 있는 파일은 접근 권한과 상관없이 파일의 소유자와 관리자만 이 파일을 삭제할 수 있다. 스티키 비트가 주어진 대표적 인 디렉토리로는 /tmp 디렉토리가 있다. 스티키 비트가 설정된 디렉토리에 있는 파일은 파일의 권한과 무관하게 임의의 계정이 다른 계정이 생성한 파 일을 삭제할 수 없다.
SetUID 커널은 프로세스마다 네 가지 번호를 부여한다. 실제 UID(RUID) “실제(Real)” 번호들은 계정 관리를 위해서 사용된다. 유효 UID(EUID) “유효(Effective)” 번호들은 접근 권한을 결정할 목적으로 사용 된다. 실제 GID(RGID)&유효 GID(EGID) 보통 경우에는 실제 번호와 유효 번호가 동일하다. * root의 uid, euid는 0 * 사용자계정의 uid, euid는 500 이상부터 시작한다.
사용된 명령어 Umask 파일 및 디렉토리가 생성되는 기본 퍼미션을 설정 Find 파일 및 디렉토리의 퍼미션으로 검색가능 Chmod 파일 및 디렉토리의 퍼미션을 변경 Id 현재 시점에서 시스템을 사용하는 나의 자세한 정보를 알려줌
- 감사합니다 -