Windows - детальные права администратора
Всякий раз, когда появляется всплывающее окно Windows UAC для предоставления прав администратора программы, есть только ответ Да / Нет.
Есть ли способ ограничить то, что программа может делать при запуске от имени администратора. Большинству программ нужны не все привилегии, а совсем немного, чего не может сделать обычный пользователь.
В Linux есть несколько способов, о которых я могу думать прямо сейчас:
Возможности root: разделите привилегии root на более мелкие возможности
fakeroot
: когда программа проверяет root
но на самом деле это не нужно
SELinux
и аналогичные инструменты: все должно быть явно предоставлено
Другой способ задать вопрос: могу ли я ограничить размер ущерба, который может нанести программа при предоставлении доступа к правам администратора.
Пример. Дайте программе право видеть адрес одной конкретной программы, но не все.
1 ответ
Приглашение UAC - это предложение типа "все или ничего", вы либо разрешаете администратору программы доступ, либо не запускаете его вообще.
Это не обязательно означает, что вы не можете достичь своих целей другими способами. Например, если вы хотите предоставить пользователю доступ к адресному пространству определенного процесса, вы можете изменить разрешения для этого процесса. Аналогично с файлами и разделами реестра, хотя обычно нежелательно изменять права доступа к частям файловой системы и реестра, которые вам не принадлежат.
В этом вопросе о переполнении стека обсуждаются способы заставить приложение, которое запрашивает доступ администратора (но на самом деле не нужно), работать в любом случае.
Теоретически вы можете предоставить отдельные привилегии (например, полномочия на резервное копирование) отдельным учетным записям, но, хотя ядро все еще поддерживает это, UAC нарушает их. Практически все привилегии уровня администратора, которые вы можете предоставить кому-либо, могут быть использованы для получения неограниченного доступа администратора в любом случае.
Более обычный подход, если вы хотите разрешить пользователю выполнять определенные административные задачи, - это написать системный сервис, который будет выполнять работу от имени пользователя. Обычно это включает в себя разделение приложения на две части: одна, которая работает как системная служба и имеет права администратора, а другая - на рабочем столе пользователя, но не имеет.