Ich möchte einem Programm die Rechte des Benutzers geben, der es ausführt. Gibt es ein Äquivalent zumSetuidunter Windows (vorzugsweise Windows 7 oder zumindest Windows nach XP)?
Was ist, wenn ich dem Programm mehr Rechte geben möchte als dem Benutzer, der es ausführt? (Ich möchte beispielsweise, dass das Programm in die Programmdatei schreibt, der Benutzer dies jedoch nicht dürfen soll.)
Antwort1
Kurz gesagt: Sie müssen nichts tun, um ein Programm mit den Rechten des Benutzers auszuführen, der es erstellt hat. Dies ist Standard für Windows-Systeme.
Um ein Programm zu zwingen, als ein völlig anderer Benutzer ausgeführt zu werden, wie es SetUID tut, hat Microsoft dieRennen wieBefehl, mit dem Sie eine ausführbare Datei mit den Anmeldeinformationen eines anderen Benutzers aufrufen können.
Darüber hinaus können Sie auf UAC-fähigen Systemen wie Windows 7 die Umschalttaste gedrückt halten und mit der rechten Maustaste auf eine ausführbare Datei klicken, um das Programm unter einem anderen Benutzer auszuführen und diesem Benutzer bei Bedarf Administratorrechte zuzuweisen.
Bitte beachten Sie, dass sich die folgende Antwort auf die ursprüngliche Frage zu Sticky bezieht.
Um Ihre Frage direkt zu beantworten: Ja und nein. Man kann die Funktion emulieren, aber die Anwendung ist völlig anders.
Ich glaube, Sie verwechseln das Sticky-Bit mit den anderen speziellen Unix-Berechtigungen SetUID und SetGID, die beide die Ausführung von Anwendungen im Verhältnis zum Benutzer beeinflussen, der den Prozess aufruft. Bei Sticky ist dies jedoch nicht der Fall.
Im Fenster „Erweiterte Berechtigungen“ (über die Eigenschaften eines Objekts -> Registerkarte „Sicherheit“ -> „Erweitert“) können Sie Folgendes hinzufügen oder bearbeiten:Berechtigungenfür den CREATOR OWNER
„Benutzer“ und erteilen Sie ihm die Berechtigungen Delete
und Delete subfolders and files
. Widerrufen Sie dann für alle anderen Entitäten in der ACL dieselben Berechtigungen (aber verweigern Sie sie nicht).
Dadurch können alle Benutzer mit Schreibberechtigung beliebige Dateien erstellen/bearbeiten, aber nur der Dateieigentümer kann sie löschen.
Beachten Sie, dass dieser Ansatz denselben Fehler wie Sticky aufweist: Jeder Benutzer mit Bearbeitungsrechten kann die Datei mit 0B überschreiben, was konzeptionell dem Löschen der Datei ähnelt (viele argumentieren, dass es so gut wie ... ist).
viel Glück.
Antwort2
Unter Windows können Sie ein Programm nicht als anderer Benutzer ausführen, ohne das Kennwort des Zielbenutzers zu kennen oder diese Information einmalig auf dem Computer zu speichern.
Ein Programm unter Windows wird standardmäßig immer mit den Berechtigungen des aktuellen Benutzers ausgeführt. Dies gilt auch für die Ordner oder Einstellungen, auf die das Programm dann zugreifen kann. Diese Einstellungen können auf der Registerkarte „Sicherheit“ eines Programms oder Ordners geändert werden.
Sie können ein Programm mit einem anderen Benutzer starten (indem Sie beispielsweise SHIFT
+ gedrückt halten right-click
und dann auswählen Run as different user
oder einfach Run as administrator
), um ihm die erweiterten Rechte eines anderen Benutzers zu erteilen, der auf dem Computer über Administratorrechte verfügt.
Dies kann auch mit dem runas
CMD-Befehl erreicht werden und kann in einer Verknüpfung festgelegt werden, um die Anmeldung zu automatisieren
Ein Beispiel:
runas /user:.\localadmin /savecred notepad.exe
Der /savecred
Parameter teilt dem Befehl mit, dass das Benutzerkennwort bereits auf dem Computer gespeichert wurde und beim Ausführen kein Kennwort erforderlich ist. Das Kennwort muss zuerst im Anmeldeinformations-Manager in der Systemsteuerung gespeichert werden.
Beachten Sie, dass dadurch das Programm auch mit dem Profil des anderen Benutzers geladen wird. Ein Programm, das Einstellungen beispielsweise in AppData gespeichert hat, lädt diese vom Benutzer, der das Programm ausgeführt hat.
Windows-Dienste können jedoch als anderer Benutzer ausgeführt werden. Dies kann in
Services.msc-Konsole > „Dienst“ auswählen > „Eigenschaften“ > „Anmelden“