Der" andere " Finger (GECOS Felder bei /etc / passwd)

In der Datei /etc/passwd haben wir das sogenannte GECOS fields (was für "General Electric Comprehensive Operating System" steht), das heißt:

username:password:userid:groupid:gecos:home-dir:shell 

Wobei GECOS unterteilt sind als:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

Und Others sind in beliebig viele Kommas unterteilt:

:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:

Auf den man chfn Seiten kann man lesen:

Das andere Feld dient zum Speichern von Buchhaltungsinformationen, die von anderen Applications.

Jetzt für einen Anwendungsentwickler (ich bin interessiert an C language, system calls und / oder bash script) Welches ist der beste Weg, um diese Informationen zu erfassen?

Und wenn man nur die Umgebung Bash betrachtet, da der Befehl finger die Felder others nicht anzeigen kann (oder zumindest nicht sehe, wie), was sind andere Befehle das kann? Ich weiß, dass chfn nicht nur angezeigt, sondern auch geändert werden kann. Was ist, wenn man es nur an stdout ausgeben soll?

Author: kasperd, 2016-01-26

2 answers

Der beste Weg, den ich gefunden habe, ist die Verwendung von getent, da dies mit LDAP/NIS oder anderen Methoden nicht lokaler Benutzer funktioniert

getent passwd $UID| awk -F ":" '{print $5}'
 3
Author: Tim Hughes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-31 15:43:21

Zum Beispiel können Sie in einem Bash-Skript das fünfte Feld der Datei /etc/passwd mit awk/gawk drucken:

awk -F ":" '{print $5}' /etc/passwd

Die Option -F fs verwendet fs für das Eingabefeldtrennzeichen (in diesem Fall :).
Sie können mehr lesen, zum Beispiel auf der GNU awk Homepage [1].
Awk hat die Funktion split(), um eine Zeichenfolge aufzuteilen (in diesem Fall verwenden Sie das 5.Feld als Zeichenfolge und das , als Trennzeichen). Nehmen Sie insipiration von einer anderen Antwort darüber [2]....

 1
Author: Hastur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:34