Назад | Перейти на главную страницу

Windows - детальные права администратора

Всякий раз, когда появляется всплывающее окно Windows UAC, чтобы предоставить права администратора программы, есть только ответ Да / Нет.

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

В Linux есть несколько способов, о которых я могу думать прямо сейчас:

Возможности root: разделите привилегии root на меньшие возможности

fakeroot: когда программа проверяет наличие root но на самом деле это не нужно

SELinux и аналогичные инструменты: все должно быть явно предоставлено

Другой способ спросить: Могу ли я ограничить размер ущерба, который программа может причинить, предоставляя права администратора.

Пример: Предоставьте программе право видеть одну конкретную программу в адресном пространстве, но не все из них.

Приглашение UAC - это предложение по принципу «все или ничего»: вы либо разрешаете доступ администратору программы, либо не запускаете его вообще.

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

Этот вопрос о переполнении стека обсуждает способы запуска приложения, которое запрашивает доступ администратора (но на самом деле не нуждается в нем).

Теоретически вы можете предоставить индивидуальные привилегии (например, право резервного копирования) отдельным учетным записям, но, хотя ядро ​​все еще поддерживает это, UAC нарушает это. Практически все права администратора, которые вы можете предоставить кому-то, в любом случае можно использовать для получения неограниченного доступа администратора.

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


Дополнение: больше не верно, что UAC нарушает предоставление индивидуальных привилегий отдельным учетным записям. Если вы введете свое собственное (не администраторское) имя пользователя и пароль в командной строке UAC, процесс с повышенными правами получит все индивидуальные привилегии, предоставленные вашей учетной записи.