Ich verwende CloudFormation, um einen Stack mit einer EC2-Instanz zu starten. Sobald die Instanz läuft, möchte ich die Funktion „Befehl ausführen“ verwenden können, um einige Skripte auszuführen, abernicht als Root-Benutzer. Deshalb UserData
erstelle ich im Init-Skript (Abschnitt der YAML-Vorlage) einen neuen Benutzer, indem ich denDokumente:
sudo adduser sometestuser sudo su - sometestuser mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys
Ich gehe davon aus, dass ich diesen Benutzer verwenden kann, um einige Skripte auszuführen, nachdem die Instanz vollständig initialisiert wurde. Anschließend melde ich mich bei der Instanz an oder verwende „Befehl ausführen“ und führe den folgenden Befehl aus, um zu überprüfen, ob der Benutzer existiert:
id -u sometestuser
Problem
Nach einiger Zeit nach der Erstellung der Instanz (bis zu 10 Minuten, wie ich bisher festgestellt habe) sieht es so aus, als würde der Benutzer entfernt. Zum Beispiel nach dem SSH-Zugriff auf den Host:
[...@ip-10-0-44-213]/% date && id -u sometestuser Tue Sep 11 10:25:41 UTC 2018 59844 [...@ip-10-0-44-213]/% date && id -u sometestuser Tue Sep 11 10:28:03 UTC 2018 59844 [...@ip-10-0-44-213]/% date && id -u sometestuser Tue Sep 11 10:31:42 UTC 2018 id: sometestuser: no such user [...@ip-10-0-44-213]/% date && id -u sometestuser Tue Sep 11 10:32:28 UTC 2018 id: sometestuser: no such user
Sie können sehen, dass der Benutzer mehrere Minuten lang existierte und dann verschwand. Ich konnte ihn jedes Mal reproduzieren, wenn ich die Instanz hochfuhr.
Frage
Warum funktioniert das so? Gibt es einen Hintergrundjob, der benutzerdefinierte Benutzer entfernt, die möglicherweise bestimmte Regeln nicht einhalten?
Antwort1
Es stellte sich heraus, dass wir einen Mechanismus verwenden, den ich nicht kannte. Der Mechanismus synchronisiert Benutzerkonten mit einer unternehmensinternen Benutzergruppe.