Man page - utmp(5)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es it pl ja ru ro zh_TW zh_CN deManual
UTMP
NAME[名 称 ]SYNOPSIS[总 览 ]
DESCRIPTION[描 述 ]
FILES[相 关 文 件 ]
CONFORMING TO[遵 循 ]
RESTRICTIONS[限 制 ]
BUGS[缺 憾 ]
SEE ALSO[另 见 ]
[中 文 版 维 护 人 ]
[中 文 版 最 新 更 新 ]
《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :
跋
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