< 返回
Linux 新手常见误区与避坑总结
2026-01-30 15:08
作者:技术部
阅读量:1
以下内容收集了大量 Linux 新手(尤其是服务器方向)最容易反复踩的坑,按照“高频程度 + 严重后果”排序。很多坑踩一次就可能导致服务中断、数据丢失、安全漏洞或浪费几天时间调试。
1. 权限相关(后果最严重的前三名)
- 把网站目录 / 数据目录直接 chmod 777 → 最经典的安全雷区,一旦被入侵或误操作,攻击者可直接写入 webshell 或删除数据。 正确做法:目录 755,文件 644,敏感文件 640/600,拥有者一定是服务专用用户(www-data / nginx / mysql 等)
- 用 root 运行所有服务(nginx、php-fpm、redis、nodejs 等) → 一旦程序有漏洞或被注入代码,整个系统沦陷。 正确:服务启动用户永远用专用系统用户 + capabilities(如 cap_net_bind_service)或 systemd 的 User= / DynamicUser=
- 直接 rm -rf /var/log/* 或 /var/log/nginx/* 来清理日志 → 服务可能正在写日志,rm 后文件描述符还在,导致磁盘空间不释放,服务卡死。 正确:> access.log 清空不删文件,或 logrotate + reload
2. rm 命令相关(最容易造成不可逆灾难)
- 没加 -i 或 --interactive 就 rm -rf 重要目录
- 写脚本时 rm -rf $VAR/* 而 $VAR 为空 → 变成 rm -rf /*
- rm -rf /tmp/* 但没确认 /tmp 里有没有重要程序正在用的临时文件
- 没用 trash-cli 或 mv 到回收站目录的习惯
新手强烈建议: alias rm='rm -i' 写到 ~/.bashrc alias rmrf='rm -rfI'(大写 I 提示确认)
3. 配置文件修改相关
- 改完 nginx.conf / my.cnf / sshd_config 后忘记 systemctl reload/restart
- 改了 /etc/resolv.conf 但被 NetworkManager / systemd-resolved 覆盖
- 直接编辑 /etc/apt/sources.list 而不是放 .d/ 目录下(升级时被覆盖)
- 没备份就直接 vim /etc/fstab → 写错导致开机进不了系统
好习惯: cp 文件 文件.bak-$(date +%F) 改完后 systemctl daemon-reload && systemctl restart xxx
4. 磁盘空间与日志管理
- 只看 df -h,看到 / 用了 90% 就慌,却没发现是 /var/log/journal 爆了
- 没配置 journald 的 SystemMaxUse / MaxRetentionSec,导致 /var/log/journal 无限增长
- 手动删 docker 镜像 / 容器 / volume,却没用 docker system prune,导致残留占用
- /boot 分区满了却没及时 autoremove 旧内核
推荐配置(放在 /etc/systemd/journald.conf):
text
[Journal]
SystemMaxUse=2G
MaxRetentionSec=90day
5. 包管理与安装相关
- 混用 apt/yum/dnf 和 snap/flatpak/pip/npm/go install,导致版本冲突、路径混乱
- 看到网上教程 curl | bash 直接跑安装脚本(尤其 root 执行)
- 没装 epel-release / PPA 就各种找不到包
- 用源码编译安装,却没记录安装路径,升级/卸载一片混乱
正确优先级: 官方仓库 > 官方 PPA/COPR/EPEL > 容器镜像 > 语言包管理器(nvm/pyenv/asdf) > 源码编译
6. 网络与防火墙
- 只开 ufw allow 80/443,却忘了 allow OpenSSH → 自己把自己锁在外面
- 改了 sshd_config 禁用密码登录,却没先配置好密钥 → 再也登不进去
- 没理解 iptables/nftables/firewalld 的 zone 和 rich rule,随手 iptables -F 清空规则
- 没区分本地 curl localhost 通,但外网不通,是监听 127.0.0.1 而不是 0.0.0.0
7. 系统启动与救援
- 改 fstab 写错 UUID 或挂载选项 → 开机 emergency mode
- 内核升级后卡在 initramfs,却不会用 lsblk / cat /proc/cmdline / exit 救援
- 没保留旧内核就 autoremove,把当前内核删了
救援口诀:进不了系统 → grub 编辑模式 e → 在 linux 一行末尾加 rd.break=pre-mount → Ctrl+X 启动 → switch_root 前进 rescue shell
8. 其他高频小坑
- 以为 free -h 的 used 接近 100% 就是内存不够(实际要看 available)
- top 看到 CPU 100% 就杀进程,却没看是正常业务高峰
- 用 root 执行 crontab,却写的是普通用户路径
- 没设置时区(timedatectl set-timezone Asia/Shanghai)导致日志时间错乱
- 以为 kill -9 是万能重启方式,导致僵尸进程或数据损坏
新手避坑 10 条铁律(打印出来贴墙上)
- 任何 rm -rf 前先 pwd + ls 确认目录
- 任何服务永远不要用 root 跑
- 改配置文件前必备份(cp xxx xxx.bak-$(date +%F))
- 改完配置必须 reload/restart + 看状态
- 看到 777 就立刻警觉
- 磁盘满了先 journalctl --vacuum + docker prune + apt/dnf clean
- 登不进去先想是否改了 sshd_config / 防火墙 / SELinux
- 内存 used 高不慌,看 available 和 swap
- curl | bash 这种安装方式能避则避
- 遇到问题先 status → journalctl -u -xe → google 错误码
把这些坑提前记住,能帮你省下至少 80% 的调试时间和 90% 的惊魂时刻。
你目前最常踩的是哪一类坑?欢迎留言补充你的血泪史~