Mit dem Abschlag verliere ich meine Sudo-Privilegien

329
Lefty G Balogh

Ich schreibe ein Installationsskript und muss es ausführen, sudowährend ich es auf AWS RedHat-Instanzen teste root. Ich möchte das Protokoll in eine Datei sowie auf den Bildschirm schreiben. Nichts sollte einfacher sein als das.

Ich kann entweder zur alten Schule gehen >> /tmp/Solr_Install.log 2>&1und im Hintergrund einen Tail-Prozess starten: tail -f installer.log &Diese Lösung neigt dazu, die Ausgabe auf dem Bildschirm zu duplizieren oder zu verdreifachen, also entschied ich mich für eine Komplettlösung.

Nutzen Sie einfach die Kraft der Truppe und 2>&1 | tee -a /tmp/Solr_Install.logmit dieser Lösung verliere ich meine Sudo-Rechte, und das Skript schlägt fehl.

Fragen: Warum zeigt der Schwanz 2-3 Mal dieselbe Linie? (Hat es etwas damit zu tun, dass tail -fdie letzten 10 Zeilen angezeigt werden?)

  • Kann das irgendwie behoben werden?

  • Warum verliere ich mein Sudo, wenn ich abschlage?

  • Kann das vermieden werden?

  • Gibt es eine andere Möglichkeit, Protokollmaterial gleichzeitig in eine Datei und auf den Bildschirm zu werfen?

1
Möglicherweise ist dies der Fall, der Ihren Anforderungen entspricht http://unix.stackexchange.com/questions/61931/redirect-all-subsequent-commands-stderr-using-exec Echoes_86 vor 7 Jahren 0
Echoes_86, ich muss um Vergebung bitten. Ich habe geprüft, und Ihre Lösung funktioniert, technisch gesehen, die @BatchyX-Lösung. Ich weiß immer noch nicht, warum ich mein Sudo Mojo verliere, aber hey, zumindest habe ich eine funktionierende Lösung. Lefty G Balogh vor 7 Jahren 0
Ich bin froh, dass du deine Lösung gefunden hast. Für mich ist der Ansatz (wie ich aus Ihrer Frage verstehe) von exec>> (tee "/tmp/Solr_Install.log") 2> & 1` das Beste für Sie. Echoes_86 vor 7 Jahren 0

1 Antwort auf die Frage

1
Stephen Rauch

sudoist kein für die Sitzung spezifisches Privileg. sudoist ein Befehl, der andere Befehle mit erhöhten Berechtigungen ausführt. Also laufen Sie einfach teemit sudo:

2>&1 | sudo tee -a /tmp/Solr_Install.log W 
Nicht das T-Stück funktioniert nicht, sondern der Rest des Skripts scheitert an T-Stück. Bitte stimmen Sie dieser Antwort nicht so zu, wie sie ist, keine Beleidigung, weil sie keine zufriedenstellende Antwort ist. Lefty G Balogh vor 7 Jahren 0