LINUX.ORG.RU

Шелл для девайса


0

2

Всем привет.

Нужен шелл для девайса, который будет доступен через последовательный порт. Нужно чтоб пользователь не мог из него сделать какую-нить каку, а мог исполнять только набор заранее определенных команд. Желательно чтобы было автодополнение. Уверен что такое уже давно написано, но гугление результата не принесло. Может кто подскажет где такое можно найти?

Ответ на: комментарий от Harald

Там и есть бизибокс. Нужно чтоб пользователь конфигурировал девайс. Наверно это даже не шелл нужен, а псевдошелл - сетевой адрес поменять (не ифконфигом, у нас своя тулза) и прочие настройки.

MaxiMus
() автор топика
Ответ на: комментарий от MaxiMus

ну тогда самостоятельно программку навелосипедить, для конфигурирования

Harald ★★★★★
()
Ответ на: комментарий от MaxiMus

Там и есть бизибокс. Нужно чтоб пользователь конфигурировал девайс.

Зачем какой-то еще специальный шелл ? в busybox есть легкий вариант sh

Нужно чтоб пользователь не мог из него сделать какую-нить каку, а мог исполнять только набор заранее определенных команд.

http://www.freedesktop.org/wiki/Software/polkit/

anonymous
()

Если ты хочешь CLI, то так и скажи. Придётся изучать работу с терминалами (скорость, спецсимволы и прочее, т.к. по сути консоль - это виртуальный терминал, а в твоём случае ты имеешь полноценный терминал в виде COM-порта) и организовывать это всё самому, а потом менять *login на это поделие в inittab-е. Это простой вариант. Сложнее - тоже самое, но писать свой инит, чтоб совсем отвязаться от shell, но тогда придётся самому же изобретать инициализацию программ.

Документации по этим вещам немного, но она есть. Поищи для начала реализацию command line interface реализацию в гугле, там уже из исходников всё станет ясно. У меня первый вариант реализации где-то валяется в зачаточном состоянии.

nickleiten ★★★
()

Хотя, наврал. У меня CLI реализован, как shell (оболочка) для пользователя, то есть исполняется login/autologin и пользователя выбрасывает в CLI.

Но в целом, идея ясна.

nickleiten ★★★
()
Ответ на: комментарий от anonymous

мог исполнять только набор заранее определенных команд

Или еще проще - man sudo, man sudoers, man chown, man chmod

anonymous
()
Ответ на: комментарий от nickleiten

Я вот слежу за темой, просто может sh дает слишком много куда лазать, можно ли его ограничить так, чтобы было всего 10 команд определенных? Как это делается?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Стандартный shell даёт не только возможность исполнять программы, но и писать скрипты. Причём исполнение команд есть по сути запуск сторонних программ через fork или popen (для background и foreground исполнения). Другое дело, что часть программ идут в связке с shell (те же if, true, test и т.д.)

Как выше отписались, можно запретить всё, но разрешить только определённые программы на вызов сторонними программами разграничивающими права. А можно просто сделать свой CLI (если сталкивались с управляемыми коммутаторами или точками доступа дороже 300 баксов, то там это есть по телнету или ssh).

На вскидку, есть проекты готовые: routercli, lub, wsh. Они как раз и делают замену shell и по конфигу дают возможность исполнять что-либо, но логика работы отличается от обычной оболочки.

nickleiten ★★★
()

фактически любой интерпретатор можно повесить на com-порт лёгкой правкой inittab. У многих из них есть `strict-mode` (может по разному называться) - это когда юзеру доступен только жёстко ограниченный список возможностей. Остаётся навелосипедить «набор определённых команд». Есть ещё expect на котором CLI пишется элементарно.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MaxiMus

Посмотри http://clish.sourceforge.net/

Вполне себе годная штука. Список разрешенных команд и их параметры задаются в xml конфиге.

Dead ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.