直击面试现场——Linux运维面试——犀利24问
系统管理员这个职业它需要一个了解系统工作原理的人,这样的人才才能保证数据的安全和服务器的平稳运行。
但是,小伙伴们可能会问:「难道系统管理员就只能做这些吗?」答案是否定的!
让我先给大家介绍一下典型的系统管理员的日常任务,以及 24 个常见 Linux 运维面试题。
初级运维面试题
1. 登录Linux服务器后你使用的前五个命令是什么?
答:
lsblk — 查看所有块设备的信息
who — 可以看谁登录到服务器
top — 可以了解服务器上正在运行的程序
df -khT — 查看服务器上可用的磁盘空间
netstat — 查看哪些TCP网络连接处于活动状态
2. 如何在后台运行程序,这样做有什么好处?
答:我们可以通过在命令末尾使用符号 & 来使命令在后台运行。通常,执行时间太长而不需要用户交互的应用程序会让它在后台运行,这样可以方便大家可以继续在终端中工作。
3. 一直以 root 身份运行命令是一个好习惯吗?
答:主要有两个问题。以 root 身份运行所有工作,首先是风险。当我们以 root 身份登录时,一旦误操作,后果将是无法挽回的。如果我们以其他身份去修改一些敏感配置,系统会提示使用 sudo 命令,这样我们就可以降低犯错的概率。
其次是安全问题。就是如果我们不知道管理员用户的登陆信息,那么系统是难以入侵的。而有权限访问 root 则说明我们已经拥有一半的拥有权了!
4. rm 和 rm-rf 有什么区别?
答:rm 命令本身仅删除指定的文件,但不包括目录。而使用 -rf 选项是添加两个附加功能:
-r,-R 或者 --recursive 表示递归删除目录内容,其中也包括隐藏的文件和子目录
-f 或者 --force 是表示强行删除文件,并且不提示错误消息
5. compress.tgz 的文件大小约为15GB,如何列出它的内容,以及如何仅为列出特定文件?
答:
列出文件内容:
$ tar tf archive.tgz
为特定文件列出:
$ tar xf archive.tgz 文件名
中级运维面试题
6. 什么是RAID?什么是RAID 0,RAID 1,RAID 5,RAID 6和RAID 10?
答:
RAID(廉价磁盘冗余阵列)这是一种用于提高数据存储性能或可靠性的技术。
RAID 0:称为磁盘条带化,这是一种分解文件并将数据分布到RAID组中的所有磁盘驱动器的技术。但它没有防止失败的保障措施。
RAID 1:流行的磁盘子系统,通过在两个驱动器上写入相同的数据来提高安全性。称为镜像,RAID1不会提高写入性能,但读取性能可能会提高到每个磁盘性能的总和。此外,如果一个驱动器发生故障,则使用第二个驱动器,并手动更换故障驱动器。更换后,RAID控制器将工作驱动器的内容复制到新驱动器上。
RAID 5:通过计算奇偶校验数据和提高速度来提高安全性的磁盘子系统。RAID 5通过跨三个或更多驱动器(条带化)交错数据来实现此目的。在单个驱动器发生故障时,可以从分布式奇偶校验计算后续读取,使得没有数据丢失。
RAID 6:通过添加另一个奇偶校验块来扩展 RAID 5。此级别至少需要四个磁盘,并且可以继续执行任何两个并发磁盘故障的读/写操作。RAID 6 对读取操作没有性能损失,但由于与奇偶校验计算相关的开销,它确实会对写操作造成性能损失。
RAID 10:称为 RAID 1 + 0,RAID 10 结合了磁盘镜像和磁盘条带化来保护数据。它至少需要四个磁盘,并且跨镜像对条带化数据。只要每个镜像对中的一个磁盘正常工作,就可以检索数据。如果同一镜像对中的两个磁盘发生故障,则所有数据都将丢失,因为条带集中没有奇偶校验。
7. ping命令使用哪个端口?
答:ping 命令使用 ICMP 。具体来讲就是它使用 ICMP 回应请求和 ICMP 回应回复数据包。这里大家注意,ICMP 不使用 UDP 或 TCP 通信服务,而是使用原始 IP 通信服务。这意味着 ICMP 消息直接包含在 IP 数据报数据字段中。
8. 路由器和网关有什么区别?什么是默认网关?
答:路由器描述了一般技术功能(第3层转发)或用于此目的的硬件设备,而网关描述了本地网段的功能(提供到其他地方的连接)。我们还可以声明'将路由器设置为网关'。那么这里就涉及到另一个术语 hop ,它则是描述了子网之间的转发。
默认网关一词用于表示 LAN 上的路由器,它负责成为LAN外部计算机通信的第一个联系点。
9. 说明 Linux 的启动过程。
答:BIOS → 主引导记录(MBR) → GRUB → 内核 → init → 应用程序
10. 如何在服务器启动时检查错误信息?
答:内核消息始终存储在 kmsg 缓冲区中,通过 dmesg 命令可以查看。引导问题和错误需要系统管理员结合特定的命令来查找某些重要的文件,这些命令在不同版本的Linux中都有不同的处理式:/var/log/boot.log 是系统引导日志,其中包含系统引导期间展开的所有文件。/var/log/messages 存储全局系统消息,包括系统引导期间记录的消息。/var/log/dmesg 包含内核环缓冲区信息。
11. 符号链接和硬链接有什么区别?
答:符号链接或软链接是指向原始文件的实际链接,而硬链接是原始文件的镜像副本。如果删除原始文件,则软链接没有值,因为它随后指向一个不存在的文件。在硬链接的情况下,则完全相反。如果删除原始文件,则硬链接仍包含原始文件中的数据。
12. 如果是你,你将如何改变内核参数?你可能需要调整哪些内核选项?
答:如果想在类Unix系统中设置内核参数,首先我们要编辑文件 /etc/sysctl.conf 。更改完毕后,保存文件并运行 sysctl -p 命令。这项命令使更改成为永久更改,而不需要重新启动计算机。
13. 解释/proc文件系统。
答:/proc 文件系统是虚拟的,并提供有关内核、硬件和运行进程的详细信息。因为 /proc 包含虚拟文件,所以称为虚拟文件系统。这些虚拟文件具有独特的特性。其中大多数都列为零字节大小。虚拟文件诸如(/proc/interrupts、/proc/meminfo、/proc/mounts和/proc/partitions)的提供了系统硬件的最新信息。其他诸如(/proc/filesystems和/proc/sys目录)则提供系统配置信息和接口。
14. 如何在没有密码的情况下以另一个用户身份运行脚本?
答:假使我们正在编辑 sudoers 文件(例如/private/etc/sudoers),则可以使用visudo添加以下内容:user1 all=(user2)NOPASSWD:/opt/scripts/bin/generate.sh
15. 什么是UID 0 toor账户?你受到威胁了吗?
答:toor 用户是另一个超级用户帐户,其中 toor 的根拼写为 backward 。它旨在于非标准 shell 一起使用,因此 root 的默认 shell 不需要更改。shell 不是基本分发的一部分,而是从端口或包安装的,它安装在 /usr/local/bin 中;默认情况下,shell 驻留在不同的文件系统中。如果 root 的 shell 位于/usr/local/bin 于中,并且未安装包含 /usr/local/bin_ 的文件系统,则 root 无法登录以解决问题,并且系统管理员必须重新启动到单用户模式才能进入 shell 的路径。
高级运维面试题
16. tracert如何工作以及它使用什么协议?
答:tracert 或 tracertoute 命令取决于操作系统是否允许我们在通过连接到最终目标的链路时准确查看到所接触的路由器。如果我们最终遇到无法连接或无法对最终目的地执行 ping 操作的问题,那么 tracert 可以帮助我们准确地判断连接链的停止位置。通过这些信息,我们可以联系正确的人;不论是自己的防火墙,ISP,目标 ISP,或是中间的某个点。像 ping 这样的 tracert 命令来使用 ICMP 协议,也可以使用 TCP 三向握手的第一步来发送 SYN 请求。
17. 使用chroot的主要优点是什么?我们何时使用它以及为何使用它?chroot环境中mount/dev,mount/proc和mount/sys命令的用途是什么?
答:chroot 环境的一个优点是,文件系统与物理主机隔离,因为 chroot 在文件系统中有一个单独的文件系统。区别在于chroot使用新创建的根目录(/)作为其根目录。
chroot 监狱允许我们将进程及其子进程与系统的其他部分隔离开来。它只能用于不以 root 用户身份运行的进程,因为 root 用户可以很轻松地越狱。
18. 你将如何保护你的系统免遭黑客攻击?
答:在遵循最小特权原则和以下做法:
使用公共密钥加密,提供良好的安全性。
加强密码复杂性。
了解为什么要对上述规则做出例外。
定期检查例外。
让自己对失败负责,这会让你保持警觉。
19. 什么是LVM,使用它有什么好处?
答:LVM 或称逻辑卷管理,它使用存储设备管理技术,使用户能够汇集和抽象组件存储设备的物理布局,以实现轻松灵活地管理。使用设备映射器 Linux 内核框架,可以使用当前迭代(LVM2)用于将现有存储设备收集到组中,并根据需要从组合空间分配逻辑单元。
20. 什么是粘性端口?
答:说起粘性端口,它是网络管理员最好的朋友之一,但也是最让人头疼的。它允许我们设置网络,以便交换机上的每个端口只允许一台(或我们指定的一组号码)计算机通过,然后将其锁定到特定的MAC地址在该端口上连接。
21. 解释端口转发。
答:当我们试图与安全网络内部的系统进行通信时,很难从外部并且有充分理由地进行通信。因此,在路由器本身或其他连接管理设备中使用端口转发表,这样就可以允许特定流量自动转发到特定目的地。例如,如果我们的网络上运行了一个 Web 服务器,并且我们希望从外部授予对它的访问权限,那么我们呢就可以设置端口转发到相关服务器上的端口80。这意味着任何在Web浏览器中输入我们的IP地址的人都会立即连接到服务器的网站。
这里大家请注意一下,通常不建议允许从外部直接访问服务器到我们的网络中。
22. 在IDS的情况下,什么是假阳性和假阴性?
答:当入侵检测系统(IDS)设备为实际未发生的入侵生成警报时,这就是假阳性。如果实际上发生了入侵,但是设备没有发生任何警报,则为假阴性。
23. 解释:(){:|:&};:以及如果我们已经登录系统,则如何停止此代码?
答:这是一个叉形炸弹。其分解如下:
:()定义函数,他的使用:作为函数名定义函数,空括号则表示它不接受任何参数。
{}显示函数定义的开头和结尾。
:|:将函数的副本加载到内存中,并将其输出传输到另一个副本。该副本也必须加载到内存中。
&使前一项进程成为后台进程,这样即使父进程被自动终止,子进程也不会被杀死。
:最后再次执行该函数,从而开始连锁反应。
保护多用户系统的最好办法是使用特权访问管理(PAM)来限制用户可以使用的进程数。
叉形炸弹最大的问题是它占用了大量的进程。一次,当我们已经登录系统,可以有两种方打尝试解决这个问题:一种是执行 SIGSTOP 命令来停止进程。例如:killall-STOP-u user1 。但是如果因为使用了所有进程而无法正常使用命令行,那么就必须使用 exec 强制它运行:exec killall-STOP-u user1。既然我们选择了叉形炸弹,如何防止它们就首先成为我们需要考虑的一个大问题。
24. 什么是OOM杀手?它是如何决定首先杀死哪个进程的?
答:如果我们的计算机内存被进程彻底耗尽到可能威胁系统稳定性的程度,那么 OOM 杀手就会出现。OOM 杀手首先它必须选择要杀死的最佳进程。这里的最好指的是在被杀死时可以释放最大内存的进程,对系统来说也是最不重要的。主要目标是消除最少数量的进程得以最大限度地减少损坏,同时也可以最大化释放内存量。为了实现这个目的,内核会为每个进程维护一个oom_score。我们可以在pid目录下的/proc文件系统中看到每个进程的oom_score:
$ cat / proc / 10292 / oom_score
对于任何进程,它的 oom_score 的值越高,在内存不足的情况下就越容易被 OOM 杀手杀死。
系统管理员工资差别其实还是很大的。有些网站每年提到7~10万美元,这就取决于地点,系统规模,教育水平以及更重要的自身水平。