Исходя из Linux / Unix, я не могу понять, как работает UAC в Windows.
Я слышал, что UAC работает как sudo
. Мое приложение для Linux может выполнять другую работу перед вызовом sudo
.
Но в Windows кажется, что все приложения, которые требуют подтверждения UAC, должны иметь UAC, прежде чем выполнять какую-либо реальную работу вообще! Я запускаю приложение, оно запрашивает у меня подтверждение UAC и я отказываю - приложение просто не запустится.
Так UAC работает так?
sudo su
./run_app
Скорее, чем:
./do_work1
sudo su
./du_work2
Спасибо всем за отличный ответ!
В Windows приглашение UAC запускается, когда вы пытаетесь запустить исполняемый файл, помеченный как требующий повышения прав в манифесте, встроенном в файл, и у вас еще нет запуска с повышенными правами. Поведение больше похоже на setuid, чем su в том смысле, что это файл, а не команда, которая сообщает ОС, что исполняемый файл должен запускаться с разными учетными данными.
источник
Это потому что они разные, простые и понятные. UAC мог бы быть реализован как
sudo
, но это не так.Вы можете думать об этом как об аналогии с защитой сети.
sudo
это как когда программа запрашивает доступ к сети и ваш брандмауэр предлагает вам предоставить его или нет. Вы можете сказать «да», и программа откроет сокет, или вы можете сказать «нет», и она будет жаловаться на отсутствие соединения и делать все возможное без доступа к сети (некоторые плохо спроектированные программы на самом деле аварийно завершаются). Например:UAC больше похож на предупреждение, которое вы получаете при попытке открыть файл, который был загружен на том NTFS. Windows предупреждает вас о потенциальной опасности и спрашивает, хотите ли вы ее запустить (вообще) или нет. Это операция «все или ничего»; Вы не можете доверять только части программы, а не другим. Например:
Вы должны помнить, что в отличие от Linux, который в большей степени ориентирован на продвинутых пользователей и приложения, Windows спроектирована так, чтобы быть удобной для максимально широкого круга пользователей, поэтому упрощение безопасности имеет первостепенное значение. Более того, из-за большой поверхности подверженности вредоносным программам это частая цель, поэтому имеет смысл либо полностью доверять программе, либо не доверять ей вообще.
источник
Я не очень хорошо знаю архитектуру Linux, поэтому прости меня, если я ошибаюсь, но я понимаю, что Linux и Windows ничем не отличаются в этом отношении ...
Пример ... Сценарий копирования, который выполняет копирование обычного файла в незащищенное местоположение и файла, пытающегося скопировать в защищенное место, затем снова обычного копирования.
Насколько я понимаю, в Linux приложение просто запускается и пытается выполнить действие - если у него нет разрешения на это действие - оно не выполнит это действие, но продолжит. В приведенном выше примере - при запуске сценария копирования в Linux для обычного пользователя он скопирует обычный файл, выдаст разрешение и скопирует второй файл - при запуске с sudo он сделает все три копии.
В этом отношении Windows точно такая же - запуск сценария для пользователя, не являющегося администратором, просто скопирует один, разрешит выдачу второго и скопирует следующий. С UAC будет работать все три.
Разница в том, что у многих приложений Windows просто есть набор конфигурации, так что они запрашивают повышение уровня UAC по умолчанию и выходят / выходят из строя, если у них его нет .... но это становится намного меньше.
источник