Linux怎么关闭所有非必要的系统默认账号如lp、news、games

云伟君_1537

云伟君_1537

2026-10-30

578人浏览

原创

非必要账号指UID在1–999且shell为/bin/bash或/bin/sh的系统账号,如lp、news、games等;sync、shutdown等虽不提供登录但shell若为/bin/bash仍有风险;adm、daemon等可能被服务依赖,root及现代服务账号不可删。

linux怎么关闭所有非必要的系统默认账号如lp、news、games

哪些账号算“非必要”?先看 UID 和用途

系统默认账号是否可关,不能只看名字。关键看两点:UID 是否在 1–999 范围(RHEL/CentOS/Debian 默认规则),以及当前 shell 是否为 /sbin/nologin 或 /usr/sbin/nologin。像 lp、news、games、uucp、operator 这类账号,多数已无服务依赖,且 shell 常为 /bin/bash 或 /bin/sh——这就构成风险。

  • sync、shutdown、halt 是内核级命令调用账号,不提供登录入口,但 shell 若为 /bin/bash,仍可能被 su 或 ssh 利用
  • adm、daemon、mail 在部分发行版中仍被日志或邮件服务引用,直接删可能中断 rsyslog 或 postfix
  • root(UID=0)、sshd、systemd-network、polkitd 等现代服务账号,shell 通常已是 /usr/sbin/nologin,不要动

推荐先跑这行命令定位目标:

lp:/bin/bash
  • 单个操作:sudo usermod -s /sbin/nologin lp
  • 批量操作(谨慎!建议先加 echo 预览):awk -F':' '$1 ~ /^(lp|news|games|uucp|operator)$/ && $7 !~ /nologin|false$/ {print "sudo usermod -s /sbin/nologin " $1}' /etc/passwd | sh
  • 注意跳过 root、sshd、systemd-network:加条件 $1 !~ /^(root|sshd|systemd-network)$/

改完必须确认 /etc/shells 包含该路径:

grep nologin /etc/shells

如果没输出,补上:echo "/sbin/nologin" | sudo tee -a /etc/shells

验证是否真生效:三件事缺一不可

改完 /etc/passwd 不代表完事。必须实测:

  • 查文件:grep ^lp: /etc/passwd → 第七列应为 /sbin/nologin
  • 测试登录:su - lp 或 ssh lp@localhost → 应立即退出,并显示 This account is currently not available.
  • 验证服务:sudo systemctl restart rsyslog cron cups(按你实际启用的服务选)→ 查 journalctl -u rsyslog -n 20,确认无 “User lp does not exist” 类报错

特别注意:sync 和 shutdown 账号即使 shell 改了,sudo reboot 仍正常;但若你手动写脚本用 su -c '...' sync,就得同步检查脚本逻辑。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

为什么别急着 userdel?组依赖和残留家目录是坑

userdel -r lp 看似干净,但容易踩三个坑:

  • lp 组可能还被 CUPS 的配置文件(如 /etc/cups/cups-files.conf)引用,删组后权限校验失败
  • games 账号的家目录(/usr/games)常被某些 legacy 二进制依赖,删目录可能让 fortune 或 bsdgames 报错
  • news 账号若曾运行过 inn,其 spool 目录(/var/spool/news)可能被 rsyslog 的 imfile 模块监控,删账号不删目录会导致日志轮转异常

真正需要删的,只有你明确确认过以下四点的账号:

  • systemctl list-dependencies --reverse --type=service lp.target(或对应账号名)返回空
  • grep -r lp /etc/systemd/ /usr/lib/systemd/ 2>/dev/null 无结果
  • crontab -u lp -l 2>/dev/null 和 sudo -u lp ls /var/spool/cron/crontabs/ 2>/dev/null 均失败
  • getent group lp 返回空,且 grep :lp: /etc/group 仅剩组定义行(无成员)

复杂点在于:很多“默认账号”不是孤立存在,而是嵌套在 systemd、PAM、auditd 的策略链里。改 shell 是最小侵入动作,删账号是最后一步——而且往往根本不需要删。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

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

2023.06.21

4310

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3633

10

linux find
linux find

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

2023.06.30

2873

5

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

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

2023.07.05

7070

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6702

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3853

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3345

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3579

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习