SMRSH(8)

명칭
smrsh - sendmail용으로 제한된 쉘

서식
smrsh -c command

해설
smrsh (은)는, sendmail(8) 의 설정 파일로, sh 대신에 ``prog''메이라로서 사용하는 일을 목적으로 하고 있습니다. smrsh (은)는, 시스템의 전체적인 보안를 개선하기 위해서, sendmail 의 ``|program''서식에 의해 기동할 수가 있는 명령을 제한합니다. 즉, 만약 ``나쁜놈''가 alias 파일이나 forward 파일을 경유하지 않고 sendmail 로부터 프로그램을 실행할 수가 있었다고 해도, smrsh (을)를 사용하면, 그(혹은 그녀)가 실행할 수 있는 프로그램을 제한할 수가 있습니다.

간단하게 말하면(자), smrsh (은)는, 실행 가능한 프로그램을 단일의 디렉토리에 존재하는 것과 쉘 편입 명령의 ``exec'', ``exit'', ``echo'' 인 만큼 한정합니다. 이 디렉토리는, 디폴트에서는, /usr/libexec/sm.bin 입니다. 이것에 의해, 시스템 관리 책임자는 이용 가능한 명령을 선택한다 일이 생깁니다. 더욱, smrsh (은)는, ``end run''공격을 막기 위해서(때문에), 명령행에 ``', `<', `>', `;', `$', `(', `)', `\r' (복개캐릭터), `\n' (개행 캐릭터) 의 캐릭터를 포함한 명령은 실행하지 않습니다. ``||''와 ``&&''는, 허가되고 있어 다음과 같은 명령을 사용 가능합니다: ``"|exec /usr/local/bin/procmail -f- /etc/procmailrcs/user || exit 75"''

프로그램명의 전에 있는 패스명은 모두 제거되기 (위해)때문에, ``/usr/bin/vacation'', ``/home/server/mydir/bin/vacation'', ``vacation'' 등은 모두 ``/usr/libexec/sm.bin/vacation''라고 해석됩니다.

시스템 관리 책임자는, sm.bin 디렉토리에 두는 프로그램을 선택하기에는 신중한 판단을 해야 합니다. 적절한 것으로서는, vacation(1) (이)나 procmail(1) 등을 들 수가 있겠지요. 어떠한 요망이 있어도, 쉘나, perl(1) 등의 쉘을 닮은 프로그램을 sm.bin 에 넣어서는 안됩니다. 이것은, 단지 임의의 프로그램을 실행하는 일을 제한하는 것만으로, ``#! ''서식을 이용한, 셸 스크립트나 perl 스크립트를 sm.bin 디렉토리에 들어갈 수 있는 일을 제한하는 것이 아닙니다.

컴파일
컴파일은 대부분의 시스템으로 시시한 것입니다. 디폴트의 서치 패스 (디폴트에서는 ``/bin:/usr/bin'') (을)를 변경하기 위해서는, -DSMRSH_PATH=\"path\" 를 사용할 필요가 있어, 또, 디폴트의 프로그램 디렉토리 (디폴트에서는 ``/usr/libexec/sm.bin'') (을)를 변경하기 위해서는, -DSMRSH_CMDDIR=\"dir\" 를 사용할 필요가 있습니다.

관련 파일
/usr/libexec/sm.bin - 제한된 프로그램용의 디렉토리

관련 항목
sendmail(8)