KodeKloud 第5-8天:SELinux 与 Cron 任务
Source: Dev.to
(请提供您希望翻译的正文内容,我将把它翻译成简体中文,同时保持原有的格式、Markdown 语法和技术术语不变。)
第5天:SELinux 配置 – “等等,这不是 Ubuntu 吗?”
我的自信首次尝试:
sudo apt update
sudo apt install -y selinux-basics
结果:Command not found.
原来我在 CentOS Stream 上,而不是 Ubuntu。包管理器不同,其他一切也不同。
先检查你的操作系统(教训)
cat /etc/os-release
CentOS 使用 dnf,而不是 apt:
sudo dnf install -y selinux-policy selinux-policy-targeted
编辑 SELinux 配置:
sudo vi /etc/selinux/config
# 将 SELINUX=enforcing 改为 SELINUX=disabled
让我感到惊讶的原因: 我做的每个 DevOps 教程都是基于 Ubuntu(AWS、Docker、Kubernetes)。遇到 CentOS 就像去上 JavaScript 课却被发了汇编代码。
教训: 在假设发行版之前,务必先检查 /etc/os-release。包管理器并不是可以互换的。
第 6 天:Cron 任务 – 比想象中更简单
设置一个 cron 任务,每 5 分钟将 “hello” 输出到 /tmp/cron_text。
# Install cron daemon
sudo dnf install -y cronie
sudo systemctl enable --now crond
# Add the job (as root)
sudo su -
echo "*/5 * * * * echo hello > /tmp/cron_text" >> /var/spool/cron/root
# Verify
crontab -l
*/5 * * * * 的 Cron 语法拆解
| 位置 | 含义 |
|---|---|
| 1 (*/5) | 每 5 分钟 |
| 2 (*) | 每小时 |
| 3 (*) | 每月的每一天 |
| 4 (*) | 每月 |
| 5 (*) | 每周的每一天 |
翻译:“在宇宙热寂之前,每 5 分钟运行一次。”
第 7 天:无密码 SSH – 公钥的魔力
在跳板主机上设置无密码 SSH,以连接所有应用服务器。
# 生成 SSH 密钥对
ssh-keygen -t rsa -b 4096
# 复制到服务器(简便方式)
ssh-copy-id tony@stapp01
ssh-copy-id steve@stapp02
ssh-copy-id banner@stapp03
# 测试
ssh tony@stapp01 hostname # 没有密码提示 = 成功
关键权限
| 路径 | 权限 |
|---|---|
~/.ssh/ | 700 (drwx------) |
~/.ssh/authorized_keys | 600 (-rw-------) |
~/.ssh/id_rsa | 600 (-rw-------) |
~/.ssh/id_rsa.pub | 644 (-rw-r--r--) |
权限不正确会导致 SSH 静默地忽略你的密钥。
第 8 天:Ansible 安装 – 版本噩梦
全局安装特定的 Ansible 版本。
# 错误:仅用户安装
python3 -m pip install --user ansible
# 正确:全局安装
sudo python3 -m pip install "ansible==4.8.0"
# 验证
ansible --version
which ansible # 应显示 /usr/local/bin/ansible
区别
--user→ 安装到~/.local/bin(仅当前用户)sudo pip install→ 安装到/usr/local/bin(所有用户)
始终为版本说明符加引号:"ansible==4.8.0";否则 shell 展开可能导致命令出错。
第2周统计
- 尝试的包管理器:2(apt 失败,dnf 成功)
- 创建的 Cron 任务:3(每台服务器一个)
- 生成的 SSH 密钥对:1(4096‑位 RSA)
- Ansible 安装次数:2(先用户后全局)
- “不是 Ubuntu” 的领悟:1(CentOS 的惊喜)
- 在 CentOS 上敲
apt的次数:约 5 次(肌肉记忆很顽固)
关键要点
我现在熟记的命令
cat /etc/os-release # Always check your distro
crontab -l # List cron jobs
ssh user@host hostname # Test passwordless SSH
ansible --version # Verify Ansible installation
教会我的错误
- 在运行命令前一定要检查操作系统。
- SSH 权限必须完全正确。
- 全局安装与用户安装之间的差异很重要。
- 版本管理不是可选项。
接下来
- 第9‑12天:Ansible 剧本(终于使用我安装的东西)
- Docker 基础
- 网络配置
- 更多故障排除(可能)
完整文章: 想获取更详细的完整写作、所有命令以及我在 UI 方面的全部经历,请参阅原帖 👉 阅读完整文章