
내 OS는 Fedora 24이고 suid 비트 기능을 테스트해 보았습니다.
나는 bash 아래에 Setuid.bash로 썼습니다:
#!/bin/bash
if [ $USER = 'root' ]
then
echo "Like Root Run"
echo "Root User Add in " $(date) >> /etc/SetUid
else
echo "Other User Run"
echo $USER "User Add in " $(date) >> /etc/SetUid
fi
-rwsrw-r-x. 1 root root 249 May 21 14:45 /bin/Setuid.bash
허가를 받고-rwx------. 1 root root 432 May 21 14:45 /etc/SetUid
이제 루트로 시도했을 때 /bin/Setuid.bash
다음을 얻었습니다.
루트런처럼
하지만 그걸 실행하면시험내가 만난 사용자:
다른 사용자 실행
bin/Setuid.bash: 8행: /etc/SetUid: 권한이 거부되었습니다.
누구든지 알려주시면 감사하겠습니다. 내 길이 어디에서 잘못되었나요?
답변1
오래 전에 bash
(그리고 다른 쉘 해석기들) suid (ab)use가 위험하기 때문에 이에 대한 내장 보안 조치를 추가했습니다.SUID 쉘 스크립트의 위험성
Bash 스크립트는 suid 비트가 설정된 상태로 실행될 수 없습니다. 우선, 다른 OS에서는 허용하지만 Linux에서는 setuid 스크립트를 허용하지 않습니다. 둘째, bash는 setuid로 실행되는 것을 감지하고 즉시 권한을 삭제합니다.
이는 쉘 스크립트 보안이 일반 C 앱보다 환경에 훨씬 더 많이 의존하기 때문입니다.
궁극적으로 요즘 suid 비트는 실행 가능한 바이너리에 주로 유용합니다. 이와 같은 스크립트/배시를 실행하는 방법은 suid 컴파일된 바이너리에서 호출하는 것입니다.