Linux Komutunu Öğrenin - wtmp

isim

utmp, wtmp - giriş kayıtları

özet

#include

Açıklama

Utmp dosyası, şu anda sistemi kimin kullandığı hakkında bilgi bulmanızı sağlar. Şu anda sistemi kullanan daha fazla kullanıcı olabilir, çünkü tüm programlar utmp logging kullanmaz.

Uyarı: utmp yazılabilir olmamalıdır, çünkü birçok sistem programı (aptalca) bütünlüğüne bağlıdır. Herhangi bir kullanıcıya yazılabilir utmp dosyasını bırakırsanız, sistem kayıt dosyalarının sistem dosyalarını ve sistem dosyalarının değişikliklerini riske atarsınız.

Dosya, içerme dosyasında bildirilen aşağıdaki yapıya sahip girişler dizisidir (bu, etrafındaki birkaç tanımdan yalnızca birinin; ayrıntılar, libc sürümüne bağlıdır):

#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 MUHASEBE 9 #define UT_LINESIZE 12 #define UT_NAMESIZE 32 #define UT_HOSTSIZE 256 struct exit_status {kısa int e_terminasyon; / * işlem sonlandırma durumu. * / kısa int e_exit; / * işlem çıkış durumu. * /}; struct utmp {kısa ut_type; / * giriş türü * / pid_t ut_pid; / * giriş işleminin pid * / char ut_line [UT_LINESIZE]; / * tty aygıt adı - "/ dev /" * / char ut_id [4]; / * init kimliği veya kısaltması. ttyname * / char ut_user [UT_NAMESIZE]; / * kullanıcı adı * / char ut_host [UT_HOSTSIZE]; / * uzak giriş için hostname * / struct exit_status ut_exit; / * DEAD_PROCESS olarak işaretlenmiş bir işlemin çıkış durumu. * / uzun ut_session; / * oturum kimliği, pencere için kullanılır * / struct timeval ut_tv; / * zaman girişi yapıldı. * / int32_t ut_addr_v6 [4]; / * Uzak ana bilgisayarın IP adresi. * / char pad [20]; /* Gelecekte kullanılmak üzere rezerve edilmiştir. * /}; / * Geriye dönük uyumluluk kesmeleri. * / #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]

Bu yapı, kullanıcının terminali, kullanıcının oturum açma adı ve oturum açma zamanı ile ilişkili özel dosyanın ismini zaman olarak verir (2). Dize alanları, alanın boyutundan daha kısasa, '\ 0' ile sonlandırılır.

Oluşturulan ilk girdiler init (8) inittab (5) işleminin sonucudur. Bir giriş işlenmeden önce init (8), ut_type öğesinin DEAD_PROCESS olarak ayarlanması, ut_type öğesinin DEAD_PROCESS veya RUN_LVL olmadığı ve PID ut_pid ile herhangi bir işlemin bulunmadığı her bir kayıt için boş bayt ile ut_user , ut_host ve ut_time öğelerini temizleyerek utst'i temizler. Gerekli ut_id ile boş bir kayıt bulunamazsa, init yeni bir tane oluşturur. Ut_id öğesini inittab, ut_pid ve ut_time değerlerinden mevcut değerlere ve ut_type değerini INIT_PROCESS olarak ayarlar .

getty (8) pid tarafından girişi bulur, ut_type öğesini LOGIN_PROCESS olarak değiştirir , ut_time değerini değiştirir , ut_line öğesini ayarlar ve bağlantı kurulmasını bekler. Bir kullanıcının kimliği doğrulandıktan sonra, giriş (8), ut_type değerini USER_PROCESS olarak değiştirir, ut_time değerini değiştirir ve ut_host ve ut_addr'yi ayarlar. Getty (8) ve login (8) 'e bağlı olarak, kayıtlar ut_line tarafından tercih edilen ut_pid yerine yerleştirilebilir .

Init (8) bir işlemin çıktığını bulduğunda , ut_pid tarafından utmp girişini bulur, ut_type öğesini DEAD_PROCESS olarak ayarlar ve ut_user , ut_host ve ut_time öğelerini boş baytlarla temizler.

xterm (1) ve diğer terminal emülatörleri doğrudan bir USER_PROCESS kaydı oluşturur ve / dev / ttyp % c'nin son iki harfini kullanarak veya / dev / pts / % d için p % d kullanarak ut_id öğesini oluşturur . Bu kimlik için bir DEAD_PROCESS bulurlarsa, geri dönüştürürler, aksi takdirde yeni bir giriş oluştururlar. Eğer yapabilirlerse, çıkarken DEAD_PROCESS olarak işaretlerler ve ut_line , ut_time , ut_user ve ut_host öğelerini de sıfırlamaları önerilir .

xdm (8), bir atanmış terminal olmadığı için bir utmp kaydı oluşturmamalıdır. Birinin oluşturmasına izin vermek, 'parmak: stat /dev/machine.dom' gibi hatalarla sonuçlanacaktır. Yine de, wpmp girişleri oluşturmalı, tıpkı ftpd'nin (8) yaptığı gibi.

telnetd (8) LOGIN_PROCESS girişini kurar ve geri kalanını her zamanki gibi (8) girişe bırakır. Telnet oturumu sona erdikten sonra telnetd (8), tarif edilen şekilde utmp'i temizler.

Wtmp dosyası tüm girişleri ve çıkışları kaydeder. Biçimi, tam bir kullanıcı adı, ilgili uçbirimdeki bir oturum kapandığını göstermesi dışında, utmp gibidir. Ayrıca, "kapatma" veya "yeniden başlatma" kullanıcı adıyla "~" terminal adı, bir sistemin kapatıldığını veya yeniden başlatıldığını ve "|" terminal adlarının çiftini gösterir. / "}" , tarih (1) değiştiğinde eski / yeni sistem saatini kaydeder. wtmp giriş (1), init (1) ve getty'nin (1) bazı sürümleri ile korunur. Bu programlardan hiçbiri dosyayı oluşturmaz , bu nedenle kaldırılırsa kayıt tutma kapalıdır.