1. 云计算时代的Linux基本功:为什么命令行的手感决定你的天花板
接手云上业务这五六年,我最大的感受是:云平台的控制台和可视化面板确实越来越强,但真正决定一个运维或者后端工程师能走多远的,依然是Linux命令行的基本功。很多人在本地虚拟机里敲命令敲得飞起,一上云就露馅——安全组不会配、镜像不会选、磁盘不会挂载、日志不会排查,最后只能对着工单系统干瞪眼。
这篇笔记是我在实际云环境部署、迁移、排障过程中沉淀下来的实操记录,涵盖Linux常用命令、用户权限管理、文件处理、Docker容器化、网络性能诊断以及面试高频考点。所有内容都是我在真实环境里一步步试出来的,不是教科书式罗列,而是带着场景的实战复盘。无论是刚入行的运维新人,还是想把Linux功底夯实的后端开发,都可以对照这篇笔记在自己的云主机上过一遍。
先回答一个问题:为什么云环境里的Linux操作和本地不一样?核心差异有两点。第一,云主机的网络、存储、安全都是“软件定义”的,很多底层操作会通过云API间接影响系统行为,比如安全组规则和iptables的关系、云盘快照和LVM快照的区别。第二,云主机通常一开机就是最小化安装,没有桌面环境,没有图形工具,一切操作都靠Shell,这反而逼着你把命令行的底子打牢。所以,下面这些内容不是零散的知识点,而是一条完整的“从裸机到可用”的实操链路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 云主机初始化:从裸机到可用的最短路径
2.1 新建用户与权限分配:别一上来就用root裸奔
拿到一台新云主机,第一件事不是急着装环境,而是建一个日常使用的普通用户。很多人图省事全程用root,出事的时候连操作审计都做不了。我的习惯是三步走:创建用户、设置密码、加入sudo组。
bash复制# 创建用户并指定家目录和Shell
useradd -m -d /home/deploy -s /bin/bash deploy
# 设置密码
passwd deploy
# 加入sudo组(CentOS系为wheel,Ubuntu系为sudo)
usermod -aG wheel deploy
# 验证切换
su - deploy
sudo whoami
这里有个细节容易被忽略:useradd和adduser在CentOS和Ubuntu上的行为不一样。CentOS的useradd默认不创建家目录,需要加-m参数;Ubuntu的adduser是交互式脚本,会自动创建家目录并设置密码。我建议在脚本化部署时统一用useradd加显式参数,避免不同发行版带来的差异。
权限分配这块,很多人只知道加sudo组,但sudo的权限粒度其实可以很细。比如我只想让某个用户能重启nginx,不想给他整个root权限,就在/etc/sudoers.d/下单独建文件:
bash复制# /etc/sudoers.d/nginx
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
这样既能满足日常运维需求,又不会把整个系统的钥匙交出去。云环境里多租户隔离本来就是安全基石,本地操作习惯如果不同步升级,迟早要吃大亏。
2.2 SSH安全加固:云上主机的第一道防线
云主机的SSH端口默认22,从创建那一刻起就会被全网扫描器盯上。我每次开新机器都会按这个顺序加固,实测能挡掉99%的暴力破解。
第一步改端口。修改/etc/ssh/sshd_config,把Port 22改成一个高位端口,比如Port 62222。注意提前把新端口加入云平台的安全组规则,不然改完端口直接连不上。
第二步禁用密码登录、启用密钥对。这个在云平台创建机器时最好就配好密钥,后面再补也可以:
bash复制ssh-keygen -t ed25519 -C "deploy@cloud"
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 62222 deploy@<服务器IP>
然后修改sshd_config:
plaintext复制PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers deploy
第三步是fail2ban兜底。即使禁了密码登录,SSH服务本身的日志还是会刷屏,配置fail2ban可以自动封禁扫描IP,减少无意义的日志压力。我在生产环境用这个组合跑了两年,登录日志基本都是干净的。
2.3 系统更新与最小化安装原则
云主机初始
