Бодрого всем времени суток!
Скажите, пожалуйста, возможно ли запретить выполнение перловых скриптов из /tmp? Ситуация следующая, имеются хостинговые сервера, на них периодически появляются дырявые скрипты, через которые разные нехорошие люди заливают всякую гадость, в том числе и на перле. /tmp смонтирован с опцией noexec, поэтому бинарники из него не запускаются, но вот скрипты на перле аж бегом. Собственно, вопрос, возможно ли запретить перлу выполнять такие скрипты, располагающиеся в /tmp, при этом чтоб все остальные пользовательские cgi-ники он мог выполнять как обычно?
Заранее благодарен за ответ,
с ув. Сергей
Можно сделать, например, так: переименовать сам бинарник perl и создать с
этим именем так называемый wrapper script, дав на него права 711 и уже из
этого скрипта отсеивать исходники, находящиеся в /tmp.Что-то вроде этого:
==============================================
#!/bin/sh[ "`pwd`" == "/tmp" ] && exit 13
[ "`echo $1 | grep '/tmp/'" != "" ] && exit 13/real/path/to/perl $1
==============================================
>Можно сделать, например, так: переименовать сам бинарник perl и создать с
>этим именем так называемый wrapper script, дав на него права 711 и
>уже из
>этого скрипта отсеивать исходники, находящиеся в /tmp.
>
>Что-то вроде этого:
>==============================================
>#!/bin/sh
>
>[ "`pwd`" == "/tmp" ] && exit 13
>[ "`echo $1 | grep '/tmp/'" != "" ] && exit 13
>
>
>/real/path/to/perl $1
>==============================================Да, действительно, подходящий вариант :)
Спасибо!А еще какие способы есть?
правим /etc/fstab ставим опцию noexec#Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1f /tmp ufs rw,noexec 2 2
...
...
man mount
перемонтируем раздел или reboot
>правим /etc/fstab ставим опцию noexec
>
>...
>man mount
>перемонтируем раздел или rebootВы, похоже, не очень внимательно прочли сообщение автора темы:
>/tmp смонтирован с опцией noexec, поэтому бинарники из него не запускаются, но вот скрипты на перле аж бегом.
Упс, действительно...
Прошу прощения...
>>Что-то вроде этого:
>>==============================================
>>#!/bin/sh
>>
>>[ "`pwd`" == "/tmp" ] && exit 13
>>[ "`echo $1 | grep '/tmp/'" != "" ] && exit 13
>>
>>
>>/real/path/to/perl $1
>>==============================================
>Только вместо $1 нужно $*