suid 스크립트가 올바르게 작동하지 않습니다.

suid 스크립트가 올바르게 작동하지 않습니다.

내 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

Bash 스크립트는 suid 비트가 설정된 상태로 실행될 수 없습니다. 우선, 다른 OS에서는 허용하지만 Linux에서는 setuid 스크립트를 허용하지 않습니다. 둘째, bash는 setuid로 실행되는 것을 감지하고 즉시 권한을 삭제합니다.

이는 쉘 스크립트 보안이 일반 C 앱보다 환경에 훨씬 더 많이 의존하기 때문입니다.

궁극적으로 요즘 suid 비트는 실행 가능한 바이너리에 주로 유용합니다. 이와 같은 스크립트/배시를 실행하는 방법은 suid 컴파일된 바이너리에서 호출하는 것입니다.

관련 정보