
好吧,让我们以一种真正有意义的方式分解 Linux 用户管理、身份验证和日志记录,特别是如果您同时使用过 Windows 和 Linux 系统。
🔑 1. Linux 与 Windows 中的唯一标识符
首先,我们来谈谈如何识别用户:
- Windows使用SID(安全标识符) ——像 S-1-5-21-... 这样的长字符串来唯一地标识用户。
- 另一方面,Linux对用户使用UID(用户 ID) ,对组使用GID(组 ID) 。
👉快速提示:
- 普通用户账户从 UID 1000开始及以上。
- 低于 1000 的任何值通常都是系统或服务帐户(如守护进程、系统日志等)。
📂 2. Linux 中的用户信息存储在哪里?
🧾 /etc/passwd
该文件保存基本用户信息:用户名、UID、GID、主目录和shell(如/bin/bash或/usr/sbin/nologin)。
cat /etc/passwd
您会看到如下条目:
akash:x:1001 :1001 :Akash,,,:/ home / akash :/ bin / bash

🔐 /etc/shadow
实际的(经过哈希处理的)密码存储在这里,而不是 /etc/passwd 中。出于某种原因,它仅限 root 用户使用。
sudo cat /etc/shadow猫/etc/shadow
您会注意到散列密码看起来像这样:
akash:$6$randomsalt$verylonghashedpassword:19428:0:99999:7:::$6 $randomsalt $verylonghashedpassword : 19428 : 0 : 99999 : 7 :::

- 该 表示它是使用SHA-512进行散列的。
- Linux 中其他常见的密码哈希算法:MD5、Blowfish、SHA-256和SHA-512。
- 所有这些都使用加盐和多轮哈希来增加安全性。
👥 3. 在 Linux 中管理用户(您实际会使用的命令)
以下是最常用的命令:

所有这些都与 Linux 如何处理访问和会话有关。
🛡️ 4. Linux 如何处理身份验证(感谢 PAM)
PAM代表可插入式身份验证模块- 它是 Linux 检查您的凭据背后的大脑。
🗂️ PAM 配置文件在哪里?
- /etc/pam.d/:各个服务(如 sshd、login、sudo 等)的 PAM 配置文件的主目录
- /etc/security/access.conf:您可以使用它根据 IP、组等允许或拒绝用户。

例子:
-:akash:除 192.168.1.100 外全部:akash :除 192.168 . 1.100外全部
这意味着 Akash 只能从 IP 192.168.1.100 登录。
🧩 PAM 模块位置
这些是执行繁重工作的 .so 文件(共享对象库)。
- 基于 RHEL 的发行版:/usr/lib64/security/
- 基于 Debian 的发行版:/usr/lib/x86_64-linux-gnu/security/

