Linux

useradd –no-log-initcomprehensionquestionC這米pr和H和ns一世這nq你和s噸一世這ncomprehension question

  • July 30, 2013

TLDR : 如何useradd --no-log-init實際使用

$$ in GNU/Linux [Debian $$? 我將有關此選項的命令maninfo頁面閱讀為: »​​ 使用者將不會在lastlogfaillog文件中列出 ⁄ 輸出«。我知道該PAM模組接管了大部分實際登錄工作。我理解lastlogfaillog命令,並且我知道通過後者,例如可以設置登錄嘗試的次數等。

我也知道錯誤的登錄嘗試記錄在/var/log/utmp. 這加強了我的懷疑PAM,即該命令是在模組接管工作之前的“剩餘” 。

如果您查看useradd.c 原始碼,則此位顯示以下內容。

假設--no-log-init設置了命令行開關,則呼叫faillog_resetlastlog_reset函式:

if ((!lflg) && (getpwuid (user_id) == NULL)) {
                faillog_reset (user_id);
                lastlog_reset (user_id);

何時lastlog_reset呼叫此位將修改lastlog文件:

    fd = open (LASTLOG_FILE, O_RDWR);
    if (   (-1 == fd)
        || (lseek (fd, offset_uid, SEEK_SET) != offset_uid)
        || (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll))
        || (fsync (fd) != 0)
        || (close (fd) != 0)) {

上面顯示了lastlog打開文件以進行讀寫 ( O_RDWR) 後跟一條if確保文件已成功打開的語句,然後在文件中查找某個位置並將write新使用者的資訊添加到文件中。之後文件被關閉。

基於此,我假設該選項控制是否將使用者的 UID 添加到lastlog“數據庫”文件中,僅此而已。

引用自:https://unix.stackexchange.com/questions/84944