Root User / Sudo-Äquivalent in Cygwin?

156

Ich versuche, ein Bash-Skript in Cygwin auszuführen.

Ich bekomme Must run as root, i.e. sudo ./scriptnameFehler.

chmod 777 scriptname tut nichts, um zu helfen.

Ich habe nach Möglichkeiten gesucht, Sudo auf Cygwin zu imitieren und einen Root-Benutzer hinzuzufügen, da das Aufrufen von "su" den Fehler wiedergibt su: user root does not exist, alles Nützliche und nichts gefunden hat.

Hat jemand irgendwelche Vorschläge?

Ken Bellows
quelle
Hallo KenB, können Sie uns mehr Details zu dem whatSkript geben, das Sie ausführen möchten ? Es gibt kein Äquivalent zu 'sudo' in einer Cygwin-Shell - die Rechte stammen von dem Win-Benutzer, der die Cygwin-Shell gestartet hat. Daher ist der KyleWpppd-Link gut, um Fehler wie "sudo unknown command" zu vermeiden. In Ihrem Fall scheint es sich um ein bestimmtes Problem mit dem Skript zu handeln, das Sie ausführen möchten.
Stefano
1
Ehrlich gesagt ist dies ein Thema, das lange vorbei ist, und ich erinnere mich nicht wirklich, was das Drehbuch war. Vielen Dank für das Interesse.
Ken Bellows

Antworten:

225

Ich habe diese Frage auf SuperUser beantwortet, aber erst nachdem das OP die nicht hilfreiche Antwort ignoriert hatte, die zu diesem Zeitpunkt die einzige Antwort auf die Frage war.

Hier ist der richtige Weg, um die Berechtigungen in Cygwin zu erhöhen, kopiert von meiner eigenen Antwort auf SuperUser:

Ich habe die Antwort auf der Cygwin-Mailingliste gefunden . Um commandin Cygwin mit erhöhten Berechtigungen ausgeführt zu werden, gehen Sie dem Befehl cygstart --action=runaswie folgt voran :

$ cygstart --action=runas command

Dadurch wird ein Windows-Dialogfeld geöffnet, in dem Sie nach dem Administratorkennwort gefragt werden, und der Befehl wird ausgeführt, wenn das richtige Kennwort eingegeben wurde.

Dies ist einfach zu skripten, solange ~/bines sich auf Ihrem Weg befindet. Erstellen Sie eine Datei ~/bin/sudomit folgendem Inhalt:

#!/usr/bin/bash
cygstart --action=runas "$@"

Machen Sie nun die Datei ausführbar:

$ chmod +x ~/bin/sudo

Jetzt können Sie Befehle mit echten erhöhten Berechtigungen ausführen :

$ sudo elevatedCommand

Möglicherweise müssen Sie ~/binIhren Pfad erweitern. Sie können den folgenden Befehl auf der Cygwin-CLI ausführen oder hinzufügen ~/.bashrc:

$ PATH=$HOME/bin:$PATH

Getestet unter 64-Bit Windows 8.

Anstelle der obigen Schritte können Sie auch einen Alias ​​für diesen Befehl hinzufügen zu ~/.bashrc:

# alias to simulate sudo
alias sudo='cygstart --action=runas'
dotancohen
quelle
12
Hervorragende Antwort. Mit einigen Änderungen an Ihrem Bash-Code (unten) konnte ich einen erhöhten Befehl über die Befehlszeile ausführen. Hier ist die Änderung, die ich brauchte, damit Ihr Code funktioniert: cat << 'EOF' > ~/bin/sudo\n #!/usr/bin/bash\n cygstart --action=runas "$@"\n EOF (Ich kann nicht herausfinden, wie Zeilenumbrüche in diesen Kommentar eingefügt werden, daher habe ich dem Code '\ n' hinzugefügt.) Der Rest ab PATH = ... ist in Ordnung .
josmith42
3
Oh, ich verstehe! Wenn ich mich nicht irre, schreiben Sie die Datei auf diese Weise auf die Festplatte, anstatt einen Texteditor zu öffnen. Nett, danke! Ich wusste nicht, wie man Heredocs in Bash benutzt!
Dotancohen
8
Das Problem dabei ist, dass ein ganz neues Terminalfenster erstellt wird (normalerweise conhost). Der Ausgang ist nicht in das aktuelle Terminal eingebunden.
CMCDragonkai
1
Die einzige Möglichkeit, Dinge wie auszuführen, lsbesteht darin, sie in einen lang laufenden Prozess wie Mintty, Bash oder Zsh einzuschließen. Aber alles erscheint in einem separaten Terminal. Was ich zu diesem Zeitpunkt einfach über die GUI mit ConEMU hätte öffnen können.
CMCDragonkai
1
Ohne die Anführungszeichen werden sogar zitierte Argumente wieder in Leerzeichen aufgeteilt, @katriel. Mit den Anführungszeichen "$@"erweitert sich zu etwas wie "$1" "$2" "$3" ...und ohne, $@erweitert sich zu $1 $2 $3....
Palec
51

