简介:这份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 是 53,SSH 是 22,HTTPS 是 443,MySQL 是 3306,Telnet 是 23 不是 20。20 和 21 是 FTP 的数据端口和控制端口。这些数字死记硬背容易混,我一般按协议族分类记:邮件类 25/110/143,Web 类 80/443,远程类 22/23/3389。
| 服务 | 默认端口 | 常见误记 |
|---|---|---|
| SSH | 22 | 21 |
| Telnet | 23 | 20 |
| DNS | 53 | 22 |
| HTTP | 80 | 8080 |
| HTTPS | 443 | 8443 |
| MySQL | 3306 | 3307 |
注意:题库里有一题问“下列系统默认端口号错误的是”,选项里 Telnet 写了 20,这是错的。Telnet 是 23,20 是 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_enable=YES。
限制用户在主目录用chroot_local_user=YES,但要注意,如果用户主目录没有写权限,vsftpd 会拒绝登录。解决办法是给主目录去掉写权限,或者设置allow_writeable_chroot=YES。题库里有一题说“将用户名放在 /etc/vsftpd”是错的,正确做法是改配置文件,不是把用户名写进某个文件。
4. 数据库与安全:从聚合函数到证书生成的实操细节
4.1 聚合函数与表结构:SUM、COUNT、AVG 的使用边界
题库考了 SUM 求总和,这个简单,但实际工作中容易混的是 COUNT 和 SUM 的区别。COUNT 数行数,SUM 求和。如果字段是 NULL,COUNT 不计数,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 基于 Debian,Apache 配置文件在/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-service=nfs --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 web | Mounts 段显示宿主机路径 |
| SSH 端口 | ss -tlnp | grep sshd | 显示 22 端口监听 |
| Apache 配置 | apachectl -t | Syntax OK |
从那以后我每次刷题遇到不确定的答案,都强制在终端里跑一遍验证,不再靠死记硬背。题库是死的,命令是活的,把每道题还原成一次实际操作,知识才真正长在自己身上。希望帮到你。
本文还有配套的精品资源,点击获取