suid 스크립트가 작동하지 않습니다.

suid 스크립트가 작동하지 않습니다.

내 OS는 Fedora 24이고 suid 비트 기능을 테스트하려고 합니다.

나는 Setuid.bash로 아래 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

오래 전에 bashsuid(및 기타 쉘 해석기)에 대한 기본 보안 조치가 위험했기 때문에 추가되었습니다.SUID 쉘 스크립트의 위험성

~에서Bash는 왜 이렇게 생겼나요: suid

Bash 스크립트는 suid 비트가 설정된 상태로 실행될 수 없습니다. 첫째, Linux에서는 uid를 설정하는 스크립트를 허용하지 않지만 일부 다른 운영 체제에서는 이를 허용합니다. 둘째, bash는 setuid로 실행되는 것을 감지하고 즉시 권한을 제거합니다.

이는 쉘 스크립트의 보안이 일반 C 응용 프로그램보다 환경에 크게 의존하기 때문입니다.

궁극적으로 suid 비트는 이제 실행 가능한 바이너리에 가장 유용합니다. 이러한 스크립트/bash를 실행하는 한 가지 방법은 suid 컴파일된 바이너리에서 호출하는 것입니다.

관련 정보