{"id":4327,"date":"2022-12-20T17:48:59","date_gmt":"2022-12-20T20:48:59","guid":{"rendered":"http:\/\/lode.uno\/linux-man\/index.php\/2022\/12\/20\/utmp-man5\/"},"modified":"2022-12-20T17:48:59","modified_gmt":"2022-12-20T20:48:59","slug":"utmp-man5","status":"publish","type":"post","link":"https:\/\/lode.uno\/linux-man\/2022\/12\/20\/utmp-man5\/","title":{"rendered":"UTMP (man5)"},"content":{"rendered":"<h1 align=\"center\">UTMP<\/h1>\n<p> <a href=\"#NAME\">NAME<\/a><br \/> <a href=\"#SYNOPSIS\">SYNOPSIS<\/a><br \/> <a href=\"#DESCRIPTION\">DESCRIPTION<\/a><br \/> <a href=\"#FILES\">FILES<\/a><br \/> <a href=\"#CONFORMING TO\">CONFORMING TO<\/a><br \/> <a href=\"#NOTES\">NOTES<\/a><br \/> <a href=\"#SEE ALSO\">SEE ALSO<\/a><br \/> <a href=\"#COLOPHON\">COLOPHON<\/a> <\/p>\n<hr>\n<h2>NAME <a name=\"NAME\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\">utmp, wtmp \u2212 login records<\/p>\n<h2>SYNOPSIS <a name=\"SYNOPSIS\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>#include <utmp.h><\/b><\/p>\n<h2>DESCRIPTION <a name=\"DESCRIPTION\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\">The <i>utmp<\/i> file allows one to discover information about who is currently using the system. There may be more users currently using the system, because not all programs use utmp logging.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>Warning:<\/b> <i>utmp<\/i> must not be writable by the user class &#8220;other&#8221;, because many system programs (foolishly) depend on its integrity. You risk faked system logfiles and modifications of system files if you leave <i>utmp<\/i> writable to any user other than the owner and group owner of the file.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">The file is a sequence of <i>utmp<\/i> structures, declared as follows in <i><utmp.h><\/i> (note that this is only one of several definitions around; details depend on the version of libc):<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">\/* Values for ut_type field, below *\/<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">#define EMPTY 0 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Record does not contain valid info <br \/> (formerly known as UT_UNKNOWN on Linux) bodies\/ usr\/ <br \/> #define RUN_LVL 1 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Change in system run-level (see <b><br \/> init<\/b>(1)) bodies\/ usr\/ <br \/> #define BOOT_TIME 2 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Time of system boot (in <i>ut_tv<\/i>) bodies\/ usr\/ <br \/> #define NEW_TIME 3 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Time after system clock change <br \/> (in <i>ut_tv<\/i>) bodies\/ usr\/ <br \/> #define OLD_TIME 4 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Time before system clock change <br \/> (in <i>ut_tv<\/i>) bodies\/ usr\/ <br \/> #define INIT_PROCESS 5 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Process spawned by <b>init<\/b>(1) bodies\/ usr\/ <br \/> #define LOGIN_PROCESS 6 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Session leader process for user login bodies\/ usr\/ <br \/> #define USER_PROCESS 7 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Normal process bodies\/ usr\/ <br \/> #define DEAD_PROCESS 8 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Terminated process bodies\/ usr\/ <br \/> #define ACCOUNTING 9 \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Not implemented *\/<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">#define UT_LINESIZE 32 <br \/> #define UT_NAMESIZE 32 <br \/> #define UT_HOSTSIZE 256<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">struct exit_status { \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Type for ut_exit, below bodies\/ usr\/ <br \/> short e_termination; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Process termination status bodies\/ usr\/ <br \/> short e_exit; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Process exit status bodies\/ usr\/ <br \/> };<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">struct utmp { <br \/> short ut_type; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Type of record bodies\/ usr\/ <br \/> pid_t ut_pid; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var PID of login process bodies\/ usr\/ <br \/> char ut_line[UT_LINESIZE]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Device name of tty \u2212 &#8220;\/dev\/&#8221; bodies\/ usr\/ <br \/> char ut_id[4]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Terminal name suffix, <br \/> or inittab(5) ID bodies\/ usr\/ <br \/> char ut_user[UT_NAMESIZE]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Username bodies\/ usr\/ <br \/> char ut_host[UT_HOSTSIZE]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Hostname for remote login, or <br \/> kernel version for run-level <br \/> messages bodies\/ usr\/ <br \/> struct exit_status ut_exit; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Exit status of a process <br \/> marked as DEAD_PROCESS; not <br \/> used by Linux init(1) bodies\/ usr\/ <br \/> \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var The ut_session and ut_tv fields must be the same size when <br \/> compiled 32- and 64-bit. This allows data files and shared <br \/> memory to be shared between 32- and 64-bit applications. bodies\/ usr\/ <br \/> #if __WORDSIZE == 64 &#038;&#038; defined __WORDSIZE_COMPAT32 <br \/> int32_t ut_session; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Session ID (<b>getsid<\/b>(2)), <br \/> used for windowing bodies\/ usr\/ <br \/> struct { <br \/> int32_t tv_sec; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Seconds bodies\/ usr\/ <br \/> int32_t tv_usec; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Microseconds bodies\/ usr\/ <br \/> } ut_tv; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Time entry was made bodies\/ usr\/ <br \/> #else <br \/> long ut_session; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Session ID bodies\/ usr\/ <br \/> struct timeval ut_tv; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Time entry was made bodies\/ usr\/ <br \/> #endif<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">int32_t ut_addr_v6[4]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Internet address of remote <br \/> host; IPv4 address uses <br \/> just ut_addr_v6[0] bodies\/ usr\/ <br \/> char __unused[20]; \/bin \/boot \/dead.letter \/dev \/etc \/home \/initrd \/lib \/lib64 \/lost+found \/media \/mnt \/opt \/proc \/release-notes.html \/release-notes.txt \/root \/run \/sbin \/srv \/sys \/tmp \/usr \/var Reserved for future use bodies\/ usr\/ <br \/> };<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">\/* Backward compatibility hacks bodies\/ usr\/ <br \/> #define ut_name ut_user <br \/> #ifndef _NO_UT_TIME <br \/> #define ut_time ut_tv.tv_sec <br \/> #endif <br \/> #define ut_xtime ut_tv.tv_sec <br \/> #define ut_addr ut_addr_v6[0]<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">This structure gives the name of the special file associated with the user\u2019s terminal, the user\u2019s login name, and the time of login in the form of <b>time<\/b>(2). String fields are terminated by a null byte (&#8216;\u0000&#8217;) if they are shorter than the size of the field.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">The first entries ever created result from <b>init<\/b>(1) processing <b>inittab<\/b>(5). Before an entry is processed, though, <b>init<\/b>(1) cleans up utmp by setting <i>ut_type<\/i> to <b>DEAD_PROCESS<\/b>, clearing <i>ut_user<\/i>, <i>ut_host<\/i>, and <i>ut_time<\/i> with null bytes for each record which <i>ut_type<\/i> is not <b>DEAD_PROCESS<\/b> or <b>RUN_LVL<\/b> and where no process with PID <i>ut_pid<\/i> exists. If no empty record with the needed <i>ut_id<\/i> can be found, <b>init<\/b>(1) creates a new one. It sets <i>ut_id<\/i> from the inittab, <i>ut_pid<\/i> and <i>ut_time<\/i> to the current values, and <i>ut_type<\/i> to <b>INIT_PROCESS<\/b>.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>mingetty<\/b>(8) (or <b>agetty<\/b>(8)) locates the entry by the PID, changes <i>ut_type<\/i> to <b>LOGIN_PROCESS<\/b>, changes <i>ut_time<\/i>, sets <i>ut_line<\/i>, and waits for connection to be established. <b>login<\/b>(1), after a user has been authenticated, changes <i>ut_type<\/i> to <b>USER_PROCESS<\/b>, changes <i>ut_time<\/i>, and sets <i>ut_host<\/i> and <i>ut_addr<\/i>. Depending on <b>mingetty<\/b>(8) (or <b>agetty<\/b>(8)) and <b>login<\/b>(1), records may be located by <i>ut_line<\/i> instead of the preferable <i>ut_pid<\/i>.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">When <b>init<\/b>(1) finds that a process has exited, it locates its utmp entry by <i>ut_pid<\/i>, sets <i>ut_type<\/i> to <b>DEAD_PROCESS<\/b>, and clears <i>ut_user<\/i>, <i>ut_host<\/i>, and <i>ut_time<\/i> with null bytes.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>xterm<\/b>(1) and other terminal emulators directly create a <b>USER_PROCESS<\/b> record and generate the <i>ut_id<\/i> by using the string that suffix part of the terminal name (the characters following <i>\/dev\/[pt]ty<\/i>). If they find a <b>DEAD_PROCESS<\/b> for this ID, they recycle it, otherwise they create a new entry. If they can, they will mark it as <b>DEAD_PROCESS<\/b> on exiting and it is advised that they null <i>ut_line<\/i>, <i>ut_time<\/i>, <i>ut_user<\/i>, and <i>ut_host<\/i> as well.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>telnetd<\/b>(8) sets up a <b>LOGIN_PROCESS<\/b> entry and leaves the rest to <b>login<\/b>(1) as usual. After the telnet session ends, <b>telnetd<\/b>(8) cleans up utmp in the described way.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">The <i>wtmp<\/i> file records all logins and logouts. Its format is exactly like <i>utmp<\/i> except that a null username indicates a logout on the associated terminal. Furthermore, the terminal name <b>~<\/b> with username <b>shutdown<\/b> or <b>reboot<\/b> indicates a system shutdown or reboot and the pair of terminal names <b>|<\/b>\/<b>}<\/b> logs the old\/new system time when <b>date<\/b>(1) changes it. <i>wtmp<\/i> is maintained by <b>login<\/b>(1), <b>init<\/b>(1), and some versions of <b>getty<\/b>(8) (e.g., <b>mingetty<\/b>(8) or <b>agetty<\/b>(8)). None of these programs creates the file, so if it is removed, record-keeping is turned off.<\/p>\n<h2>FILES <a name=\"FILES\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\"><i>\/var\/run\/utmp <br \/> \/var\/log\/wtmp<\/i><\/p>\n<h2>CONFORMING TO <a name=\"CONFORMING TO\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\">POSIX.1 does not specify a <i>utmp<\/i> structure, but rather one named <i>utmpx<\/i>, with specifications for the fields <i>ut_type<\/i>, <i>ut_pid<\/i>, <i>ut_line<\/i>, <i>ut_id<\/i>, <i>ut_user<\/i>, and <i>ut_tv<\/i>. POSIX.1 does not specify the lengths of the <i>ut_line<\/i> and <i>ut_user<\/i> fields.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">Linux defines the <i>utmpx<\/i> structure to be the same as the <i>utmp<\/i> structure.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>Comparison with historical systems<\/b> <br \/> Linux utmp entries conform neither to v7\/BSD nor to System V; they are a mix of the two.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">v7\/BSD has fewer fields; most importantly it lacks <i>ut_type<\/i>, which causes native v7\/BSD-like programs to display (for example) dead or login entries. Further, there is no configuration file which allocates slots to sessions. BSD does so because it lacks <i>ut_id<\/i> fields.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">In Linux (as in System V), the <i>ut_id<\/i> field of a record will never change once it has been set, which reserves that slot without needing a configuration file. Clearing <i>ut_id<\/i> may result in race conditions leading to corrupted utmp entries and potential security holes. Clearing the abovementioned fields by filling them with null bytes is not required by System V semantics, but makes it possible to run many programs which assume BSD semantics and which do not modify utmp. Linux uses the BSD conventions for line contents, as documented above.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">System V has no <i>ut_host<\/i> or <i>ut_addr_v6<\/i> fields.<\/p>\n<h2>NOTES <a name=\"NOTES\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\">Unlike various other systems, where utmp logging can be disabled by removing the file, utmp must always exist on Linux. If you want to disable <b>who<\/b>(1), then do not make utmp world readable.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">The file format is machine-dependent, so it is recommended that it be processed only on the machine architecture where it was created.<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">Note that on <i>biarch<\/i> platforms, that is, systems which can run both 32-bit and 64-bit applications (x86-64, ppc64, s390x, etc.), <i>ut_tv<\/i> is the same size in 32-bit mode as in 64-bit mode. The same goes for <i>ut_session<\/i> and <i>ut_time<\/i> if they are present. This allows data files and shared memory to be shared between 32-bit and 64-bit applications. This is achieved by changing the type of <i>ut_session<\/i> to <i>int32_t<\/i>, and that of <i>ut_tv<\/i> to a struct with two <i>int32_t<\/i> fields <i>tv_sec<\/i> and <i>tv_usec<\/i>. Since <i>ut_tv<\/i> may not be the same as <i>struct timeval<\/i>, then instead of the call:<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">gettimeofday((struct timeval *) &#038;ut.ut_tv, NULL);<\/p>\n<p style=\"margin-left:11%; margin-top: 1em\">the following method of setting this field is recommended:<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">struct utmp ut; <br \/> struct timeval tv;<\/p>\n<p style=\"margin-left:17%; margin-top: 1em\">gettimeofday(&#038;tv, NULL); <br \/> ut.ut_tv.tv_sec = tv.tv_sec; <br \/> ut.ut_tv.tv_usec = tv.tv_usec;<\/p>\n<h2>SEE ALSO <a name=\"SEE ALSO\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\"><b>ac<\/b>(1), <b>date<\/b>(1), <b>init<\/b>(1), <b>last<\/b>(1), <b>login<\/b>(1), <b>logname<\/b>(1), <b>lslogins<\/b>(1), <b>users<\/b>(1), <b>utmpdump<\/b>(1), <b>who<\/b>(1), <b>getutent<\/b>(3), <b>getutmp<\/b>(3), <b>login<\/b>(3), <b>logout<\/b>(3), <b>logwtmp<\/b>(3), <b>updwtmp<\/b>(3)<\/p>\n<h2>COLOPHON <a name=\"COLOPHON\"><\/a> <\/h2>\n<p style=\"margin-left:11%; margin-top: 1em\">This page is part of release 5.10 of the Linux <i>man-pages<\/i> project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https:\/\/www.kernel.org\/doc\/man\u2212pages\/.<\/p>\n<hr>\n","protected":false},"excerpt":{"rendered":"<p>  utmp, wtmp \u2212 login records <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[959],"tags":[961,1291,1341],"class_list":["post-4327","post","type-post","status-publish","format-standard","hentry","category-5-formatos-de-ficheros","tag-961","tag-man5","tag-utmp"],"gutentor_comment":0,"_links":{"self":[{"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/posts\/4327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/comments?post=4327"}],"version-history":[{"count":0,"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/posts\/4327\/revisions"}],"wp:attachment":[{"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/media?parent=4327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/categories?post=4327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lode.uno\/linux-man\/wp-json\/wp\/v2\/tags?post=4327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}