Auf * nix-Systemen können Sie eine Root-Shell wie folgt erhalten:
$ su # or 'sudo -s'
#
Die Root-Shell wird an Ort und Stelle im selben Terminal erzeugt.
Ich versuche, auf der Windows-Eingabeaufforderung etwas zu finden, das eine ähnliche direkte Erhöhung bewirkt. Mit anderen Worten, es sollte kein neues Fenster geöffnet oder UAC-Eingabeaufforderungen angezeigt werden. Bisher konnte ich eine geplante Aufgabe erstellen, die die Benutzerkontensteuerung umgeht, aber das Fenster mit der Eingabeaufforderung mit erhöhten Rechten ist nicht vorhanden.
Gibt es einen ähnlichen Befehl für Windows, der eine direkte Erhöhung vornimmt, ohne ein neues Fenster zu erzeugen?
windows
command-line
uac
user2064000
quelle
quelle
sudo
werden Sie manchmal zur Eingabe eines Kennworts aufgefordert, dies geschieht jedoch über eine Textschnittstelle. Ich frage mich, wie Nano-Server (von denen ich glaube, dass sie nicht einmal eine grafische Benutzeroberfläche für Remotedesktop bieten ) damit umgehen.Antworten:
TL; DR - Die einzige Möglichkeit besteht darin, einen anderen Prozess zu erzeugen. (A new
cmd.exe
.) Wenn Sie bei der Eingabeaufforderung eine neue Instanz mit einem Zugriffstoken mit höheren Berechtigungen starten, wird immer ein neues Fenster erstellt.Es ist nicht möglich, einem bereits laufenden Prozess zusätzliche Berechtigungen zu erteilen .
Wenn sich ein Benutzer mit Administratorrechten bei einem Windows-Computer anmeldet, auf dem die Benutzerkontensteuerung (User Account Control, UAC) aktiviert ist, werden zwei separate Zugriffstoken erstellt :
Zum Zeitpunkt der Erstellung eines Prozesses (z. B.
CMD.EXE
) wird ihm einer dieser beiden Zugriffstoken zugewiesen . Wenn der Prozess als Administrator mit "erhöhten Rechten" ausgeführt wird, wird das ungefilterte Zugriffstoken verwendet. Wenn dem Prozess keine Administratorrechte gewährt werden, wird das gefilterte Standardbenutzertoken verwendet.Sobald ein Prozess erstellt wurde, kann sein Zugriffstoken nicht mehr ersetzt werden . 1 In diesem Thread von MSDN Application Security für Windows Desktop heißt es auf einem Poster, das sich als Mitglied des Windows-Kernel-Teams ausweist:
Hinweis: Die Benutzerkontensteuerung wurde mit der Veröffentlichung von Windows Vista eingeführt .
Diese Super User- Antwort enthält zwei zusätzliche Quellen, die dasselbe bestätigen:
Der devzest.com-Blogbeitrag Programming Elevated Privilege / UAC :
Der techtarget.com-Artikel So erhöhen Sie die Berechtigungen von Programmen mithilfe der Vista- Benutzerkontensteuerung ordnungsgemäß :
Daher ist es einfach nicht möglich, die Eingabeaufforderung oder einen anderen Prozess direkt zu aktivieren. Die einzige Möglichkeit besteht darin, einen anderen Prozess mit einem neuen Zugriffstoken zu erzeugen (bei Bedarf kann dies eine weitere Instanz des ursprünglichen Prozesses sein). Wenn Sie bei der Eingabeaufforderung eine neue Instanz mit einem Zugriffstoken mit höheren Berechtigungen starten, wird immer ein neues Fenster erstellt. Wenn auf dem System UAC-Eingabeaufforderungen aktiviert sind, werden diese ebenfalls ausgelöst.
1 Sie können die Berechtigungen in einem vorhandenen Zugriffstoken mit der AdjustTokenPrivileges- Funktion anpassen , jedoch gemäß MSDN :
quelle
Obwohl ich ein begeisterter Benutzer von bin
TCC-LE
, gibt es eine Lösung, die keine neuen Programme benötigt:cmd
als Administrator.%SystemRoot%\system32\
- wenn nicht, danncd
dort.copy cmd.exe cmdadmin.exe
(oder einen beliebigen Namen, den Sie wählen, z. B.su.exe
).cmdadmin.exe
.Jetzt
cmdadmin
ist Ihrsu
odersudo
: Sie können es ohne Parameter starten, um eine Shell mit Administratorrechten zu erhalten, oder Sie können es mit/c
ausführen, um einen einzelnen Befehl in diesem Modus auszuführen. Abhängig von Ihren Richtlinien werden Sie möglicherweise nicht zur Bestätigung aufgefordert.Beachten Sie, dass dies immer ein neues Fenster öffnet (wie auch die TCC-Lösung
start /elevated ...
): Für eine GUI-Anwendung wird dies erwartet, aber für ein Befehlszeilenprogramm möchten Sie möglicherweise/k
stattdessen verwenden/c
, um die Ausgabe zu sehen ; oder Sie könnten über eine Batch-Datei (sudo.cmd
vielleicht?) ausgeführt werden, die& pause
bis zum Ende Ihrer Ausführungszeichenfolge verkettet ist .In beiden Fällen ist es nicht ganz das Gleiche wie
su
odersudo
, aber es ist das Nächste, das Sie bekommen. Durch manuelles Einstellen des Fensterlayouts kann das neue Fenster direkt unter dem Original erstellt werden.quelle
sudo
, mit der Einschränkung, dass immer noch ein neues Fenster / ein neuer Prozess erstellt werden muss. Vom Standpunkt der Sicherheit aus gesehen ist dies wahrscheinlich nicht die beste Idee. Wenn Sie jedoch alle UAC-Eingabeaufforderungen deaktivieren, müssen Sie beim Starten des erhöhten Prozesses nicht mehr auf die UAC-Eingabeaufforderung reagieren.mklink cmdadmin.exe cmd.exe
Es gibt einen ziemlich unbequemen Weg:
Es gab bessere Möglichkeiten, aber Microsoft hat sie geschlossen. Natürlich können Sie jederzeit die Ärmel hochkrempeln und Ihr eigenes Skript schreiben, das
sudo
dem Quellcode entspricht, den ich Ihnen gerade gegeben habe.Blasphemie! Verbrenne ihn auf dem Scheiterhaufen! ;) Scherz beiseite, nein. Gibt es nicht Das wäre ein Bug und eine Sicherheitslücke. Microsoft hat sich ausdrücklich darum bemüht, dass der gehobene Prozess und der Standardprozess so wenig wie möglich gemeinsam haben.
Kluge Kids, die über zwei Back-Ends (ein Standard- und ein erweitertes) und ein grafisches Front-End für beide nachdenken, sollten sich mit Session 0 Isolation befassen .
quelle
Es ist kein solcher Befehl eingebaut. Obwohl ich das nicht bewiesen habe, glaube ich das, weil ich mehrere Möglichkeiten gesehen habe, zusätzliche Software / Code zu verwenden, um dieses Problem zu umgehen.
Vergiss es. Vergiss es auf jeden Fall. Das widerspricht dem Design von UAC. Wenn Sie das schaffen, brechen Sie einen grundlegenden Sicherheitsprozess. Sie können davon ausgehen, dass Ihre Lösung durch einen Patch beschädigt wird, nachdem Microsoft von dem Prozess erfahren und ihn korrigiert hat, den Sie möglicherweise ausführen, um dies zu umgehen.
Die Lösung, um UAC-Eingabeaufforderungen zu vermeiden, besteht darin, zunächst eine hohe Höhe festzulegen. UAC sollte Sie nicht stören, wenn Sie ausreichend autorisiert sind. Wenn Sie mit einer niedrigeren Höhe beginnen (was häufig aus Sicherheitsgründen empfohlen wird) und dann versuchen, etwas zu tun, das eine höhere Höhe erfordert, müssen Sie mit einer Interaktion mit der Benutzerkontensteuerung rechnen.
quelle
elevate cmd
, um ein neues Eingabeaufforderungsfenster mit einer UAC-Eingabeaufforderung zu öffnen (die Site verfügt auch über Kontextmenübefehle!). Oder Sie können natürlich auch einfach Strg + Umschalt + Klicken auf das Taskleistensymbol eines vorhandenen Eingabeaufforderungsfensters, um dasselbe zu tun - das mache ich normalerweise am häufigsten. (Was ich weiß, ist nicht das, wonach das OP gefragt hat, sondern das, wonach das OP gefragt hat.)Was Sie wollen, ist unter Windows nicht möglich, da dieses Konzept nicht unterstützt wird. Sie müssen einen neuen Prozess mit höheren Berechtigungen starten .
Ich benutze nircmd , um Prozesse von der Kommandozeile aus zu erhöhen. Ihr Befehl wäre
nircmdc elevate cmd
quelle
Ich habe diese Frage gesehen und eine einfache Lösung gefunden. Dies ist ein kleines Hilfsprogramm
rsudo
, das eskalierte Befehle in einem normalen CMD-Fenster ausführt.Hinweis: Eine UAC-Eingabeaufforderung wird angezeigt . Das zu verbergen ist nicht möglich, das ist nur die Art und Weise, wie die Benutzerkontensteuerung entworfen wurde.
Download[Download funktioniert nicht, wird bald aktualisiert]Hinweis: Die Befehle werden in einem neuen Fenster ausgeführt. Wenn Sie die Ausgabe anzeigen möchten, führen Sie aus
rsudo.exe "pause && [command]"
quelle
rsudo.exe "[command] && pause"
?pause
dazu, dass er zuerst ausgeführt wirdDieser ist komisch.
Sie könnten versuchen, einen SSH-Vorgang auf Ihrem eigenen Computer durchzuführen, der dasselbe vorhandene Terminal verwendet, aber tatsächlich ein völlig anderes Terminal ist.
Es wird funktionieren, aber es ist wahrscheinlich nicht das, was Sie wollen.
Andere mögen es jedoch nützlich finden.
quelle
Probieren Sie die JPSOFT Take Command- Eingabeaufforderung TCC / LE aus. Es ist in 32- und 64-Bit-Versionen erhältlich und kostenlos, sofern Sie nicht mehr Funktionen wünschen.
Gehen Sie zu https://jpsoft.com/, klicken Sie auf Downloads und wählen Sie aus, was Sie möchten.
TCC / LE hat einen START / ELEVATED, der das Programm mit vollen Administratorrechten startet. (Nur Windows Vista oder höher.)
quelle