리눅스는 파일에 무단으로 접근하는 것을 방지하고 보호하는 기능을 제공한다. 사용자는 자신의 파일과 디렉토리 중에서 다른 사용자가 접근해도 되는것과 그렇지 않은 것을 구분하여 접근권한을 지정한다.
flie
etc안에 temp라는 디렉토리가 있음을 알 수 있다.
chmod
💡기호모드
💡숫자모드
리눅스에서는 파일이나 디렉터리를 생성할 때 자동적으로 기본 접근 권한이 설정된다.
umask
기본 접근권한을 출력하거나 변경한다. ( umask [옵션][마스크값] )
마스크 값은 파일이나 디렉토리 생성 시 부여하지 않을 권한을 지정해놓는 것이다.
로그아웃 시 원래값으로 다시 돌아온다.
기본값은 파일 666 디렉터리 777인데 umask값을 뺀 값이 각 계정에서 할당되는 권한이다.
root 계정
파일 -> 644 (666-022)
디렉터리->755 (777-022)
일반 계정(user 계정)
파일 -> 664 (666-002)
디렉터리 -> 775 (666-002)
영국적으로 umask값을 바꾸고 싶다면
umask값이 어디에 설정되어있는지 확인한 후 vi편집기로 들어간다. 그후 /umask로 검색으로 한 후 스크립트 파일을 수정하고 저장해주면 된다.
접근권한은 원래 4자리인데 맨 앞자리는 보통 생략한다.
SetUID - 맨 앞자리 4
SetGID - 맨 앞자리 2
stick bit - 맨 앞자리 1
rwxrwxrwx(777) -> s가 들어가있는 것으로 판단
-> setuid 가 설정되어 있으면 : rws rwxrwx
-> setgid 가 설정되어 있으면 : rwx rws rwx
💡 setuid 설정방법
기호모드(심볼릭모드)
chmod u+s [파일]
숫자모드
chmod 755 [파일이름] : rwxr-xr-x
chmod 4755 [파일이름] : rwsr-xr-x
💡 setgid 설정방법
기호모드(심볼릭모드)
chmod g+s [파일]
숫자모드
chmod 755 [파일이름] : rwxr-xr-x
chmod 2755 [파일이름] : rwxr-sr-x
💡 확장 퍼미션 권한 있는 파일 검색하기
setuid 검색: find / -perm -4000 (2>/dev/null)->에러메세지 없애주는 것
setgid 검색: find / -perm -2000 2>/dev/null
setuid or setgid 둘다 검색: find / -perm -2000 -o -4000 2>/dev/null , -o 옵션이 or 역할을 해줌
sticky bit 검색: find / -perm -1000
ex) 일반계정이 /etc/shadow 파일을 cat명령으로 읽을 수 있도록 cat 퍼미션을 수정해보세요.
chmod 4755 /bin/cat or chmod u+s /bin/cat
cat이 root권한으로 실행되면 퍼미션 상관없이 무조건 읽을 수 있게 된다.