/etc/shadow bearbeiten und SPEICHERN mit cut (war: expiry date)

Status
Für weitere Antworten geschlossen.

Umpalumpa

Benutzer
Mitglied seit
26. Dez 2014
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Hallo Linux-Experten!

Ich möchte gerne die Datei /etc/shadow bearbeiten, um dort ein Verfallsdatum einzutragen. Zwar komme ich mit einer Kombination von cat und sed sehr einfach an ein evtl. dort verzeichnetes Datum 'ran, aber wie SPEICHERE ich da nur einen Wert hinein??

Eine Zeile in der shadow-Datei hat üblicherweise die FOrm:

Rich (BBCode):
username:$1$Ppdxsfa0$PQ1w5jS9Uf4rbroOZ6qNi.:16314:0:99999:7:::
Mit cut komme ich nun leicht an das Verfallsdatum 'ran:

Rich (BBCode):
cut -d':' -f8 shadow
aber eben nur als AUSGABE. Wie kann ich da einen Wert EINTRAGEN und ABSPEICHERN? Bitte beachten: das muss unbedingt via Script automatisiert geschehen, ein Editor hilft an der Stelle nicht weiter.

Ich hoffe, dass es einfacher geht als:
  1. Datei zeilenweise öffnen
  2. jede Zeile mit sed analysieren und suchen/ersetzen
  3. jede Zeile mit >> in neue Datei shadow.tmp speichern
  4. shadow löschen
  5. shadow.tmp in shadow umbenennen

Danke und Gruß, Umpalumpa
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Wenn Dir bis morgen niemand ein Shellskript anbietet, schaue ich mir das Thema einmal in Perl an. Sollte damit schnell erledigt sein.
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Hiermit wird's auf den 31.12.2015 gesetzt.

cp -p /etc/shadow /tmp/shadow
awk -F: '{OFS=":";$8=16800;print $0}' /tmp/shadow >/etc/shadow
 

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.836
Punkte für Reaktionen
2.272
Punkte
829
Kojak (Telly Savalas) würde sagen: "Entzückend". :)
 

Umpalumpa

Benutzer
Mitglied seit
26. Dez 2014
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Wenn Dir bis morgen niemand ein Shellskript anbietet, schaue ich mir das Thema einmal in Perl an.

Das ist sehr freundlich von dir, aber dieses Problem ist nur ein Steinchen im Mosaik meines "automatischen Benutzer-Managements". Ich schreibe es gerade von Debian-Bash-Script um in ein ash-Script. Zumindest versuche ich es :) Und meine Perl-Kenntnise sind nicht vorhanden bis sehr schlecht ;)

Trotzdem Danke und Gruß,
Umpalumpa
 

Umpalumpa

Benutzer
Mitglied seit
26. Dez 2014
Beiträge
57
Punkte für Reaktionen
0
Punkte
0
Hiermit wird's auf den 31.12.2015 gesetzt.

cp -p /etc/shadow /tmp/shadow
awk -F: '{OFS=":";$8=16800;print $0}' /tmp/shadow >/etc/shadow



Hallo, ich habe mich gerade mal ein wenig mit dem awk-Befehl auseinandergesetzt, das geht ja wirklich prima und einfach damit. Mein Problem habe ich nun folgendermaßen gelöst:

Rich (BBCode):
#!/bin/ash

# zuerst einmal eine Kopie der shadow-Datei anlegen:
cp -p /etc/shadow /etc/tmp_shadow

# Jetzt die neu angelegten User mit Verfallsdatum
# versehen und die Kopie wieder ueber die urspruengliche
# shadow-Datei drueberschreiben:
awk -F: '{OFS=":";
        if ($1 == "user1" || $1 == "user2")
                $8=18728;
        print;
}' /etc/tmp_shadow > /etc/shadow

So werden nur die beiden Benutzer "user1" und "user2" mit einem Verfallsdatum versehen.

Danke für die Hilfe,
Umpalumpa.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat