[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Динамически включать-выключать CPU



> В принципе хотелось бы вот такой скрипт, разрешённый в sudoers (у меня
> так уже живёт монтирование флешки, это IMHO всё же безопаснее чем
> setuid):
> 
> #!/bin/sh
> echo $1 >/dev/cpuset/tasks
> renice -4 -p $1
> 
> Но тут невооружённым глазом видна дырка на injection.
> 
> Можно ли чем-то её закрыть, не считая варианта "написать то же самое
> на питоне"? Там-то проверить тривиально - int(sys.argv[1]), и если не
> конвертится - то exception.

Можно даже на чистом sh, но проще всего -

if printf "%s" "$1" | grep '^[1-9][0-9]*$' >/dev/null 2>&1
then :
else exit 1
fi

grep у тебя будет, он в бизибоксе есть.  printf - встроенная команда шелла.
Опять же, включая бизибокс.

-- 
- А почему перед всеми командами надо сначала писать man?
- Чтобы показать компу, кто тут мужик.
 -- http://bash.org.ru/quote/403510


Reply to: