KodeKloud 第5-8天:SELinux 与 Cron 任务

发布: (2025年12月24日 GMT+8 03:00)
5 分钟阅读
原文: Dev.to

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_keys600 (-rw-------)
~/.ssh/id_rsa600 (-rw-------)
~/.ssh/id_rsa.pub644 (-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 方面的全部经历,请参阅原帖 👉 阅读完整文章

Back to Blog

相关文章

阅读更多 »