내 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
오래 전에 bash
suid(및 기타 쉘 해석기)에 대한 기본 보안 조치가 위험했기 때문에 추가되었습니다.SUID 쉘 스크립트의 위험성
Bash 스크립트는 suid 비트가 설정된 상태로 실행될 수 없습니다. 첫째, Linux에서는 uid를 설정하는 스크립트를 허용하지 않지만 일부 다른 운영 체제에서는 이를 허용합니다. 둘째, bash는 setuid로 실행되는 것을 감지하고 즉시 권한을 제거합니다.
이는 쉘 스크립트의 보안이 일반 C 응용 프로그램보다 환경에 크게 의존하기 때문입니다.
궁극적으로 suid 비트는 이제 실행 가능한 바이너리에 가장 유용합니다. 이러한 스크립트/bash를 실행하는 한 가지 방법은 suid 컴파일된 바이너리에서 호출하는 것입니다.