10 — 日常运维命令速查
10.1 容器操作
# 容器管理
docker start freeipa-server # 启动容器
docker stop freeipa-server # 停止容器
docker restart freeipa-server # 重启容器
docker logs -f freeipa-server # 查看日志(实时)
docker logs --tail 100 freeipa-server # 查看最近 100 行日志
docker exec -it freeipa-server bash # 进入容器 Shell
# 状态检查
docker ps | grep freeipa # 容器是否运行
docker stats freeipa-server # 资源使用情况
# 容器内 IPA 服务管理
docker exec freeipa-server ipactl status # 查看服务状态
docker exec freeipa-server ipactl start # 启动所有服务
docker exec freeipa-server ipactl stop # 停止所有服务
docker exec freeipa-server ipactl restart # 重启所有服务
10.2 Kerberos 认证
# 获取票据(进入容器后或客户端执行)
echo "PASSWORD" | kinit admin # admin 认证
kinit zhangsan # 普通用户认证(交互输入密码)
klist # 查看当前票据
klist -A # 查看所有票据详情
kdestroy # 销毁当前票据
kinit -R # 续期票据
# 修改密码
kpasswd # 修改自己的 Kerberos 密码
kpasswd zhangsan # 修改他人密码(需 admin 权限)
ipa passwd zhangsan # IPA 方式修改密码
# 密码策略相关
kadmin.local -q "getprinc admin" # 查看 principal 详情(需在 IPA 服务器上)
10.3 用户管理命令速查
# ─── 查找 ───
ipa user-find # 列出所有用户
ipa user-find --last=张 # 按姓查找
ipa user-find --first=三 # 按名查找
ipa user-find zhangsan # 精确查找
ipa user-find --disabled=true # 查找已禁用的用户
ipa user-find --disabled=false # 查找未禁用的用户
# ─── 查看 ───
ipa user-show zhangsan # 用户概要
ipa user-show zhangsan --all # 用户全部属性
ipa user-show zhangsan --raw # 原始 LDAP 属性
# ─── 创建/修改/删除 ───
ipa user-add username --first=名 --last=姓 # 创建用户
ipa user-add username --first=名 --last=姓 --password # 带密码创建
ipa user-mod zhangsan --title="新职务" # 修改用户信息
ipa user-mod zhangsan --password # 修改用户密码
ipa user-del zhangsan # 删除用户
ipa user-del zhangsan --preserve # 删除(保留 home 目录)
# ─── 状态管理 ───
ipa user-enable zhangsan # 启用用户
ipa user-disable zhangsan # 禁用用户
ipa user-unlock zhangsan # 解锁用户
ipa user-status zhangsan # 查看用户状态
# ─── 高级 ───
ipa user-mod zhangsan --sshpubkey="ssh-rsa AAAA..." # 添加 SSH 公钥
ipa user-mod zhangsan --setattr=krbPasswordExpiration="20261231000000Z" # 设置密码过期
10.4 用户组管理命令速查
# ─── 查找/查看 ───
ipa group-find # 列出所有组
ipa group-show developers # 查看组详情
ipa group-show developers --all # 全部属性
# ─── 创建/删除 ───
ipa group-add groupname --desc="描述" # 创建组
ipa group-del groupname # 删除组
# ─── 成员管理 ───
ipa group-add-member developers --users=zhangsan # 添加用户到组
ipa group-add-member developers --users={u1,u2} # 批量添加用户
ipa group-add-member developers --groups=ops # 添加子组
ipa group-remove-member developers --users=zhangsan # 移除用户
# ─── 成员查询 ───
ipa group-show developers # 查看组成员
ipa user-show zhangsan | grep "Member of" # 查看用户属于哪些组
10.5 主机管理命令速查
# ─── 查找/查看 ───
ipa host-find # 列出所有主机
ipa host-find --managing=ipa-local.thinkmeta.site # 查找某服务器管理的主机
ipa host-show dev.thinkmeta.site # 主机详情
ipa host-show dev.thinkmeta.site --all # 全部属性
# ─── 状态管理 ───
ipa host-disable dev.thinkmeta.site # 禁用主机
ipa host-enable dev.thinkmeta.site # 启用主机
ipa host-del dev.thinkmeta.site # 删除主机
# ─── 主机组 ───
ipa hostgroup-find # 列出所有主机组
ipa hostgroup-add dev-servers --desc="开发服务器" # 创建主机组
ipa hostgroup-add-member dev-servers --hosts=dev.thinkmeta.site # 添加主机
ipa hostgroup-remove-member dev-servers --hosts=dev.thinkmeta.site # 移除主机
10.6 HBAC 规则命令速查
# ─── 查找/查看 ───
ipa hbacrule-find # 列出所有 HBAC 规则
ipa hbacrule-show dev-access # 查看规则详情
# ─── 创建/删除 ───
ipa hbacrule-add rule-name --desc="描述" # 创建规则
ipa hbacrule-del rule-name # 删除规则
# ─── 规则配置 ───
ipa hbacrule-add-user rule-name --users=zhangsan # 添加用户
ipa hbacrule-add-user rule-name --groups=dev # 添加用户组
ipa hbacrule-add-host rule-name --hosts=hostname # 添加主机
ipa hbacrule-add-host rule-name --hostgroups=hg # 添加主机组
ipa hbacrule-add-service rule-name --hbacsvcs=sshd # 添加服务
# ─── 启用/禁用 ───
ipa hbacrule-enable rule-name # 启用规则
ipa hbacrule-disable rule-name # 禁用规则
# ─── 测试 ───
ipa hbactest --user=zhangsan --host=dev.thinkmeta.site --service=sshd
10.7 Sudo 规则命令速查
# ─── 查找/查看 ───
ipa sudorule-find # 列出所有 sudo 规则
ipa sudorule-show rule-name # 查看规则详情
# ─── 创建/删除 ───
ipa sudorule-add rule-name --desc="描述" # 创建规则
ipa sudorule-del rule-name # 删除规则
# ─── 规则配置 ───
ipa sudorule-add-allow-command rule --sudocmds=ALL # 允许所有命令
ipa sudorule-add-allow-command rule --sudocmds="/usr/bin/apt" # 允许特定命令
ipa sudorule-add-user rule --users=zhangsan # 关联用户
ipa sudorule-add-user rule --groups=ops # 关联用户组
ipa sudorule-add-host rule --hosts=hostname # 关联主机
ipa sudorule-add-host rule --hostcat=all # 关联所有主机
ipa sudorule-add-option rule --sudooption='!authenticate' # 免密码
# ─── 命令管理 ───
ipa sudocmd-find # 列出所有命令
ipa sudocmd-add "/usr/bin/systemctl restart *" # 添加命令
10.8 DNS 管理命令速查
# ─── DNS 区域管理 ───
ipa dnszone-find # 列出所有 DNS 区域
ipa dnszone-show thinkmeta.site # 查看区域详情
ipa dnszone-add newzone.local # 添加新区域
# ─── DNS 记录管理 ───
ipa dnsrecord-find thinkmeta.site # 列出区域所有记录
ipa dnsrecord-show thinkmeta.site ipa-local # 查看特定记录
# ─── 添加 A 记录 ───
ipa dnsrecord-add thinkmeta.site new-host --a-rec=192.168.3.105
# ─── 添加 CNAME ───
ipa dnsrecord-add thinkmeta.site www --cname-rec=ipa-local
# ─── 删除记录 ───
ipa dnsrecord-del thinkmeta.site new-host --del-all
10.9 证书管理命令速查
# ─── 查看证书 ───
ipa cert-find # 列出所有证书
ipa cert-find --hostname=dev.thinkmeta.site # 按主机查证书
ipa cert-show 1 # 查看特定证书
# ─── 撤销证书 ───
ipa cert-revoke 0x0012 --revocation-reason=6 # 撤销证书
# ─── CA 管理 ───
ipa ca-find # 列出 CA
ipa ca-show ipa # 查看 IPA CA
# ─── 客户端证书管理 ───
getcert list # 查看本机追踪的证书
getcert resubmit -i <id> # 手动续期证书
# ─── 服务证书签发 ───
ipa service-add HTTP/wiki.thinkmeta.site # 创建服务主体
ipa-getcert request -f cert.pem -k key.pem -N CN=wiki.thinkmeta.site -K HTTP/wiki.thinkmeta.site
10.10 客户端管理命令速查
# ─── SSSD 管理 ───
sudo systemctl status sssd # 查看 SSSD 状态
sudo systemctl restart sssd # 重启 SSSD
sudo sss_cache -E # 清空 SSSD 缓存(全清)
sudo sss_cache -u zhangsan # 清空特定用户缓存
sudo sss_cache -g developers # 清空特定组缓存
# ─── 用户查询 ───
id zhangsan # 查看用户 UID/GID
getent passwd zhangsan # 查看用户条目
getent group developers # 查看组条目
# ─── 客户端订阅/注销 ───
sudo ipa-client-install --uninstall # 从域中移除
sudo ipa-client-install --domain=... --server=... --realm=... --mkhomedir # 重新注册
# ─── 查看客户端 keytab ───
sudo klist -k /etc/krb5.keytab # 查看 keytab 条目
sudo ipa-getkeytab -s ipa-local.thinkmeta.site -p host/dev.thinkmeta.site -k /tmp/host.keytab # 获取 keytab
10.11 故障排查速查
# ─── 服务状态 ───
docker exec freeipa-server ipactl status # IPA 服务状态
docker exec freeipa-server systemctl status dirsrv@THINKMETA-SITE # LDAP 状态
docker exec freeipa-server systemctl status krb5kdc # Kerberos 状态
# ─── 日志查看 ───
docker logs --tail 200 freeipa-server 2>&1 | grep ERROR
docker exec freeipa-server tail -f /var/log/dirsrv/slapd-THINKMETA-SITE/errors
docker exec freeipa-server tail -f /var/log/krb5kdc.log
docker exec freeipa-server journalctl -u certmonger -f
# ─── DNS 诊断 ───
dig @192.168.3.90 _ldap._tcp.thinkmeta.site SRV # 测试 SRV 记录
dig @192.168.3.90 ipa-local.thinkmeta.site # 测试正向解析
dig @192.168.3.90 -x 192.168.3.90 # 测试反向解析
# ─── Kerberos 诊断 ───
klist -A # 查看票据详情
kvno host/dev.thinkmeta.site # 验证服务票据
# ─── 客户端诊断 ───
sudo journalctl -u sssd -n 100 # SSSD 最近日志
sudo sssctl domain-status thinkmeta.site # 域状态
realm list # 查看域信息
10.12 常用运维脚本模板
每日巡检脚本
#!/bin/bash
# daily-check.sh — 每日巡检
echo "=== FreeIPA 每日巡检 - $(date) ==="
echo ""
# 1. 容器状态
if docker ps | grep -q freeipa-server; then
echo "✓ 容器运行中"
else
echo "✗ 容器未运行!"
fi
# 2. IPA 服务
SERVICES=$(docker exec freeipa-server ipactl status 2>/dev/null | grep -c "RUNNING")
if [ "$SERVICES" -ge 5 ]; then
echo "✓ IPA 核心服务正常"
else
echo "✗ IPA 服务异常 ($SERVICES 个运行中)"
fi
# 3. Kerberos
if docker exec freeipa-server bash -c "echo 'YourAdminPassword' | kinit admin" 2>/dev/null; then
echo "✓ Kerberos 认证正常"
else
echo "✗ Kerberos 认证失败"
fi
# 4. 磁盘空间
DISK_USAGE=$(df -h /data/docker-space/ | tail -1 | awk '{print $5}' | tr -d '%')
echo " 数据目录磁盘使用: ${DISK_USAGE}%"
# 5. 即将过期证书
EXPIRING=$(docker exec freeipa-server ipa cert-find --validnotafter-to="$(date -u -d '+30 days' +%Y-%m-%d)" 2>/dev/null | grep "Serial number" | wc -l)
echo " 30天内过期证书: $EXPIRING 张"
echo ""
echo "=== 巡检结束 ==="
批量用户创建模板
#!/bin/bash
# bulk-user-create.sh
# CSV 格式:username,firstname,lastname,password,department
while IFS=',' read -r username first last password dept; do
[[ "$username" =~ ^#.* ]] && continue # 跳过注释行
[[ -z "$username" ]] && continue # 跳过空行
echo "创建: $username ($last$first)"
ipa user-add "$username" \
--first="$first" \
--last="$last" \
--password="$password"
ipa group-add-member "$dept" --users="$username" 2>/dev/null
done < users.csv
批量密码重置
#!/bin/bash
# bulk-password-reset.sh
USERS=("zhangsan" "lisi" "wangwu")
NEW_PASSWORD="TempPass123"
for user in "${USERS[@]}"; do
echo "重置密码: $user"
echo -e "${NEW_PASSWORD}\n${NEW_PASSWORD}" | ipa passwd "$user"
# 强制下次登录修改密码
ipa user-mod "$user" --setattr=krbPasswordExpiration="$(date -u +%Y%m%d%H%M%SZ -d '+1 day')"
done
10.13 快速参考卡片
┌─────────────────────────────────────────────────────────┐
│ FreeIPA 运维速查卡 │
├─────────────────────────────────────────────────────────┤
│ Web UI: https://192.168.3.90 │
│ 域名: thinkmeta.site │
│ Realm: THINKMETA.SITE │
│ 容器名: freeipa-server │
│ 数据目录: /data/docker-space/ipa-data │
├─────────────────────────────────────────────────────────┤
│ 进入容器: docker exec -it freeipa-server bash │
│ 获取票据: echo "PWD" | kinit admin │
│ 查看票据: klist │
│ 查看服务: ipactl status │
│ 重启服务: ipactl restart │
│ 查看用户: ipa user-find │
│ 创建用户: ipa user-add name --first=X --last=X │
│ 禁用用户: ipa user-disable name │
│ 查看所有主机: ipa host-find │
│ 查看 HBAC 规则: ipa hbacrule-find │
│ 查看 Sudo 规则: ipa sudorule-find │
│ 测试 HBAC: ipa hbactest --user=... --host=... │
│ 查看日志: docker logs -f freeipa-server │
│ 查看容器状态: docker ps | grep freeipa │
└─────────────────────────────────────────────────────────┘