useradd --no-log-init

useradd --no-log-init

总长DRuseradd --no-log-init: [在 GNU/Linux [Debian] 中实际如何使用?

我读到有关此选项的命令maninfo页面为:»用户不会列在lastlogfaillog文件⁄输出中«。我知道该PAM模块接管了大部分实际登录工作。我理解lastlogfaillog命令,并且我知道通过后者可以设置登录尝试次数等。

我还知道,错误的登录尝试会被记录在 中/var/log/utmp。这加强了我的怀疑PAM该命令是模块接管工作之前的“剩余”命令。

答案1

如果你看一下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“数据库”文件中,仅此而已。

相关内容