Linux 的 logname 命令

Linux 的 logname 命令详解

logname 是 Linux 系统中一个简单但实用的命令,用于显示当前登录用户的用户名。

基本功能

logname 命令会从 /var/run/utmp 文件中读取并显示当前终端会话的登录用户名。它通常返回用户首次登录系统时使用的用户名,即使在会话中切换了用户(如使用 su 命令)也不会改变。

使用示例

  1. 基本用法:

    bash 复制代码
    $ logname
    username
  2. 与其他命令结合使用:

    bash 复制代码
    $ echo "当前登录用户是: $(logname)"
    当前登录用户是: username

技术细节

  • logname 命令会检查 LOGNAME 环境变量,如果存在则返回其值
  • 如果 LOGNAME 环境变量不存在,则从系统记录中获取登录用户名
  • 该命令是 GNU coreutils 包的一部分

与其他命令的区别

  • whoami 的区别:

    • whoami 显示当前有效用户(可能通过 su 切换过)
    • logname 始终显示原始登录用户
  • id -un 的区别:

    • id -un 也显示当前有效用户
    • logname 保持原始登录用户不变

实际应用场景

  1. 在脚本中记录原始登录用户:

    bash 复制代码
    #!/bin/bash
    ORIGINAL_USER=$(logname)
    echo "脚本由 $ORIGINAL_USER 启动"
  2. 系统审计时追踪原始登录会话

  3. 在多用户环境中识别真实用户身份

注意事项

  • 在某些特殊情况下(如通过 sudo 执行),logname 可能无法正常工作
  • 如果 LOGNAME 环境变量被手动修改,logname 的输出也会相应改变
  • 该命令不接受任何参数,直接执行即可
相关推荐
杨云龙UP2 小时前
Oracle 19c:RMAN Duplicate异机复制数据库实操_20260402
linux·运维·服务器·数据库·网络协议·tcp/ip·oracle
海兰2 小时前
【实战】详解本地图书馆MCP服务 —注册到Nacos指南
运维·服务器·dubbo·银行ai
姚永强2 小时前
客户端同步服务器实验
运维·服务器
H_z_q24012 小时前
IP-vlan综合实验
运维·服务器
数据知道2 小时前
claw-code 源码详细分析:子系统目录地图——几十个顶层包如何用五条轴(会话 / 工具 / 扩展 / 入口 / 桥接)读懂?
服务器·python·ai·claude code
zfoo-framework2 小时前
[推荐]ansible在主控机执行实现多个worker机器免密登录
linux·运维·ansible
i建模2 小时前
华为MateBook X Pro 2020款在Ubuntu系统中直接使用原生的杜比全景声效果
linux·ubuntu·华为
IMPYLH2 小时前
Linux 的 ln 命令
linux·运维·服务器·bash
chxii2 小时前
Nginx性能优化-压缩
运维·nginx