Man page - utmp(5)
Packages contas this manual
- pts(4)
- initrd(4)
- bootparam(7)
- proc_driver(5)
- udp(7)
- proc_pid_numa_maps(5)
- standards(7)
- epoll(7)
- proc(5)
- proc_net(5)
- urandom(4)
- proc_pid_fdinfo(5)
- mailaddr(7)
- iso-8859-5(7)
- iso_8859-6(7)
- iconv(1)
- full(4)
- user-keyring(7)
- intro(5)
- ftm(7)
- shm_overview(7)
- feature_test_macros(7)
- proc_crypto(5)
- tzfile(5)
- aio(7)
- boot(7)
- proc_profile(5)
- proc_cgroups(5)
- cpuset(7)
- proc_pid_coredump_filter(5)
- proc_pid_cwd(5)
- proc_uptime(5)
- st(4)
- precedence(7)
- ddp(7)
- proc_zoneinfo(5)
- iso_8859_3(7)
- proc_pid_root(5)
- latin4(7)
- proc_tid_children(5)
- proc_pid_oom_adj(5)
- proc_mounts(5)
- iso_8859-14(7)
- ld-linux(8)
- capabilities(7)
- ptmx(4)
- mouse(4)
- sysfs(5)
- rtld-audit(7)
- proc_partitions(5)
- iso_8859_6(7)
- queue(7)
- proc_pid_pagemap(5)
- proc_pid_stack(5)
- proc_pid_mem(5)
- uri(7)
- ttytype(5)
- namespaces(7)
- proc_sys_user(5)
- latin5(7)
- procfs(5)
- charmap(5)
- proc_sys_kernel(5)
- getent(1)
- ip(7)
- iso_8859-5(7)
- queue(3)
- proc_sys_vm(5)
- random(7)
- iso-8859-10(7)
- process-keyring(7)
- protocols(5)
- system_data_types(7)
- operator(7)
- proc_pid_timerslack_ns(5)
- wtmp(5)
- iso_8859_15(7)
- cp1252(7)
- iso_8859_11(7)
- pkeys(7)
- kmem(4)
- proc_pid_clear_refs(5)
- proc_meminfo(5)
- latin8(7)
- zdump(8)
- fuse(4)
- utf-8(7)
- proc_kpagecount(5)
- futex(7)
- complex(7)
- iso_8859-13(7)
- proc_kcore(5)
- iso_8859-8(7)
- iso_8859_14(7)
- iconvconfig(8)
- network_namespaces(7)
- thread-keyring(7)
- locale(5)
- proc_pid_oom_score_adj(5)
- proc_pid_statm(5)
- signal-safety(7)
- units(7)
- re_format(7)
- proc_pid_comm(5)
- latin1(7)
- glibc(7)
- environ(7)
- iso_8859-9(7)
- tty(4)
- proc_pid_projid_map(5)
- urn(7)
- iso_8859_8(7)
- proc_loadavg(5)
- ipc_namespaces(7)
- proc_pid_syscall(5)
- proc_pid_cgroup(5)
- proc_pid_mountstats(5)
- proc_kpageflags(5)
- utmpx(5)
- termio(7)
- iso-8859-13(7)
- suffixes(7)
- iso_8859-16(7)
- intro(1)
- hostname(7)
- proc_pid_status(5)
- proc_pid_fd(5)
- proc_malloc(5)
- proc_sys_debug(5)
- proc_pid_mounts(5)
- console_codes(4)
- iso_8859_2(7)
- iso-8859-16(7)
- proc_thread-self(5)
- socket(7)
- sock_diag(7)
- null(4)
- raw(7)
- memusagestat(1)
- proc_pid_mountinfo(5)
- proc_sys_sunrpc(5)
- iso-8859-1(7)
- motd(5)
- iso_8859-7(7)
- utmp(5)
- proc_pid_auxv(5)
- latin2(7)
- intro(2)
- proc_modules(5)
- user_namespaces(7)
- iso-8859-2(7)
- proc_version(5)
- ldd(1)
- iso_8859-3(7)
- proc_diskstats(5)
- session-keyring(7)
- ascii(7)
- hosts.equiv(5)
- group(5)
- intro(4)
- proc_cmdline(5)
- resolver(5)
- time(7)
- packet(7)
- proc_kpagecgroup(5)
- hosts(5)
- proc_pid_maps(5)
- proc_tty(5)
- inotify(7)
- msr(4)
- tzselect(8)
- proc_locks(5)
- hpsa(4)
- mount_namespaces(7)
- cgroups(7)
- fanotify(7)
- latin7(7)
- intro(6)
- proc_slabinfo(5)
- proc_timer_list(5)
- proc_kallsyms(5)
- mq_overview(7)
- proc_buddyinfo(5)
- iso_8859-15(7)
- proc_pid_wchan(5)
- iso-8859-8(7)
- proc_stat(5)
- attributes(7)
- proc_bus(5)
- sln(8)
- iso_8859_4(7)
- cgroup_namespaces(7)
- symlink(7)
- fifo(7)
- proc_keys(5)
- locale(1)
- proc_devices(5)
- inode(7)
- iso_8859_13(7)
- nptl(7)
- svipc(7)
- proc_sys_proc(5)
- xattr(7)
- proc_key-users(5)
- iso_8859_10(7)
- erofs(5)
- sd(4)
- proc_ide(5)
- proc_dma(5)
- proc_pid_environ(5)
- utf8(7)
- proc_pid_seccomp(5)
- tcp(7)
- localedef(1)
- path_resolution(7)
- proc_kmsg(5)
- regex(7)
- unix(7)
- netdevice(7)
- host.conf(5)
- nss(5)
- proc_pid_io(5)
- issue(5)
- iso_8859-10(7)
- pipe(7)
- nologin(5)
- vcs(4)
- proc_mtrr(5)
- networks(5)
- resolv.conf(5)
- pldd(1)
- koi8-r(7)
- arp(7)
- ld.so(8)
- wavelan(4)
- proc_pid_uid_map(5)
- zero(4)
- iso-8859-7(7)
- memusage(1)
- iso-8859-6(7)
- latin6(7)
- user-session-keyring(7)
- armscii-8(7)
- shells(5)
- cp1251(7)
- rtnetlink(7)
- koi8-u(7)
- address_families(7)
- cpuid(4)
- core(5)
- pty(7)
- tis-620(7)
- iso_8859-1(7)
- math_error(7)
- iso_8859-4(7)
- proc_pid_autogroup(5)
- man(7)
- cciss(4)
- icmp(7)
- sprof(1)
- glob(7)
- iso-8859-9(7)
- proc_sys_dev(5)
- url(7)
- zic(8)
- sched(7)
- services(5)
- proc_pid(5)
- securetty(5)
- acct(5)
- loop(4)
- vcsa(4)
- iso_8859-2(7)
- proc_vmstat(5)
- pthreads(7)
- proc_timer_stats(5)
- uts_namespaces(7)
- elf(5)
- libc(7)
- proc_sysrq-trigger(5)
- credentials(7)
- proc_sys_net(5)
- numa(7)
- bpf-helpers(7)
- netlink(7)
- proc_pid_personality(5)
- iso_8859-11(7)
- mem(4)
- proc_apm(5)
- proc_pid_task(5)
- proc_cpuinfo(5)
- iso_8859_7(7)
- random(4)
- proc_sys_fs(5)
- proc_pid_ns(5)
- proc_filesystems(5)
- slabinfo(5)
- proc_sys_abi(5)
- latin9(7)
- proc_pid_stat(5)
- proc_execdomains(5)
- proc_swaps(5)
- keyrings(7)
- proc_ioports(5)
- iso_8859_1(7)
- hd(4)
- proc_self(5)
- landlock(7)
- proc_interrupts(5)
- port(4)
- proc_pid_cpuset(5)
- vdso(7)
- iso_8859_5(7)
- intro(7)
- mtrace(1)
- latin3(7)
- proc_sys(5)
- repertoiremap(5)
- lirc(4)
- filesystems(5)
- proc_ksyms(5)
- unicode(7)
- iso_8859_9(7)
- man-pages(7)
- pid_namespaces(7)
- proc_pid_attr(5)
- proc_sysvipc(5)
- intro(3)
- spufs(7)
- proc_config.gz(5)
- sem_overview(7)
- ldconfig(8)
- loop-control(4)
- iso-8859-4(7)
- proc_pid_timers(5)
- smartpqi(4)
- posixoptions(7)
- nsswitch.conf(5)
- proc_pid_map_files(5)
- time_namespaces(7)
- string_copying(7)
- iso-8859-11(7)
- proc_pid_gid_map(5)
- latin10(7)
- proc_pid_setgroups(5)
- ld-linux.so(8)
- ram(4)
- iso-8859-3(7)
- intro(8)
- proc_fb(5)
- vsock(7)
- termcap(5)
- fs(5)
- proc_iomem(5)
- iso-8859-15(7)
- signal(7)
- persistent-keyring(7)
- rtc(4)
- dsp56k(4)
- proc_pid_net(5)
- rpc(5)
- lp(4)
- veth(4)
- hier(7)
- kernel_lockdown(7)
- iso-8859-14(7)
- dir_colors(5)
- proc_scsi(5)
- proc_pid_cmdline(5)
- proc_fs(5)
- x25(7)
- proc_tid(5)
- proc_pid_smaps(5)
- proc_pid_limits(5)
- proc_pid_oom_score(5)
- locale(7)
- proc_pci(5)
- charsets(7)
- iso_8859_16(7)
- ipv6(7)
- tmpfs(5)
- proc_pid_exe(5)
- sysvipc(7)
- udplite(7)
- gai.conf(5)
apt-get install manpages
Available languages:
en fr es it pl ja ru ro zh_TW zh_CN deManual
| UTMP(5) | File Formats Manual | UTMP(5) |
NAME[名稱]
utmp, wtmp - 登 錄 記 錄(login records)
SYNOPSIS[總覽]
#include
DESCRIPTION[描述]
utmp 文 件 用 於 記 錄 當 前 系 統 用 戶 是 哪 些 人。 但 是 實 際 的 人 數 可 能 比 這 個 數 目 要 多 , 因 為 並 非 所 有 用 戶 都 用 utmp 登 錄。
警告: utmp 必 須 置 為 不 可 寫 , 因 為 很 多 系 統 程 序 ( 有 點 傻 的 那 種 ) 依 賴 於 它。 如 果 你 將 它 置 為 可 寫 , 其 他 用 戶 可 能 會 修 改 它 (//* 導 致 程 序 運 行 出 錯 ) 。 (//* (//* )中 為 譯 者 注)
文 件 中 是 一 些 條 目 的 列 表 , 條 目 的 結 構 ( 在 utmp.h 中 進 行 了 聲 明 ) 見 下 ( 注 意 這 裡 只 列 出 了 一 部 分 ; 細 節 依 libc 的 版 本 有 所 不 同 ):
#define UT_UNKNOWN 0
#define RUN_LVL 1
#define BOOT_TIME 2
#define NEW_TIME 3
#define OLD_TIME 4
#define INIT_PROCESS 5
#define LOGIN_PROCESS 6
#define USER_PROCESS 7
#define DEAD_PROCESS 8
#define ACCOUNTING 9
#define UT_LINESIZE 12
#define UT_NAMESIZE 32
#define UT_HOSTSIZE 256
struct exit_status {
short int e_termination; /* process termination status. */
short int e_exit; /* process exit status. */
};
struct utmp {
short ut_type; /* type of login */
pid_t ut_pid; /* pid of login process */
char ut_line[UT_LINESIZE]; /* device name of tty - "/dev/" */
char ut_id[4]; /* init id or abbrev. ttyname */
char ut_user[UT_NAMESIZE]; /* user name */
char ut_host[UT_HOSTSIZE]; /* hostname for remote login */
struct exit_status ut_exit; /* The exit status of a process
marked as DEAD_PROCESS. */
long ut_session; /* session ID, used for windowing*/
struct timeval ut_tv; /* time entry was made. */
int32_t ut_addr_v6[4]; /* IP address of remote host. */
char pad[20]; /* Reserved for future use. */
};
/* Backwards compatibility hacks. */
#define ut_name ut_user
#ifndef _NO_UT_TIME
#define ut_time ut_tv.tv_sec
#endif
#define ut_xtime ut_tv.tv_sec
#define ut_addr ut_addr_v6[0]
這 個 結 構 給 出 了 與 用 戶 終 端 聯 系 的 文 件 , 用 戶 的 登 錄 名 , 記 錄 於 time(2) 表 中 的 登 錄 時 間 。 字 符 串 如 果 比 給 定 的 大 小 小 的 話 , 則 以 '\0' 結 束 之。
第一個條目由 init(8) 執行 inittab(5)而產生。然而,在產生條目以前, init(8) 先將 utmp 清空(透過設定 ut_type 為 DEAD_PROCESS來實現. 當ut_type 不是 DEAD_PROCESS 或 RUN_LVL 並且不存在程序號為 ut_pid 的程序時,透過用空串清空 ut_user, ut_host 和 ut_time 來實現。如果不存在 ut_id 的空記錄, init(初始化時) 會建立一個。它將會依據 inittab 來設定 ut_id , 設定 ut_pid 和 ut_time 為當前值,設定 ut_type 到 INIT_PROCESS.
getty(8) 依據程序號定位條目, 將 ut_type 改為 LOGIN_PROCESS, 改變 ut_time, 設定 ut_line ,然後等待連線建立。 login(8), 在鑑別完使用者後, 將 ut_type 改為 USER_PROCESS, 改變 ut_time 並設定 ut_host 和 ut_addr. 根據 getty(8) 和 login(8)完成的功能, 可以用 ut_line 來定位記錄,雖然用 ut_pid 可能更好些。
當 init(8) 發現有程序存在時, 它透過 ut_pid 來定位它的 utmp 條目, 設定 ut_type 為 DEAD_PROCESS ,然後用零位元組清空 ut_user, ut_host 和 ut_time 。
xterm(1) 和其他終端模擬器直接建立 USER_PROCESS 記錄並透過使用 /dev/ttyp%c 的最後兩個字母或用 p%d (/dev/pts/%d)來產生 ut_id 。 如果它們找到這個 id 的 DEAD_PROCESS , 它們就使用它,否則就建立一個新的條目. 如果可能,它們將它標記為 DEAD_PROCESS 並將 ut_line, ut_time, ut_user 和 ut_host 置為 null。
xdm(8) 不會建立 utmp 記錄, 因為沒有終端與它相連. 試圖用它產生 utmp 記錄會引起如下錯誤:finger: can not stat /dev/machine.dom. 它應該用於建立 wtmp 條目, 和 ftpd(8) 相似.
telnetd(8) 設定 LOGIN_PROCESS 條目並把其他的的留給 login(8) 去做。telnet 任務結束後, telnetd(8) cleans up utmp in the described way.(??)
wtmp 檔案記錄了所有的登入和退出。它的格式與 utmp 幾乎完全一樣(例外是:用空使用者名稱來表示在相關終端上的退出)。除此以外, 用終端名 "~" 和使用者名稱 "shutdown" 或 "reboot" 表示系統關機或重啟, the pair of terminal names "|"/"}" logs the old/new system time when date(1) changes it. wtmp 由 login(1), 和 init(1) 以及某些版本的 getty(1) 使用. 但是這些程式並不建立它,所以如果將它刪除的話您就得不到記錄了。
FILES[相關檔案]
/var/run/utmp
/var/log/wtmp
CONFORMING TO[遵循]
Linux utmp 既不遵循 v7/BSD 也不遵循 SYSV: 它實際是兩者的混合. v7/BSD 中域比較少; 最重要的是它沒有 ut_type (ut_type 可以使本地的 v7/BSD-類的程式顯示(以次為例) dead 或 login 條目.而且,沒有為任務分配通道的檔案. BSD 則相反(BSD does so), 因為它缺少的是 ut_id 域. 在 Linux 中(SYSV 中也一樣), 記錄的 ut_id 域一旦設定就不再改變,它保留通道而不需要什麼配置檔案. 清除 ut_id 可能會引起 race conditions 從而導致安全漏洞. 就 SYSV 的要求來講,用空位元組填充的方式來清空上面提到的各個域不是必須的,但是這樣做使得執行採用 BSD 語法而又不改變 utmp 的程式成為可能. 正如上面所寫的,Linux 在句子中使用 BSD 的慣例.
SYSV 在句子中僅使用型別域去標識它們或是登入資訊(例如:. "new time"). UT_UNKNOWN 只在 Linux 中有. SYSV 沒有 ut_host 和 ut_addr_v6 域.
不象其它各種系統, 您可以透過刪除檔案來禁止 utmp , 在 Linux 中 utmp 必須一直存在. 如果你要禁止 who(1) 命令,您需要使整個 utmp 不可讀.
需要注意的是在 libc5 和 libc6 中 utmp 的結構是不同的.因此使用舊結構的程式會破壞 /var/run/utmp 和/or /var/log/wtmp. Debian 系統包含一個修補過的 libc5 它可以使用新的格式. 但對 wtmp, 問題依然存在因為它直接對 libc5 進行存取.
RESTRICTIONS[限制]
檔案格式依機器而不同, 因此推薦的做法是:在建立它的機器上使用它.
BUGS[缺憾]
本手冊頁基於 libc5 , 現在可能情況已有不同了.
SEE ALSO[另見]
ac(1), date(1), getutent(3), init(8), last(1), login(1), updwtmp(3), who(1)
[中文版維護人]
Redcandle <redcandle51@chinaren.com>
[中文版最新更新]
2001.11.08
《中國linux論壇man手冊頁翻譯計劃》:
http://cmpp.linuxforum.net
跋
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
| July 2, 1997 |