讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么导出用户列表_Linux如何查看所有系统用户信息【技巧】

老丽吖_6144

老丽吖_6144

发布时间:2026-03-22 16:51:11

|

684人浏览过

|

来源于php中文网

原创

真实用户UID通常≥1000且shell非nologin/false:getent passwd | awk -F: '$3>=1000 && $7!~/nologin|false$/{print $1}'

linux怎么导出用户列表_linux如何查看所有系统用户信息【技巧】

怎么用 getent 看到所有真实用户(不含系统账号)

Linux 里 /etc/passwd 有几百行,但大部分是 daemon、sys、www-data 这类服务账户,真要导出“人用的用户”,得筛 UID 范围。不同发行版默认策略不同:getent passwd 输出全量,但得自己过滤。

实操建议:

  • 普通用户 UID 通常从 1000 开始(Ubuntu/Debian),CentOS/RHEL 是 1000 起,但有些老系统用 500;先查当前策略:grep -E '^UID_MIN' /etc/login.defs
  • 导出真实用户命令:getent passwd | awk -F: '$3 >= 1000 && $3 —— 这里 <code>65534 是避免包含 nobody 类特殊 UID
  • 别只看 /etc/passwd:如果用了 LDAP 或 SSSD,getent 才能拉到网络用户;直接 cat /etc/passwd 会漏

cut 和 awk 提取用户名时字段数容易错

/etc/passwd 是冒号分隔,共 7 字段,但第 5 字段(GECOS)本身可能含逗号,不能靠 cut -d: -f1,5 直接提姓名——这会导致字段错位。用户名永远在第 1 字段,但“全名”或“描述”在第 5 字段,提取逻辑必须分开。

常见错误现象:

  • cut -d: -f1,5 /etc/passwd 在 GECOS 含空格或逗号时,输出变成 alice:John Doe,Admin,,,,后续脚本解析失败
  • 想导出“用户名+全名”,误写成 awk -F: '{print $1, $5}',结果发现某些行第 5 字段为空,对齐混乱

正确做法:

  • 只要用户名:awk -F: '$3 >= 1000 {print $1}' /etc/passwd
  • 要用户名+清理后的全名(去逗号和多余空格):awk -F: '$3 >= 1000 {gsub(/,.*/, "", $5); gsub(/^ +| +$/, "", $5); print $1, $5}' /etc/passwd

导出结果含重复或无效用户怎么办

运行 getent passwd 或解析 /etc/passwd 时,常遇到 nobody、systemd-network、dbus 这类 UID 合法但无登录能力的账号。它们不是“被禁用”,而是压根没设密码、shell 为 /usr/sbin/nologin 或 /bin/false。

判断是否可登录的关键参数是第 7 字段(shell)和第 2 字段(密码字段):

  • 跳过 shell 为 /usr/sbin/nologin、/bin/false、/sbin/nologin 的行:awk -F: '$3 >= 1000 && $7 !~ /(nologin|false)$/ {print $1}'
  • 第 2 字段为 * 或 ! 表示密码被锁,但用户仍可能用 SSH key 登录,不建议仅凭此过滤
  • 注意:某些容器环境或最小化系统会把 root 的 shell 改成 /sbin/nologin,别一刀切排除 root

导出 CSV 或用于脚本时换行/空格处理要小心

用户名本身可能含空格(虽然不推荐),更常见的是 GECOS 第 5 字段带空格甚至换行符(极少见但合法)。直接 echo 或重定向进 CSV,会导致 Excel 打开错行、while read 循环提前中断。

安全做法:

  • 导出纯用户名列表(无空格风险):getent passwd | awk -F: '$3 >= 1000 && $7 !~ /nologin|false$/ {print $1}' | sort -u > users.txt
  • 导出带引号的 CSV(兼容空格):getent passwd | awk -F: '$3 >= 1000 && $7 !~ /nologin|false$/ {gsub(/"/, "\"\"", $5); print "\"" $1 "\",\"" $5 "\""}' —— 这里用了 Excel 风格双引号转义
  • 脚本里读取时,别用 for u in $(cat users.txt),改用 while IFS= read -r u,否则空格会让变量截断

真正麻烦的是跨系统迁移:Ubuntu 默认 UID_MIN=1000,Alpine 是 100,Arch 是 1000 但允许手动创建低 UID 用户。导出前不确认目标系统的策略,生成的清单可能在另一台机器上完全对不上。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2560

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

249

2026.02.03

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

1118

2023.09.04

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

334

2023.09.25

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

3850

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3313

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2433

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

5850

2023.07.05

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn