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 的输出也会相应改变
  • 该命令不接受任何参数,直接执行即可
相关推荐
电商API_180079052478 小时前
京东商品详情API技术文章
大数据·运维·人工智能·网络爬虫
三言老师9 小时前
秘诀-如何远程SSN访问家里的八台电脑(frp 实操方案)
linux·运维·ssh
躺不平的理查德9 小时前
ARCH与交叉编译器的关系
服务器·arm
举手10 小时前
Dispatcher模块剖析
linux·c++
BTU_YC10 小时前
Docker Compose 部署 DozerDB 完整教程
运维·docker·容器
谢慧琼11 小时前
2026零基础做企业网站,低成本搭建官方网站
服务器·前端·javascript
allforgood11 小时前
运行容器
linux
Light_It12 小时前
Linux 内核参数 pci-stub.ids=
linux·kernel
RisunJan13 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
spencer_tseng13 小时前
[kylin & linux] install docker
linux·docker·kylin