LINUX.ORG.RU

bash. source. можно ли запретить выполнение команд?

 


0

2

привет.

к примеру, есть скрипт который подгружаю. в этом скрипте, помимо инициализации переменных, присутствуют еще и команды типа cp|rm etc..

вопрос в том, можно ли как-то запретить выполнение команд при подгрузке скрипта?

благодарен.

★★★

Последнее исправление: niXman (всего исправлений: 1)

сам-то я полагаю, что ответ - нет.

но мало ли...

niXman ★★★
() автор топика

Ты взял неподходящий язык для таких выкрутасов. Создание вложенных ограниченных интепретаторов — это в Tcl.

Можно использовать костыль: прогрепать файл на предмет строк BLA=blabla.

geekless ★★
()

я вопроса не понял.
если не хочешь что бы выполнялась эта команда, удали эти строчки из скрипта.

dada ★★★★★
()

Если тебе нужно только переменные, то грепай по их названиям и определяй значения по второму полю при «=» в качестве разделителя.

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

именно.

есть некоторый основной скрипт. этот скрипт использует «пользовательские шаблоны». пользовательские_шаблоны, это, тоже bash скрипты написанные пользователем основного скрипта. типа автоматизация такая...рукоблудная)

так вот, было обнаружено, что пользователи, помимо указания/заполнения тех переменных что могут быть в шаблоне, дописывают в него еще и всякие команды, что иногда работает. но иногда нарушает работу этой «системы», да так, что можно весь моцг себе вынести пока разберешься что да как.

поэтому, хочу напрочь запретить юзерам вписывать в шаблоны что-либо, кроме позволенных переменных.

мне кажется, единственный способ тут - как предложил sin_a, грепать...

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

укс, не только sin_a оказывается предложил грепать)

niXman ★★★
() автор топика

Выполняй скрипт в rbash'е и экспортируй наружу env.

schizoid ★★★
()

Можно ещё перед выполнением скрипта подсунуть башу файл с алиасами типа alias cp=echo SKIPPED cp.

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

Если уж так радикально - тогда только rbash, хотя я его в шутку предложил изначально.

schizoid ★★★
()

Разбить скрипт на две части, инициализация переменных и сам скрипт, который делает
source init-file
нельзя?

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

нет, выполняться в этих шаблонах вообще ничего не должно. только условия и инициализация переменных.

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

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

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

grep может пропустить, например, такую бяку:
export VAR=$(some_nasty_command), а на чистом баше её вы, ээ, грепать из файла будет по-моему сложно.
Враппер, который будет парсить файл, искать там нужный шаблон, кавычить всё, что идёт после NAME= etc, а потом выгружать env в родительский шелл, будет довольно просто набросать на питоне.

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

export VAR=$(some_nasty_command)

можно грепать на предмет символов '$(', и если найдено - выдавать юзеру ошибку.

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

конструкция убивания из файла всех вариантов обмана пользователем grep'а - будет слишком, имхо, большая. Кроме $(), в голову приходит сразу же

export SOMETHING=`some_nasty_cmd`; 

Или банально

export SOMETHING=anything|some_nasty_cmd
Или
[neko@takino ~/test]$ cat file
echo WIN
[neko@takino ~/test]$ export FILE=>file
[neko@takino ~/test]$ cat file
что, по сути, аналог rm'а.

takino ★★★★★
()

Если ты боишься пользователей, то не давай им писать конфиги шеллом и пиши парсер для своего init'а.

KblCb ★★★★★
()

Запусти свой скрипт в чруте, в котором будут доступны только те команды, которые ты посчитаешь нужным оставить.

imul ★★★★★
()

запретить выполнение команд при подгрузке скрипта?

/0. уже написали, ты пытаешься изобрести конфиг ректальным методом

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