< 返回

    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 条铁律(打印出来贴墙上)

    1. 任何 rm -rf 前先 pwd + ls 确认目录
    2. 任何服务永远不要用 root 跑
    3. 改配置文件前必备份(cp xxx xxx.bak-$(date +%F))
    4. 改完配置必须 reload/restart + 看状态
    5. 看到 777 就立刻警觉
    6. 磁盘满了先 journalctl --vacuum + docker prune + apt/dnf clean
    7. 登不进去先想是否改了 sshd_config / 防火墙 / SELinux
    8. 内存 used 高不慌,看 available 和 swap
    9. curl | bash 这种安装方式能避则避
    10. 遇到问题先 status → journalctl -u -xe → google 错误码

    把这些坑提前记住,能帮你省下至少 80% 的调试时间和 90% 的惊魂时刻。

     

    你目前最常踩的是哪一类坑?欢迎留言补充你的血泪史~

    联系我们
    返回顶部