UOS运维工程师题库高频考点解析:NFS、Ansible、Docker配置避坑指南
简介这份UOS运维系统运维工程师题库面向备考国产操作系统运维认证、希望系统梳理Linux服务管理知识点的技术人员与在校学生以单选题、多选题和判断题的形式覆盖日常运维高频考点。压缩包内仅含1个doc文档体积约61KB轻量易读适合打印或导入笔记软件随时刷题。题库内容涉及NFS服务器配置、Ansible自动化与模板语法、Apache与httpd站点配置、sshd安全策略、KVM虚拟机管理、DNS与NTP服务、nginx容器挂载、ftp匿名登录、数据库表关系、Linux文件查找及源码包编译工具等模块每道题均附有参考答案便于读者快速定位知识盲区、对照命令与配置文件加深记忆。目前已有2033人学习下载适合作为考前冲刺自测与运维基础查漏补缺的练习材料。1. 从一道 NFS 题说起这份 UOS 运维题库到底能帮你解决什么上周帮一个刚转行的朋友排查面试挂掉的原因他简历上写着“熟悉 Linux 运维”结果面试官问“配置 NFS 服务器服务端主要改哪个文件”他愣了半天答了/etc/rc.d/rc.M。这不是段子是很多运维新人的真实状态——命令敲得飞起一到概念边界就翻车。这份 UOS 运维系统运维工程师题库本质上就是把这些“翻车点”提前暴露给你。它覆盖了 NFS、Ansible、Apache、sshd、KVM、DNS、Docker、数据库、FTP 等十几个运维核心模块题型包括单选、多选和判断适合正在准备 UOS 相关运维岗位面试的人也适合已经上岗但想系统梳理知识盲区的工程师。题库不是万能的但它能帮你把“好像会”变成“确定会”。2. 题库里的高频考点拆解从 NFS 到 Ansible 的配置逻辑2.1 NFS 服务端配置为什么是 /etc/exports 而不是 rc.M题库第一题就考了 NFS 服务端的主要配置文件。正确答案是/etc/exports这个文件定义了哪些目录可以共享给哪些客户端、用什么权限。很多人会把系统启动脚本和配置文件搞混/etc/rc.d/rc.M是启动脚本不是 NFS 的配置入口。实际配置时/etc/exports的每一行格式是共享目录 客户端IP(权限选项)。比如# /etc/exports 示例 /data/share 192.168.1.0/24(rw,sync,no_root_squash)/data/share要共享的目录192.168.1.0/24允许访问的网段rw读写权限sync同步写入数据更安全但性能略低no_root_squash客户端 root 用户保留 root 权限生产环境慎用改完文件后需要执行exportfs -rv让配置生效然后用showmount -e在客户端验证。常见坑是防火墙没放行 2049 端口或者rpcbind服务没启动导致客户端挂载超时。2.2 Ansible 模块与变量自定义模块和 jinja 模板的边界题库里关于 Ansible 的题不少核心考点集中在三点支持自定义模块、基于 SSH 架构、模板文件用 jinja 语法。很多人误以为 Ansible 只能管理 Linux其实它也能管 Windows只是需要走 WinRM 而不是 SSH。在 playbook 里定义变量有两种常见方式vars和vars_prompt。vars是直接写死的变量vars_prompt是运行时交互输入。比如# 使用 vars 定义变量 - hosts: web vars: http_port: 8080 tasks: - name: 配置 Apache 端口 template: src: httpd.conf.j2 dest: /etc/httpd/conf/httpd.confvars静态变量适合固定配置vars_prompt交互式变量适合需要人工输入的敏感信息template模块渲染 jinja2 模板变量用{{ http_port }}引用创建卷组和逻辑卷用lvg和lvol模块不是vg和lv。这个细节在题库里是多选题很多人会选错。实际写 playbook 时lvg负责卷组lvol负责逻辑卷顺序不能反。2.3 Apache 与 sshd配置文件路径和访问控制的易错点Apache 的全局配置文件在不同发行版里路径不一样。题库里出现了/etc/httpd/httpd.conf和/etc/apache2/apache2.conf两个选项正确答案是/etc/apache2/apache2.conf。这其实是 Debian 系和 RedHat 系的区别UOS 基于 Debian所以用apache2.conf。主配置文件是httpd.conf这个说法在 UOS 环境下不准确。sshd 禁止用户远程登录用DenyUsers不是DenyUser。配置写错一个字母服务就起不来。实际改完/etc/ssh/sshd_config后一定要用sshd -t测试语法再systemctl reload sshd。直接 restart 有风险万一配置写错当前连接断了就再也连不上了。# 禁止 tom 和 jerry 登录 DenyUsers tom jerry # 测试配置语法 sshd -t # 重载配置 systemctl reload sshd提示改 sshd 配置前先开一个备用终端保持连接确认新配置能登录后再关闭旧连接。2.4 KVM 与 Docker虚拟化命令的语义差异KVM 虚拟机删除用virsh undefine server01这个命令只删除虚拟机的定义不删除磁盘文件。如果要彻底清理还需要手动删除磁盘镜像。virsh destroy是强制关机不是删除。virsh delect是拼写错误没有这个命令。Docker 挂载目录用-v参数格式是宿主机目录:容器目录。题库里考的是把/var/www挂到/data正确写法是-v /var/www:/data。很多人会写成-v /var/www /data中间少了冒号结果变成两个独立的挂载点容器里根本看不到宿主机的文件。# 正确写法 docker run -d -v /var/www:/data --name web nginx:uos # 错误写法少了冒号 docker run -d -v /var/www /data --name web nginx:uosKVM 的守护进程是libvirtd不是libvirt。libvirt是库和工具集libvirtd才是后台服务。用systemctl status libvirtd可以查看服务状态。3. 端口与协议那些年我们记混的默认端口号3.1 系统默认端口速查与记忆方法题库里反复考端口号因为这是运维的基本功。DNS 是 53SSH 是 22HTTPS 是 443MySQL 是 3306Telnet 是 23 不是 20。20 和 21 是 FTP 的数据端口和控制端口。这些数字死记硬背容易混我一般按协议族分类记邮件类 25/110/143Web 类 80/443远程类 22/23/3389。服务默认端口常见误记SSH2221Telnet2320DNS5322HTTP808080HTTPS4438443MySQL33063307注意题库里有一题问“下列系统默认端口号错误的是”选项里 Telnet 写了 20这是错的。Telnet 是 2320 是 FTP 的数据端口。3.2 DNS 与 NTP网络基础服务的配置要点DNS 端口是 53同时监听 TCP 和 UDP。UDP 用于普通查询TCP 用于区域传送和超过 512 字节的响应。配置 DNS 服务器时/etc/named.conf是主配置区域文件在/var/named/下。常见坑是防火墙只放行了 UDP 53没放 TCP 53导致区域传送失败。NTP 服务器手动添加用add server命令这是在 ntpq 交互模式下的操作。实际配置 NTP 时/etc/ntp.conf里用server指令指定上游服务器比如server ntp.aliyun.com iburst。iburst参数让首次同步更快。同步状态用ntpq -p查看*表示当前同步的源表示备选源。# 查看 NTP 同步状态 ntpq -p # 手动添加 NTP 服务器ntpq 交互模式 ntpq add server ntp.example.com3.3 FTP 匿名登录与 vsftpd 用户限制UOS 里匿名登录 FTP 的用户名是guest不是anonymous也不是ftp。这个和很多 Linux 发行版不一样CentOS 里匿名用户通常是ftp。配置匿名访问时/etc/vsftpd.conf里要设置anonymous_enableYES。限制用户在主目录用chroot_local_userYES但要注意如果用户主目录没有写权限vsftpd 会拒绝登录。解决办法是给主目录去掉写权限或者设置allow_writeable_chrootYES。题库里有一题说“将用户名放在 /etc/vsftpd”是错的正确做法是改配置文件不是把用户名写进某个文件。4. 数据库与安全从聚合函数到证书生成的实操细节4.1 聚合函数与表结构SUM、COUNT、AVG 的使用边界题库考了 SUM 求总和这个简单但实际工作中容易混的是 COUNT 和 SUM 的区别。COUNT 数行数SUM 求和。如果字段是 NULLCOUNT 不计数SUM 忽略 NULL。COUNT(*)数所有行COUNT(字段)只数该字段非 NULL 的行。数据库服务器、数据库、表的关系是一对多再一对多。一个服务器可以管多个数据库一个数据库可以包含多个表。这个层级关系在权限管理时很重要GRANT可以在服务器级、数据库级、表级分别授权。-- 创建表时使用 AUTO_INCREMENT CREATE TABLE employees ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), salary DECIMAL(10,2), PRIMARY KEY (id) ); -- 聚合查询 SELECT COUNT(*) AS total, SUM(salary) AS total_salary, AVG(salary) AS avg_salary FROM employees;注意DELETE FROM employ删除的是表里的数据不是表结构。删表结构用DROP TABLE employ。题库里有一道判断题说“delete from employ 删除整个表包括表结构”这是错的。4.2 OpenSSL 生成私钥和证书命令参数与常见报错生成私钥和证书用openssl不是ssh-keygen。ssh-keygen生成的是 SSH 密钥对用于登录认证不是 SSL 证书。生成自签名证书的典型流程# 生成私钥 openssl genrsa -out server.key 2048 # 生成证书签名请求 openssl req -new -key server.key -out server.csr # 生成自签名证书有效期 365 天 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crtgenrsa生成 RSA 私钥2048 是密钥长度req -new创建证书签名请求x509 -req根据请求生成证书-days 365证书有效期常见报错是unable to load Private Key通常是私钥文件权限不对或者格式不匹配。私钥文件权限建议设为 600只有 root 可读。4.3 find 命令与 httpd 配置按名查找和站点名设置find按文件名查找用-name按大小用-size按类型用-type按属主用-user。实际用的时候-name支持通配符比如find /var/log -name *.log。如果要不区分大小写用-iname。httpd 配置里指定站点名用ServerName不是DocumentRoot。DocumentRoot指定网页文件根目录ServerName指定域名。这两个容易混因为都跟“站点”有关。ServerAdmin是管理员邮箱ServerRoot是 Apache 安装目录。# 按文件名查找日志 find /var/log -name *.log -type f # 查找大于 100M 的文件 find /data -size 100M -type f5. 避坑与排查题库里没写但考试和实战都会遇到的坑5.1 配置文件路径混淆Debian 系和 RedHat 系的差异现象按照题库答案改了/etc/httpd/httpd.conf重启 Apache 报错找不到文件。原因UOS 基于 DebianApache 配置文件在/etc/apache2/下主配置是apache2.conf不是httpd.conf。RedHat 系才用/etc/httpd/。解决先用apachectl -V查看编译时的配置路径或者dpkg -L apache2 | grep conf列出所有配置文件。改配置前先确认发行版。5.2 sshd 配置改错导致无法远程登录现象改了DenyUsers后当前 SSH 会话断开重新连接被拒绝。原因DenyUsers写成了DenyUser或者把当前登录用户也加进了拒绝列表。sshd 配置语法错误时reload 会失败但如果是 restart旧进程被杀新进程起不来就彻底连不上了。解决改配置前先sshd -t测试语法。改完后用另一个终端测试登录确认没问题再关闭旧连接。如果已经锁死只能通过控制台或救援模式恢复。5.3 Docker 挂载目录权限问题现象docker run -v /var/www:/data启动后容器内/data目录为空或者写入报权限错误。原因宿主机目录不存在时Docker 会自动创建但属主是 root。容器内进程如果不是 root就没权限写。另外SELinux 或 AppArmor 可能阻止挂载。解决先确保宿主机目录存在且权限正确chmod 755 /var/www。如果用了 SELinux加:z或:Z标签比如-v /var/www:/data:z。UOS 默认 AppArmor一般不需要额外标签但权限要设对。5.4 NFS 挂载超时或权限拒绝现象客户端mount -t nfs 服务端IP:/data/share /mnt卡住或者提示Permission denied。原因防火墙没放行 2049 端口rpcbind没启动或者/etc/exports里客户端网段写错。权限拒绝通常是no_root_squash没设或者共享目录本身权限不对。解决服务端systemctl status nfs-server rpcbind确认服务运行。firewall-cmd --add-servicenfs --permanent放行。exportfs -rv重新导出。客户端用showmount -e 服务端IP先验证能看到共享列表。5.5 数据库 DELETE 和 DROP 混用导致数据丢失现象想清空表数据执行了DELETE FROM employ发现表还在但数据没了。或者想删表执行了DELETE发现表结构还在。原因DELETE只删数据不删结构。DROP删结构和数据。TRUNCATE清空数据但保留结构速度比DELETE快但不写事务日志不能回滚。解决清空数据用TRUNCATE TABLE employ删表用DROP TABLE employ删库用DROP DATABASE dbname。执行前确认备份DELETE和TRUNCATE都不可逆。6. 把题库变成自己的知识图谱错题归因与命令验证题库刷一遍就忘是因为只记了答案没记逻辑。我自己的做法是每道错题都归因到具体命令或配置文件然后在虚拟机里跑一遍验证。比如端口号记混了就ss -tlnp看当前监听端口grep一下/etc/services确认默认端口。Ansible 模块记不清就ansible-doc -l列出所有模块ansible-doc lvg看具体参数。# 查看当前监听端口 ss -tlnp # 查看 /etc/services 里的端口定义 grep -E ^(ssh|dns|telnet|https) /etc/services # 列出 Ansible 所有模块 ansible-doc -l | grep -E lvg|lvol|template # 查看模块详细参数 ansible-doc lvg验证 NFS 配置时我习惯在服务端exportfs -v看导出列表客户端showmount -e看能挂载什么然后实际mount一次写入文件测试权限。验证 Docker 挂载时docker exec -it web ls -l /data看容器内目录内容docker inspect web | grep -A5 Mounts看挂载详情。验证目标命令预期输出NFS 导出列表exportfs -v显示共享目录和权限NFS 客户端可见showmount -e IP显示可挂载目录Docker 挂载docker inspect webMounts 段显示宿主机路径SSH 端口ss -tlnp | grep sshd显示 22 端口监听Apache 配置apachectl -tSyntax OK从那以后我每次刷题遇到不确定的答案都强制在终端里跑一遍验证不再靠死记硬背。题库是死的命令是活的把每道题还原成一次实际操作知识才真正长在自己身上。希望帮到你。本文还有配套的精品资源点击获取