LINUX.ORG.RU

История изменений

Исправление firkax, (текущая версия) :

функционал echo > реализовали что ли?

Разумеется.

тут накосячить в милион раз сложнее

Конкретно с echo именно сделать дыру - пожалуй, да. Но неожиданное поведение вполне возможно если забыть про то, что echo не просто выводит строку, а ещё и интерпретирует некоторые аргументы особенным способом.

А почему тогда у вас путь к файлу прямо в коде захардкожен?

Как раз затем, что он должен быть захардкожен, и юзеру не положено задавать другой. В этом главное отличие этой проги от echo. Можно было бы сделать туда поддержку разных индикаторов (caps, num, scroll) и разных номеров клавиатур, но тогда бы заодно пришлось городить конфиг (и парсер к нему) о том, какому юзеру какие именно индикаторы разрешено менять, а это всё лишнее - нам нужен только четвёртый скролллок, его и делаем без лишних ухищрений.

А уметь надо произвольный.

Ну я ж написал - chmod. Тот, кто в состоянии грамотно написать программу, точно знает и про chmod. А кто не в состоянии - лучше чтоб и не знал.

требует квалификации школьника-самоучки а не прогера

Вот именно. Сначала ты пишешь echo, потом начинаешь считать себя хакером и пишешь что-то сложнее, устраивая дыры. Нет, сначала надо научиться а потом уже писать. Простые школьные скрипты для себя запускай от своего юзера где они не создадут дыр. Причём, даже с echo нуб может устроить дыру, например он решит передавать номер или название индикатора аргументом, разумеется не проверит, что там что-то валидное:

#!/bin/sh
DEVNUM=$1
KEYNAME=$2
VALUE=$3
echo $VALUE > /sys/class/leds/input$DEVNUM::$KEYNAME/brightness

и исполнит в итоге строку вида

echo chown 0:0 /home/hacker/crack.bin ; chmod 4755 /home/hacker/crack.bin > /sys/class/leds/input4::scrolllock/../../../../../../../../../../../tmp/qwer/brightness
ну а в /tmp/qwer/brightness взломщик заботливо подложит симлинк на /etc/rc.local или ещё что-нить похожее.

Исходная версия firkax, :

функционал echo > реализовали что ли?

Разумеется.

тут накосячить в милион раз сложнее

Конкретно с echo именно сделать дыру - пожалуй, да. Но неожиданное поведение вполне возможно если забыть про то, что echo не просто выводит строку, а ещё и интерпретирует некоторые аргументы особенным способом.

А почему тогда у вас путь к файлу прямо в коде захардкожен?

Как раз затем, что он должен быть захардкожен, и юзеру не положено задавать другой. В этом главное отличие этой проги от echo. Можно было бы сделать туда поддержку разных индикаторов (caps, num, scroll) и разных номеров клавиатур, но тогда бы заодно пришлось городить конфиг (и парсер к нему) о том, какому юзеру какие именно индикаторы разрешено менять, а это всё лишнее - нам нужен только четвёртый скролллок, его и делаем без лишних ухищрений.

А уметь надо произвольный.

Ну я ж написал - chmod. Тот, кто в состоянии грамотно написать программу, точно знает и про chmod. А кто не в состоянии - лучше чтоб и не знал.

требует квалификации школьника-самоучки а не прогера

Вот именно. Сначала ты пишешь echo, потом начинаешь считать себя хакером и пишешь что-то сложнее, устраивая дыры. Нет, сначала надо научиться а потом уже писать. Простые школьные скрипты для себя запускай от своего юзера где они не создадут дыр. Причём, даже с echo нуб может устроить дыру, например он решит передавать номер или название индикатора аргументом, разумеется не проверит, что там что-то валидное:

#!/bin/sh
DEVNUM=$1
KEYNAME=$2
VALUE=$3
echo $VALUE > /sys/class/leds/input$DEVNUM::$KEYNAME/brightness

и исполнит в итоге строку вида

echo chmod 4750 /home/hacker/crack.bin > /sys/class/leds/input4::scrolllock/../../../../../../../../../../../tmp/qwer/brightness
ну а в /tmp/qwer/brightness взломщик заботливо подложит симлинк на /etc/rc.local или ещё что-нить похожее.