总长DRuseradd --no-log-init
: [在 GNU/Linux [Debian] 中实际如何使用?
我读到有关此选项的命令man
和info
页面为:»用户不会列在lastlog
和faillog
文件⁄输出中«。我知道该PAM
模块接管了大部分实际登录工作。我理解lastlog
和faillog
命令,并且我知道通过后者可以设置登录尝试次数等。
我还知道,错误的登录尝试会被记录在 中/var/log/utmp
。这加强了我的怀疑PAM
该命令是模块接管工作之前的“剩余”命令。
答案1
如果你看一下useradd.c 源有一点显示以下内容。
--no-log-init
假设设置了命令行开关,则调用faillog_reset
和lastlog_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
“数据库”文件中,仅此而已。