Sie müssen wahrscheinlich die Cygwin-Shell als Administrator ausführen. Sie können mit der rechten Maustaste auf die Verknüpfung klicken und auf Als Administrator ausführen klicken oder die Eigenschaften der Verknüpfung aufrufen und im Abschnitt Kompatibilität überprüfen. Vorsicht ... Root-Berechtigungen können gefährlich sein.

Matt Williamson
quelle
1
In den drei Jahren, seit diese Frage im Gegensatz zu dieser Problemumgehung ohne eine gute Antwort gestellt wurde, habe ich in der folgenden Antwort den richtigen Weg gefunden, um die Berechtigungen für einen einzelnen Befehl im vorhandenen Cygwin-Fenster zu erhöhen . Somit funktioniert es genau wie sudounter Linux.
Dotancohen
Arbeitete für mich unter Win10 64. Musste den Besitz von Dateien ändern, die von einem Server mit rsync heruntergeladen wurden. chown --changes --verbose --recursive [USER] /cygdrive/c/[PATH TO FOLDER]/*. Ohne sie könnte ich nicht auf die synchronisierten Ordner und Dateien zugreifen.
Lowtechsun
25

Aufbauend auf der Antwort von dotancohen verwende ich einen Alias:

alias sudo="cygstart --action=runas"

Funktioniert als Zauber:

sudo chown User:Group <file>

Und wenn Sie SysInternals installiert haben, können Sie als Systembenutzer sogar ganz einfach eine Befehlsshell starten

sudo psexec -i -s -d cmd
thoni56
quelle
9

Ich habe sudo-for-cygwin gefunden . Vielleicht würde dies funktionieren. Es handelt sich um eine Client / Server-Anwendung, die ein Python-Skript verwendet, um einen untergeordneten Prozess in Windows (pty) zu erzeugen und die tty des Benutzers und die Prozess-E / A zu verbinden.

Es erfordert Python in Windows und Python-Modulen Greenlet und Eventlet in Cygwin.

AdamTheWebMan
quelle
Ich benutze das jetzt schon eine Weile und es behandelt interaktive Dinge wie Nano ohne Probleme!
MemphiZ
4

Es scheint, dass cygstart/runasdies nicht richtig funktioniert "$@"und daher Befehle mit Argumenten, die Leerzeichen enthalten (und möglicherweise andere Shell-Metazeichen - ich habe es nicht überprüft), nicht richtig funktionieren.

Ich habe beschlossen, nur ein kleines sudoSkript zu schreiben , das funktioniert, indem ich ein temporäres Skript schreibe, das die Parameter korrekt ausführt.

#! /bin/bash

# If already admin, just run the command in-line.
# This works on my Win10 machine; dunno about others.
if id -G | grep -q ' 544 '; then
   "$@"
   exit $?
fi

# cygstart/runas doesn't handle arguments with spaces correctly so create
# a script that will do so properly.
tmpfile=$(mktemp /tmp/sudo.XXXXXX)
echo "#! /bin/bash" >>$tmpfile
echo "export PATH=\"$PATH\"" >>$tmpfile
echo "$1 \\" >>$tmpfile
shift
for arg in "$@"; do
  qarg=`echo "$arg" | sed -e "s/'/'\\\\\''/g"`
  echo "  '$qarg' \\" >>$tmpfile
done
echo >>$tmpfile

# cygstart opens a new window which vanishes as soon as the command is complete.
# Give the user a chance to see the output.
echo "echo -ne '\n$0: press <enter> to close window... '" >>$tmpfile
echo "read enter" >>$tmpfile

# Clean up after ourselves.
echo "rm -f $tmpfile" >>$tmpfile

# Do it as Administrator.
cygstart --action=runas /bin/bash $tmpfile
Brian White
quelle
1
Die akzeptierte Antwort funktionierte für mich unter Win7 nicht, aber diese Antwort funktionierte wie ein Zauber. Ich konnte exim-config mit erhöhten Rechten einrichten und anschließend die Datei /etc/exim.conf vim-bearbeiten. Glatt.
Nanker
2

Diese Antwort basiert auf einer anderen Antwort . Stellen Sie zunächst sicher, dass sich Ihr Konto in der Gruppe Administratoren befindet.

Erstellen Sie als Nächstes eine generische Datei "runas-admin.bat" mit folgendem Inhalt:

@if (1==1) @if(1==0) @ELSE
@echo off&SETLOCAL ENABLEEXTENSIONS
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"||(
    cscript //E:JScript //nologo "%~f0" %*
    @goto :EOF
)
FOR %%A IN (%*) DO (
    "%%A"
)
@goto :EOF
@end @ELSE
args = WScript.Arguments;
newargs = "";
for (var i = 0; i < args.length; i++) {
    newargs += "\"" + args(i) + "\" ";
}
ShA=new ActiveXObject("Shell.Application");
ShA.ShellExecute("cmd.exe","/c \""+WScript.ScriptFullName+" "+newargs+"\"","","runas",5);
@end

Führen Sie dann die Batchdatei wie folgt aus:

./runas-admin.bat "<command1> [parm1, parm2, ...]" "<command2> [parm1, parm2, ...]"

Zum Beispiel:

./runas-admin.bat "net localgroup newgroup1 /add" "net localgroup newgroup2 /add"

Stellen Sie einfach sicher, dass jeder einzelne Befehl in doppelte Anführungszeichen gesetzt wird. Sie erhalten die UAC-Eingabeaufforderung nur einmal, wenn Sie diese Methode verwenden. Diese Prozedur wurde verallgemeinert, sodass Sie jede Art von Befehl verwenden können.

user2618594
quelle
2

Ein neuer Vorschlag zur Verbesserung von SUDO für CygWin von GitHub in diesem Thread mit dem Namen TOUACExt :

  • Öffnet automatisch sudoserver.py.
  • Schließt sudoserver.py nach einer Zeitüberschreitung automatisch (standardmäßig 15 Minuten).
  • UAC-Erhöhungsaufforderung anfordern Ja / Nein-Stil für Administratorbenutzer.
  • Administratorbenutzer / Passwort für Nicht-Administratorbenutzer anfordern.
  • Funktioniert remote (SSH) mit Administratorkonten.
  • Erstellt ein Protokoll.

Noch in der Pre-Beta , scheint aber zu funktionieren.

Sopalajo de Arrierez
quelle
1

Ich bin hier über Google gelandet und glaube tatsächlich, einen Weg gefunden zu haben, um in Cygwin eine voll funktionsfähige Root-Promt zu erhalten.

Hier sind meine Schritte.

Zuerst müssen Sie das Windows-Administratorkonto in "root" umbenennen. Öffnen Sie dazu das Starthandbuch und geben Sie "gpedit.msc" ein.

Bearbeiten Sie den Eintrag unter Richtlinie für lokalen Computer> Computerkonfiguration> Windows-Einstellungen> Sicherheitseinstellungen> Lokale Richtlinien> Sicherheitsoptionen> Konten: Administratorkonto umbenennen

Dann müssen Sie das Konto aktivieren, wenn es noch nicht aktiviert ist. Lokale Computerrichtlinie> Computerkonfiguration> Windows-Einstellungen> Sicherheitseinstellungen> Lokale Richtlinien> Sicherheitsoptionen> Konten: Status des Administratorkontos

Melden Sie sich jetzt ab und beim Root-Konto an.

Legen Sie nun eine Umgebungsvariable für cygwin fest. Um dies auf einfache Weise zu tun: Klicken Sie mit der rechten Maustaste auf Arbeitsplatz> Eigenschaften

Klicken Sie (in der linken Seitenleiste) auf "Erweiterte Systemeinstellungen".

Klicken Sie unten auf die Schaltfläche "Umgebungsvariablen"

Klicken Sie unter "Systemvariablen" auf die Schaltfläche "Neu ..."

Geben Sie für den Namen "cygwin" ohne Anführungszeichen ein. Geben Sie den Wert in Ihr Cygwin-Stammverzeichnis ein. (Meins war C: \ cygwin)

Drücken Sie OK und schließen Sie alles, um zum Desktop zurückzukehren.

Öffnen Sie ein Cygwin-Terminal (cygwin.bat)

Bearbeiten Sie die Datei / etc / passwd und ändern Sie die Zeile

Administrator : nicht verwendet: 500: 503 : U- MACHINE \ Administrator , S-1-5-21-12345678-1234567890-1234567890- 500: / home / Administrator : / bin / bash

Dazu (Ihre Nummern und der Maschinenname sind unterschiedlich, stellen Sie nur sicher, dass Sie die markierten Nummern auf 0 ändern!)

root : unbenutzt: 0: 0 : U- MACHINE \ root , S-1-5-21-12345678-1234567890-1234567890-0 : / root : / bin / bash

Nachdem alles erledigt ist, wird der Befehl "su" mit diesem nächsten Bit funktionieren. (Nicht perfekt, aber es wird genug funktionieren, um es zu verwenden. Ich denke nicht, dass Skripte richtig funktionieren werden, aber hey, du bist so weit gekommen, vielleicht kannst du den Weg finden. Und bitte teile)

Führen Sie diesen Befehl in cygwin aus, um den Deal abzuschließen.

mv /bin/su.exe /bin/_su.exe_backup
cat > /bin/su.bat << "EOF"
@ECHO OFF
RUNAS /savecred /user:root %cygwin%\cygwin.bat
EOF
ln -s /bin/su.bat /bin/su
echo ''
echo 'All finished'

Melden Sie sich vom Root-Konto ab und kehren Sie zu Ihrem normalen Windows-Benutzerkonto zurück.

Führen Sie danach die neue "su.bat" manuell aus, indem Sie im Explorer darauf doppelklicken. Geben Sie Ihr Passwort ein und schließen Sie das Fenster.

Versuchen Sie nun, den Befehl su von cygwin aus auszuführen, und prüfen Sie, ob alles in Ordnung war.

Hydranix
quelle
1

Da ich mit der verfügbaren Lösung nicht zufrieden bin, habe ich das Skript von nu774 übernommen , um die Sicherheit zu erhöhen und die Einrichtung und Verwendung zu vereinfachen. Das Projekt ist auf Github verfügbar

Um es zu verwenden, laden cygwin-sudo.pySie es einfach herunter und führen Sie es über aus python3 cygwin-sudo.py **yourcommand**.

Sie können der Einfachheit halber einen Alias ​​einrichten:

alias sudo="python3 /path-to-cygwin-sudo/cygwin-sudo.py"
Chronial
quelle
0

Verwenden Sie diese Option, um ein Administrationsfenster mit Bash oder Cmd aus einem beliebigen Kontextmenü des Verzeichnisses abzurufen. Klicken Sie einfach mit der rechten Maustaste auf einen Verzeichnisnamen und wählen Sie den Eintrag aus oder klicken Sie auf die hervorgehobene Schaltfläche.

Dies basiert auf dem chere-Tool und der leider nicht funktionierenden Antwort (für mich) von link_boy. Es funktioniert gut für mich mit Windows 8,

Ein Nebeneffekt ist die unterschiedliche Farbe im Admin-Cmd-Fenster. Um dies bei Bash zu verwenden, können Sie die .bashrc-Datei des Administrators ändern.

Ich kann die "Hintergrund" -Version (Rechtsklick in ein offenes Verzeichnis) nicht ausführen. Fühlen Sie sich frei, es hinzuzufügen.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="&Bash Prompt Here"
"Icon"="C:\\cygwin\\Cygwin.ico"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="C:\\cygwin\\bin\\bash -c \"/bin/xhere /bin/bash.exe '%L'\""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash_root]
@="&Root Bash Prompt Here"
"Icon"="C:\\cygwin\\Cygwin.ico"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash_root\command]
@="runas /savecred /user:administrator \"C:\\cygwin\\bin\\bash -c \\\"/bin/xhere /bin/bash.exe '%L'\\\"\""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd]
@="&Command Prompt Here"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd\command]
@="cmd.exe /k cd %L"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd_root]
@="Roo&t Command Prompt Here"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_cmd_root\command]
@="runas /savecred /user:administrator \"cmd.exe /t:1E /k cd %L\""
user2988447
quelle
0

Eine sehr einfache Möglichkeit, eine Cygwin-Shell und entsprechende Subshells mit Administratorrechten zu betreiben, besteht darin, die Eigenschaften des Links zu ändern, der die ursprüngliche Shell öffnet.

Folgendes gilt für Windows 7+ (möglicherweise auch für frühere Versionen, aber ich habe es nicht überprüft)

Normalerweise starte ich die Cygwin-Shell über einen Cygwin-Link in der Startschaltfläche (oder auf dem Desktop). Dann habe ich die Eigenschaften des Cygwin-Links in den Registerkarten geändert

/ Kompatibilität / Berechtigungsstufe /

und überprüfte das Kästchen,

"Führen Sie dieses Programm als Administrator aus"

Dadurch kann die Cygwin-Shell mit Administratorrechten und den entsprechenden Subshells geöffnet werden.

DMH
quelle
Das einzige kleine Problem ist, dass Sie nicht feststellen können, ob es als Administrator geöffnet ist.
Edwin Pratt
0

Ich habe diese Diskussion getroffen und nach Details zur sudoImplementierung in verschiedenen Betriebssystemen gesucht . Beim Lesen stellte ich fest, dass die Lösung von @ brian-white ( https://stackoverflow.com/a/42956057/3627676 ) nützlich ist, aber leicht verbessert werden kann. Ich habe es vermieden, die temporäre Datei zu erstellen, und implementiert, um alles mit dem einzigen Skript auszuführen.

Außerdem habe ich den nächsten Schritt der Verbesserung der Ausgabe innerhalb eines einzelnen Fensters / einer einzelnen Konsole untersucht. Leider ohne Erfolg. Ich habe versucht, Named Pipes zu verwenden, um STDOUT / STDERR zu erfassen und im Hauptfenster zu drucken. Der untergeordnete Prozess hat jedoch nicht in Named Pipes geschrieben. Das Schreiben in eine reguläre Datei funktioniert jedoch gut.

Ich habe alle Versuche, die Grundursache zu finden, abgebrochen und die aktuelle Lösung unverändert gelassen. Hoffe, mein Beitrag kann auch nützlich sein.

Verbesserungen:

  • keine temporäre Datei
  • Kein Parsen und Rekonstruieren der Befehlszeilenoptionen
  • Warten Sie den erhöhten Befehl
  • benutze minttyoder bash, wenn der erste nicht gefunden wird
  • Geben Sie den Befehlsexitcode zurück
    #! / bin / bash

    # Rufen Sie als Administratoren den Befehl direkt auf
    id -G | grep -qw 544 && {
        "$ @"
        $ verlassen?
    }}

    # Die Variable CYG_SUDO wird verwendet, um den Befehlsaufruf zu steuern
    [-z "$ CYG_SUDO"] && {
        mintty = "$ (welche mintty 2> / dev / null)"
        export CYG_SUDO = "$$"
        cygstart --wait --action = runas $ mintty / bin / bash "$ 0" "$ @"
        $ verlassen?
    }}

    # Jetzt können wir:
    # - Starten Sie den Befehl
    # - Nachricht anzeigen
    # - Geben Sie den Exit-Code zurück
    "$ @"
    RETVAL = $?

    echo "$ 0: Drücken Sie, um das Fenster zu schließen ..."
    lesen

    Beenden Sie $ RETVAL

jsxt
quelle
Wie bricht man cygstart --wait --action=runas $mintty /bin/bash "$0" "$@"nicht, wenn ein Argument Leerzeichen enthält? Es war immer für mich, wenn ich solche durch Cygstart / Runas ging.
Brian White
0

Basierend auf der Antwort von @ mat-khor nahm ich den Syswin su.exe, speicherte ihn als manufacture-syswin-su.exeund schrieb dieses Wrapper-Skript. Es behandelt die Umleitung von stdout und stderr des Befehls, sodass es in einer Pipe usw. verwendet werden kann. Außerdem wird das Skript mit dem Status des angegebenen Befehls beendet.

Einschränkungen:

  • Die syswin-su-Optionen sind derzeit fest codiert, um den aktuellen Benutzer zu verwenden. Durch das Voranstellen env USERNAME=...des Skriptaufrufs wird dieser überschrieben. Wenn andere Optionen benötigt würden, müsste das Skript zwischen syswin-su- und Befehlsargumenten unterscheiden, z. B. beim ersten Teilen --.
  • Wenn die UAC-Eingabeaufforderung abgebrochen oder abgelehnt wird, bleibt das Skript hängen.

.

#!/bin/bash
set -e

# join command $@ into a single string with quoting (required for syswin-su)
cmd=$( ( set -x; set -- "$@"; ) 2>&1 | perl -nle 'print $1 if /\bset -- (.*)/' )

tmpDir=$(mktemp -t -d -- "$(basename "$0")_$(date '+%Y%m%dT%H%M%S')_XXX")
mkfifo -- "$tmpDir/out"
mkfifo -- "$tmpDir/err"

cat >> "$tmpDir/script" <<-SCRIPT
    #!/bin/env bash
    $cmd > '$tmpDir/out' 2> '$tmpDir/err'
    echo \$? > '$tmpDir/status'
SCRIPT

chmod 700 -- "$tmpDir/script"

manufacture-syswin-su -s bash -u "$USERNAME" -m -c "cygstart --showminimized bash -c '$tmpDir/script'" > /dev/null &
cat -- "$tmpDir/err" >&2 &
cat -- "$tmpDir/out"
wait $!
exit $(<"$tmpDir/status")
EndlosSchleife
quelle
-1

Ich kann das selbst nicht vollständig testen, ich habe kein geeignetes Skript, um es auszuprobieren, und ich bin kein Linux-Experte, aber Sie können möglicherweise etwas nahe genug hacken.

Ich habe diese Schritte ausprobiert und sie scheinen zu funktionieren, aber ich weiß nicht, ob sie für Ihre Bedürfnisse ausreichen.

Um das Fehlen eines Root-Benutzers zu umgehen:

  • Erstellen Sie auf dem lokalen Windows-Computer einen Benutzer mit dem Namen "root" und machen Sie ihn zu einem Mitglied der Gruppe "Administratoren"
  • Markieren Sie die Datei bin / bash.exe für alle Benutzer als "Als Administrator ausführen" (natürlich müssen Sie diese nach Bedarf ein- und ausschalten).
  • Halten Sie die linke Umschalttaste im Windows Explorer gedrückt, während Sie mit der rechten Maustaste auf die Datei Cygwin.bat klicken
  • Wählen Sie "Als anderer Benutzer ausführen".
  • Geben Sie als Benutzernamen. \ Root und dann Ihr Passwort ein.

Dadurch werden Sie als Benutzer mit dem Namen "root" in cygwin ausgeführt, was in Verbindung mit "Als Administrator ausführen" in der Datei "bash.exe" möglicherweise ausreicht.

Sie benötigen jedoch noch einen Sudo.

Ich habe dies vorgetäuscht (und jemand anderes mit mehr Linux-Kenntnissen kann es wahrscheinlich besser vortäuschen), indem ich eine Datei namens 'sudo' in / bin erstellt und diese Befehlszeile verwendet habe, um den Befehl stattdessen an su zu senden:

su -c "$*"

Die Befehlszeile 'sudo vim' und andere scheinen für mich in Ordnung zu sein, also möchten Sie es vielleicht ausprobieren.

Seien Sie interessiert zu wissen, ob dies für Ihre Bedürfnisse funktioniert oder nicht.

Larry David
quelle
-1

Normalerweise habe ich einen Registrierungshelfer "Hier öffnen", um eine Cygwin-Shell mit Administratorrechten ganz einfach von überall auf meinem Computer aus zu öffnen.

Beachten Sie, dass Sie das Cygwin "chere" -Paket installiert haben müssen. Verwenden Sie zuerst " chere -i -m" von einer erhöhten Cygwin-Shell.

Angenommen, Ihre Cygwin-Installation befindet sich in C: \ cygwin ...

Hier ist der Registrierungscode:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

[-HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

[-HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash]

[HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash]
@="Open Cygwin Here as Root"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\Drive\shell\cygwin_bash\command]
@="c:\\cygwin\\bin\\mintty.exe -i /Cygwin-Terminal.ico -e /bin/xhere /bin/bash.exe"

Hoffe das hilft. Lassen Sie mich wissen, ob es für Sie funktioniert. Vielen Dank.

PS: Sie können diesen Code abrufen, kopieren und einfügen und in einer Datei name.reg speichern, um ihn auszuführen ... oder Sie können die Werte manuell hinzufügen.

link_boy
quelle
-5

Versuchen:

chmod -R ug+rwx <dir>

Wo <dir>befindet sich das Verzeichnis, in dem Sie die Berechtigungen ändern möchten?

Shanmukh
quelle
5
Wie wird ihn das verwurzeln lassen, wie er fragt?
Nikana Reklawyks