wie kann ich den Wert von Systemdateien ändern, ohne sie zu öffnen?

wie kann ich den Wert von Systemdateien ändern, ohne sie zu öffnen?

Gibt es eine Möglichkeit, den Wert von „PermitRootLogin“ /etc/ssh/sshd_configmit einem Befehl im Terminal zu ändern?

Ich möchte die Werte dieser Datei ändern, ohne sie zu öffnen, und den Wert „PermitRootLogin“ von „Ja“ auf „Nein“ ändern.

Antwort1

Dies ist problemlos mit sed, match für die Zeile und Änderung des Wertes möglich:

sed -i '/^PermitRootLogin/s/yes/no/' /etc/ssh/sshd_config
  • ^PermitRootLoginentspricht der Zeile, die beginnt mitPermitRootLogin
  • s/yes/noändert den Wert der Option von "ja" auf "nein"

Antwort2

Ich möchte den Wert „PermitRootLogin“ von „Ja“ auf „Nein“ ändern.

In diesem Fall würde ich Perl verwenden (also etwas, das mit Feldern arbeitet und direkt bearbeitet werden kann; beim ersten schlägt Sed fehl und beim zweiten AWK):

sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
% grep ^PermitRootLogin /etc/ssh/sshd_config                                                     
PermitRootLogin without-password
% sudo perl -i -lane '/^PermitRootLogin/?print("@F[0] no"):print($_)' /etc/ssh/sshd_config
[sudo] password for user: 
% grep ^PermitRootLogin /etc/ssh/sshd_config                                              
PermitRootLogin no

Antwort3

Sie können sie mit sed ändern, verwenden Sie die Option -i

sed -i -e 's/old/new/g' file

Weitere Einzelheiten finden Sie unter man sed.

http://www.grymoire.com/Unix/Sed.html

Antwort4

Jedes Programm, das in irgendeiner Weise mit Dateien arbeitet, muss open()sowohl read()Systemaufrufe ausführen, die mit überprüft werden können strace. Das Öffnen einer Datei ohne diese Systemaufrufe ist unmöglich

Deine Frage scheint sich darauf zu beziehen, ob eine Datei ohne Texteditor bearbeitet werden kann. Das ist möglich, wie andere gezeigt haben. Mein kleiner Beitrag hierzu ist folgender:

awk '/^PermitRootLogin/{$2="yes"}1' /etc/ssh/sshd_config > /tmp/sshd_config && mv /tmp/sshd_config /etc/ssh/sshd_config

Grundsätzlich finden wir mit AWK die entsprechende Zeile, ersetzen Feld 2, das „nein“ ist, durch „ja“, geben alles in eine temporäre Datei aus und ersetzen das Original durch die temporäre Datei mv.

Denken Sie daran, dass diese Konfigurationsdatei Eigentum von root ist, Sie benötigen also sudoZugriff ( sudovorher hinzufügen mv).

verwandte Informationen