6.4. Setuid/Setgid 스크립트 생성을 피해라

많은 유닉스 계열 시스템 특히 리눅스는 앞에서 기술한 경쟁 상태를 피하기 위해 스크립트에 설정되어 있는 setuid 와 setgid 비트를 단순히 무시한다. setuid 스크립트의 지원 여부는 유닉스 계열 시스템들마다 다르기 때문에 가능한 새로운 애플리케이션에서는 최우선적으로 피해진다. 특별한 경우로 펄은 setuid 펄 스크립트를 지원하기 위해 특별한 설정을 포함하고 있으며 따라서 정말로 이러한 기능성이 필요하다면 setuid 와 setgid 사용은 가능하다. 자신의 인터프리터에 이러한 기능성을 지원할 필요가 있다면 펄에서 어떻게 하는 지를 조사해라. 그렇지 않은 경우 간단한 접근 방법은 안전한 환경 (환경 변수 제거 및 설정) 을 생성하는 작은 setuid/setgid 실행가능한 스크립트를 "wrap" 한 후 스크립트의 절대 경로를 사용해서 이를 호출하는 것이다. 스크립트가 공격자에 의해 변경될 수 없음을 확인해라. 쉘 스크립팅 언어는 추가적인 문제를 갖고 있으며 실제로 setuid/setgid 로 설정되지 않아야 한다. 더욱 자세한 정보는 9.4절 을 보라.