상세 컨텐츠

본문 제목

[Linux] chmod를 사용해 setuid권한 제거하기

운영체제/Linux

by 밍구21 2020. 5. 19. 18:58

본문

부족한 점 있으면 댓글 달아주세요.

#1 ls -l 을 이용해 /usr/bin/passwd 파일의 속성을 본다.

 

 

빨간색 형광펜 표시가 되어있으므로 /usr/bin/passwd파일은 setuid권한을 가지고 있음을 알 수 있다!

 


#2 setuid 권한이 있는 상태로 passwd 명령어 실행

 

 

현재 번호를 입력한 뒤 비밀번호를 손 쉽게 바꿀 수 있었다. 갑자기 바꾼 비밀번호라 까먹을 뻔...


#3 /usr/bin/passwd 파일에서 setuid 권한을 제거해보자!

 

-1) 일반 사용자로 "chmod 기호(u-s) 파일명" 을 이용해 setuid 권한을 제거하기

 

 

씩씩하게 일반 사용자로 도전! 했다가 까였다. 허용이 안된다고 한다.

 

그도 그럴 것이 #1에서 봤다시피 /usr/bin/passwd 파일의 소유자는 root이기 때문이다!

그럼 내가 root가 돼보자!!

 

 

-2) root 계정으로 "chmod 기호(u-s) 파일명" 을 이용해 setuid 권한을 제거하기

 

 

su를 사용해 root 계정으로 들어온 뒤 chmod 명령어를 사용해 setuid 권한을 제거하였다.

일반 사용자로 했을 때는 안 됐던 게 됐다. 역시 root

 

-3) ls -l 을 이용해 /usr/bin/passwd 파일의 속성을 본다.

 

 

#1과 다른 점이 보이는가? 나는 보인다.

그것은 파일접근권한도 s에서 x로 바뀌었고 /usr/bin/passwd에도 빨간색 형광펜이 사라졌다.

 

그렇다. setuid 권한을 제거하였다.


#4 setuid 권한이 없는 상태로 passwd 명령어 실행

 

 

su를 이용해 root에서 다시 일반사용자 계정으로 왔다.

그리고 passwd 명령어를 실행하였다.

 

당연히

안된다.     

 

패스워드 변경 명령어 실행파일인  /usr/bin/passwd 파일의 소유자는 root이다. /usr/bin/passwd 파일에 setuid 권한이 있어 일반 계정이 파일 접근 권한이 있었지만 지금은 setuid 권한이 없기 때문에 명령어에 접근 권한이 없기 때문이다.

 


 

일반 사용자로 패스워드를 바꾸고 싶다면 다시 su를 이용해 root 계정으로 가 chmod를 이용해 /usr/bin/passwd 파일에 setuid 권한을 주면 된다.

관련글 더보기