可以将它们视为 Linux 版本的 Windows DLL,但用于身份验证逻辑。
🔄 PAM 身份验证的工作原理(分步说明)
- 用户输入凭证(用户名+密码)。
- 系统从 /etc/pam.d/* 加载 PAM 配置。
- 相关模块从 /usr/lib/...调用。
- 密码与 /etc/shadow 中的哈希值进行比较。
- 如果有效,会话就开始。
- 身份验证日志通常写入 /var/log/auth.log 或 /var/log/secure。
- 访问被允许或被拒绝。
简单但功能强大。
— — — — — — — — — — — — — — — — — — — — — — — —
📜 5. 日志记录 - 查看位置
🗂️ Linux 在哪里记录身份验证内容?
Linux 将日志保存在 /var/log/ 目录下 — — 这是您可以找到各种系统和用户相关日志的中心位置。
1. /var/log/auth.log(Debian/Ubuntu 系统)
这是您调查时要使用的文件:
- 通过终端、SSH 或 sudo 登录
- 会话开始/停止
- 身份验证失败和成功

使用 tail -f /var/log/auth.log 监控实时登录。对于较旧的压缩日志,请使用:zcat /var/log/auth.log.1.gz。

另外,有趣的是:cron 作业日志也在这里,因为 cron 必须在运行计划任务之前对用户进行身份验证。

2. /var/log/secure (Red Hat/CentOS/Fedora系统)
用途与 auth.log 相同,但没有 cron 日志。
因此,如果您正在 RHEL 或 CentOS 上追查暴力破解尝试或失败的 SSH 登录,那么这里就是您的最佳选择。
3. /var/log/failog
这个专门记录失败的登录尝试,但这里有一个转折:
- 在 Ubuntu/Debian 上,它就在那里,但前提是你配置了 pam_faillock。
- 在基于 RHEL 的系统上,它通常默认不启用。

使用 faillog -a 检查所有失败的尝试。

4. /var/log/lastlog
想知道用户上次登录的时间吗?这个文件可以帮你搞定。

运行 lastlog -u akash 检查用户 akash 的最后登录时间。
非常适合检查休眠账户或进行基本审计。
5. /var/log/btmp
该文件跟踪失败的登录尝试,但它是二进制格式 - 因此不要尝试像文本文件那样对其进行 cat 处理。
使用 lastb 或者 lastb -f /var/log/btmp 可以干净地查看它。
6. /var/log/wtmp
它记录所有登录/注销事件、系统重启和关机。
最后运行来读取它。或者从死机系统中获取取证转储:
最后-f /mnt/disk/var/log/wtmp
7./运行/utmp
该文件更加“活跃”。它跟踪当前登录的用户。
使用 who 或 w 查看谁现在在线。
🔍 日志保存多长时间?
Linux 通常默认保存4 周的日志,每周轮换一次。较旧的日志会被压缩(您将看到 .gz 文件)。因此,为了更深入地了解日志:
- 使用 zcat 或 zless 查看存档日志
- 在原始取证场景中使用字符串、hexdump 或十六进制编辑器读取二进制日志(如 btmp、wtmp 或 utmp)
🧪 快速命令回顾

🧠 补充:Syslog 和内核日志在 Linux 中的工作原理
让我们来谈谈Syslog — Linux 日志的支柱。
Syslog 不是一个文件——它是系统进程用来将日志消息发送到日志服务器(或本地文件)的标准协议。它被广泛用于从 SSH 到 cron 等各种服务,并根据以下方式对日志进行分类:
- 设施(如身份验证、内核、守护进程)
- 严重性(信息、警告、错误、严重)
常见的 Syslog 实现:
- rsyslog(目前最常见)
- 系统日志生成器
- journald(与 systemd 一起使用)
🗂️ 关键系统日志文件
1. /var/log/syslog (Ubuntu/Debian)
这就像一个包罗万象的系统日志。你会发现:
- 内核消息
- 应用程序级日志
- Cron日志
- 硬件问题

当您不确定到底出了什么问题但又想了解所有事情的时间表时,它非常有用。
使用 tail -f /var/log/syslog 或 grep 通过它来查找事件。

2. /var/log/messages (RHEL/CentOS/Fedora)
可以将其视为Fedora 风格的 syslog。
它记录类似的数据——服务、内核消息、应用程序错误——但它是这些发行版的默认日志文件。
想要进入专业模式吗?
您甚至可以使用 rsyslog 或 syslog-ng 将日志转发到中央日志服务器。非常适合 SIEM 集成或企业设置。
🚨提示:查看二进制日志
wtmp、btmp 和 utmp 等文件不是纯文本,所以不要指望用 cat 命令读取它们。要么使用正确的命令(last、lastb、who 等),要么在完全取证模式下用十六进制编辑器打开它们。
— — — — — — — — — — — — — — — — — — — — — — — —
让我们来讨论一下非常重要但经常被忽视的东西——Linux 中的内核日志。
这些日志在诊断系统级问题(例如驱动程序问题、启动错误或硬件故障)时,简直是金矿。但是,如果您和大多数人一样,内核日志记录可能会让您感到有些混乱,因为不同发行版涉及的工具和文件路径种类繁多。所以,让我们用通俗易懂的语言来解释一下。
🧠 首先要说的是 — dmesg 是干什么的?
当你想查看Linux 内核的运行情况时,dmesg 命令是你的首选工具——尤其是在启动之后。它显示以下内容:
- 硬件检测
- 驱动程序加载
- 设备初始化(如 USB、磁盘、网络接口)
- 启动时错误
基本上,如果您的操作系统核心出现问题,您就会在这里看到第一个危险信号。

🔧 如何使用它?
只需打开一个终端并运行:
消息

你会看到一大段文字。你可以用管道将其传递给 less 或 grep 以便于查看:
dmesg | grep -i 错误错误
现在问题来了:这个输出来自内核环形缓冲区——它位于内存中。这意味着一旦系统重启,噗——除非你保存了它,否则它就没了。
📁 但是等一下——这些东西保存在哪里?
在某些发行版中,它实际上_已被_保存!
🗂️ /var/log/dmesg(仅在某些系统上)
此文件会捕获上次启动时 dmesg 的输出并永久保存。您只需运行以下命令即可:
减少/var/log/dmesg

但不要指望它在所有系统上都可用。例如:
- **Debian/Ubuntu:**您很可能会找到它。
- **Fedora/RHEL/Rocky:**不是。他们用的是 journald(稍后详细介绍)。
📚 输入 /var/log/kern.log — 坚持不懈的英雄
现在这个很有趣。
kern.log文件__包含所有内核消息 — 就像 dmesg 一样 — 但即使在重新启动后它仍然存在。

这意味着如果您的系统在更新或安装新硬件后开始出现异常,您可以回去检查一周前内核在做什么。
像这样查看:
减少/var/log/kern.log日志/kern.日志
🕒 奖励:时间戳
与显示正常运行时间秒数(如 [ 3.421546])的原始 dmesg 输出不同,kern.log 中的消息带有真正的人类可读的时间戳,从而更容易与用户事件匹配。

🧰 Fedora、RHEL、Rocky Linux 怎么样?
好了,现在我们来谈谈Fedora 风格的发行版。它们已经放弃了传统的日志文件,现在严重依赖systemd 的 journald 服务。
那么像 /var/log/kern.log 或 /var/log/dmesg 这样的文件呢?你在这里找不到它们。
相反,所有内容都记录在系统日志中。
✅ 如何查看内核日志?
journalctl-k
这样就只显示日志里的内核日志了。超级简洁,超级简单。
您还可以使用如下过滤器:
journalctl -k --since “2天前”“2天前”
— — — — — — — — — — — — — — — — — — — — — — — —
💾 持久日志与非持久日志(这很关键!)
基于 Systemd 的发行版可以将日志存储在内存(易失性)或磁盘(持久性)中。日志是否在重启后保留取决于 journald 的设置方式。
- 如果日志存储在 /var/log/journal 中,则它们是持久的。
- 如果没有,并且仅在 /run/log/journal 中,则它们在重启后就会消失。
因此,如果您正在对死箱进行取证,您最好希望 /var/log/journal 存在。
— — — — — — — — — — — — — — — — — — — — — — — —
💀 Deadbox 日志搜寻技巧
如果您正在处理一个死机系统并试图深入了解死机前发生的情况:
- 使用实时 CD 或取证操作系统安装磁盘。
- 如果存在,请导航至 /var/log/journal/。
- 使用 journalctl --directory=/mount/path/var/log/journal 查看日志。
如果什么都没有呢?
除非您有其他工件(如 /var/crash/、旧 syslog 导出或甚至交换内存)进行分析,否则您就有点不走运了。
— — — — — — — — — — — — — — — — — — — — — — — —
🔚 最后的想法
无论您是在实时系统上、进行取证工作,还是尝试修复行为异常的服务器,都请不要忘记:
日志不会说谎——你只需要知道它们藏在哪里。