Yoda писал(а):
А вот мой вариант. Я планирую в ОС сделать третий уровень привилегий - системный. Это наивысший уровень привилегий в моей архитектуре. Администратор почти всемогущ, но он не может непосредственно переписывать или удалять системные файлы работающей инсталляции ОС. Права на запись в конфигурационные файлы ОС имеют только системные сервисы, а замена исполняемых файлов ОС и файлов ресурсов возможна только после нотариальной проверки подлинности их источника. Удаление файла из системной области возможно только в том случае, что он не числится в списке системных файлов последнего, также нотариально заверенного, списка системных файлов. При такой архитектуре даже под администратором не страшен крэш любого пользовательского процесса, включая случайные нажатия Del, F8, Format C: и пр. Хотя, конечно остаются вопросы, связанные с ошибками в самом системном ПО и со сбоями оборудования. Также такая архитектура должна показать высокую устойчивость к вирусному заражению.
У меня, как я уже говорил, при явном указании со стороны пользователя есть возможность делать всё, иначе нельзя, например, нормально отлаживать эти самые системные сервисы (ведь просто так к ним доступ получать нельзя, поскольку это будет дырой в безопасности). В общем, моя защита от администратора нацелена не на блокирование сознательно деструктивных действий, а на минимизацию шансов совершить какую-либо большую гадость по ошибке. Поэтому, в частности, задачи, запускаемые администратором, по умолчанию работают с правами обычного пользователя; если им нужны дополнительные права, администратор должен это указывать явно. Таким образом, если запущен файловый менеджер, но без таких прав, то случайно удалить системные файлы не удастся. Ну а если уж запустил с ними -- то это проблемы администратора :)
Что же касается Вашего подхода, то меня терзают смутные сомнения... Нет, не с надёжностью, а с удобством разработки и обслуживания системы и т.п. вещами. ИМХО, слишком жёсткие ограничения больше вреда приносят, чем пользы. Ну и, во всяком случае, должна иметься возможность настройки системы на отключение такой "параноидальной" безопасности :) Лично я бы точно отключил все подобные блокировки: если я -- администратор, я должен иметь возможность сделать абсолютно всё.
Цитата:
Единственно, мне очень не нравится поддержка исключений со стороны ЯВУ. Все эти try/catch вместо облегчения написания кода сильно запутывают логику программирования. Пока что в стадии активного размышления, как должна выглядеть поддержка исключений со стороны ЯВУ, чтобы программировать стало действительно на порядок удобней.
На Си++, как и на Си, не пишу, поэтому не шибко компетентен, чтобы судить о реализации обработки исключений в этих языках. Однако на Дельфях try...finally и try...except меня никак не напрягали, а временами позволяли улучшить читабельность программы. На Аде ещё лучше сделано (меньше писанины, никаких тебе классов ошибок придумывать не надо, ну и т.д.). Впрочем, сами по себе паскалеподобные языки намного читабельней, чем Си, если не пренебрегать правилами оформления.