Пользуясь полученными в Лр1 (
/file/85885/)
знаниями и результатами, достигнутыми при выполнении Лр2 (--
/file/85890/) и Лр3 (--
/file/85893/)
написать программу, реализующую указанный вариант.
При обнаружении ошибок программа должна сообщать о них в понятной пользователю форме. Программа должна завершаться с кодом 0, если завершилась успешно,
и с отличным от 0 кодом в случае ошибки.
Конфигурационный файл команды { \it sudo /etc/sudoers }
Работа с {\it ply.yacc} была весьма интересной.
Несмотря на нарушение стандарта языка, {\it ply.yacc} оказалась достаточно мощным и простым
построителем синтаксических анализаторов.
Вместе с {\it ply.lex} они позволили проверить правильность файла {\it /etc/sudoers}.
Если это делать обычным способом, то это займет много времени и сил.
Правда и в данном случае пришлось потрудиться.
В грамматике {\it /etc/sudoers} оказалось достаточно много повторяющихся элементов.
Было бы глупо все это забивать руками. Я воспользовался возможностями Python.
Половина программы создается в процессе выполнения. Удобно. Правда из-за
нарушения стандарта языка, тут возникли некоторые проблемы, которые были легко преодолены.
Интересной оказалась работа со словарями имен пользователей.
Сначала она несколько пугала своим объемом и количеством проверок.
Но потом была сделана и оказалась простой, хотя и объемной.
Работа выполнена на языках
* Python (требуется модуль ply -- как установить написано в
л. р. #1 )
Отчет в формате — PDF
Исходники отчета — LaTeX2e
МАИ.
Факультет прикладной математики.
Кафедра вычислительной математики и программирования.
Преподаватели:
Алексей AVL Лебедев
Илья US-Marine Перетягин