Wenn ich unter Windows die UAC-Anforderung einer App ablehne, warum darf sie dann nicht weiter ausgeführt werden?

Wenn ich unter Windows die UAC-Anforderung einer App ablehne, warum darf sie dann nicht weiter ausgeführt werden?

Da ich aus dem Linux-/Unix-Bereich komme, kann ich nicht verstehen, wie UAC in Windows funktioniert.

Ich habe gehört, dass UAC so funktioniert sudo. Meine Linux-Anwendung kann vor dem Aufruf noch andere Aufgaben erledigen sudo.

Aber in Windows scheint es so zu sein, dass allen Anwendungen, die eine UAC-Bestätigung erfordern, die UAC-Berechtigung erteilt werden muss, bevor sie überhaupt eine tatsächliche Arbeit ausführen können! Ich führe eine Anwendung aus, sie verlangt von mir eine UAC-Bestätigung und ich lehne sie ab – die Anwendung wird einfach nicht ausgeführt.

Funktioniert UAC also so?

sudo su
./run_app

Statt:

./do_work1
sudo su
./du_work2

Vielen Dank für die tollen Antworten aller!

Antwort1

Wenn Sie sich als Standardbenutzer bei Windows anmelden, wird eine Anmeldesitzung erstellt und ein Token zugewiesen, der nur die grundlegendsten Berechtigungen enthält. Auf diese Weise kann die neue Anmeldesitzung keine Änderungen vornehmen, die das gesamte System betreffen würden. Wenn Sie sich als Benutzer in der Gruppe „Administratoren“ anmelden, werden zwei separate Token zugewiesen. Das erste Token enthält alle Berechtigungen, die normalerweise einem Administrator gewährt werden, und das zweite ist ein eingeschränktes Token, ähnlich dem, das ein Standardbenutzer erhalten würde. Benutzeranwendungen, einschließlich der Windows-Shell, werden dann mit dem eingeschränkten Token gestartet, was selbst unter einem Administratorkonto zu einer Umgebung mit eingeschränkten Berechtigungen führt. Wenn eine Anwendung höhere Berechtigungen anfordert oder auf „Als Administrator ausführen“ geklickt wird, fordert die Benutzerkontensteuerung eine Bestätigung an und startet den Vorgang, wenn die Zustimmung erteilt wird, mit dem uneingeschränkten Token.

So wie ich es verstehe, bedeutet der letzte Satz, dass entweder der UAC-Dialog angezeigt wird, bevor die App geladen wird, damit sie mit dem uneingeschränkten Token gestartet wird, oder dass sie, wenn sie mit Standardbenutzerberechtigungen gestartet wird und zwischendurch für einige Arbeiten erhöhte Berechtigungen benötigt, die Zustimmung des Benutzers einholen muss und dannErzeugen Sie einen neuen Prozess, der dann mit erhöhten Rechten ausgeführt wird.. Das Token, das einem Prozess beim Start zugewiesen wird, bestimmt seine Rechte. Dieses Token kann später nicht mehr geändert werden. Wenn also weitere Rechte erforderlich sind, muss ein neuer Prozess gestartet werden.

In diesem Sinne ist UAC nicht genau dasselbe wiesudo.

Antwort2

Unter Windows wird die UAC-Eingabeaufforderung ausgelöst, wenn Sie versuchen, eine ausführbare Datei auszuführen, diein einem Manifest als Erhöhungsanforderung markiertin die Datei eingebettet und Sie führen nicht bereits erhöhte Berechtigungen aus. Das Verhalten ähnelt eher setuid als su, da es die Datei und nicht der Befehl ist, der dem Betriebssystem mitteilt, dass die ausführbare Datei mit anderen Anmeldeinformationen ausgeführt werden soll.

Antwort3

Der Grund hierfür ist schlicht und einfach, dass sie unterschiedlich sind.könntehätte wie umgesetzt werden sollen sudo, wurde es aber nicht.

Sie können es sich als Analogie zum Netzwerkschutz vorstellen.

sudoist wie wenn ein Programm Netzwerkzugriff anfordert und Ihre Firewall Sie auffordert, ihm diesen zu gewähren oder nicht. Sie können „ja“ sagen und das Programm öffnet den Socket, oder Sie können „nein“ sagen und es beschwert sich über eine fehlende Verbindung und tut, was es ohne Netzwerkzugriff tun kann (einige schlecht konzipierte Programme stürzen tatsächlich ab). Beispiel:

function1();
input();
function2();
secure_operation(); //requests access
function3();        //may depend on results of previous operation; error-checking important

UAC ähnelt eher der Warnung, die Sie erhalten, wenn Sie versuchen, eine Datei zu öffnen, die auf ein NTFS-Volume heruntergeladen wurde. Windows warnt Sie vor möglichen Fehlern und fragt, ob Sie die Datei (überhaupt) ausführen möchten oder nicht. Es ist eine Alles-oder-Nichts-Operation; Sie können nicht entscheiden, nur einem Teil des Programms zu vertrauen und anderen nicht. Beispiel:

if (requires_high_priv(program)) {
  if (request_priv(program))
    program();
}
else {
  program();
}

Sie müssen bedenken, dass Windows im Gegensatz zu Linux, das eher auf fortgeschrittene Benutzer und Anwendungen ausgerichtet ist, so konzipiert ist, dass es für eine möglichst große Benutzervielfalt benutzerfreundlich ist. Daher ist die Vereinfachung der Sicherheit von größter Bedeutung. Darüber hinaus ist es aufgrund seiner großen Angriffsfläche ein häufiges Ziel für Malware. Daher ist es sinnvoller, einem Programm entweder vollständig zu vertrauen oder es überhaupt nicht zu verwenden.

Antwort4

Ich kenne mich mit der Linux-Architektur nicht so gut aus, also verzeihen Sie mir, wenn mir ein Fehler unterläuft, aber meines Wissens nach unterscheiden sich Linux und Windows in dieser Hinsicht gar nicht so sehr ...

Ein Beispiel ... Ein Kopierskript, das eine Kopie einer normalen Datei an einen ungeschützten Ort erstellt, eine Datei an einen geschützten Ort kopiert und anschließend erneut eine normale Kopie erstellt.

Nach meinem Verständnis wird eine Anwendung unter Linux einfach ausgeführt und versucht, eine Aktion auszuführen. Wenn sie keine Berechtigung für diese Aktion hat, schlägt die Aktion fehl, aber sie wird fortgesetzt. Im obigen Beispiel – wenn Sie das Kopierskript unter Linux als normaler Benutzer ausführen, wird die normale Datei kopiert, eine Berechtigungsfrage ausgegeben und die zweite Datei kopiert. Wenn Sie es mit sudo ausführen, werden alle drei Kopien erstellt.

Unter Windows verhält es sich in dieser Hinsicht genauso – wenn Sie das Skript als nicht-administrativer Benutzer ausführen, wird einfach eins kopiert, dem zweiten die Berechtigung erteilt und das nächste kopiert. Mit UAC werden alle drei ausgeführt.

Der Unterschied besteht darin, dass viele Windows-Anwendungen einfach über eine Konfiguration verfügen, die standardmäßig eine UAC-Erhöhung anfordert, und beendet werden bzw. einen Fehler verursachen, wenn dies nicht der Fall ist … aber diese Zahl nimmt immer weiter ab.

verwandte Informationen