期末考练习
作业硬盘一般操作说明:
- 打开云端虚拟机前,请务必确认你打开的硬盘是『practice1』,否则就会做错题目
- 若要使用图形界面,请务必使用 student 身份登录,若需要切换身份,再激活终端机处理。
- 若有简答题需要使用中文,请自行以第一堂课的动作自行处理输入法安装。
- 每部虚拟机均有独特的网卡地址,请勿使用他人硬盘上传,否则计分为 0 分。
- 每位同学均有自己的 IP 尾数,请先向老师询问您的 IP 尾数,才可以进行作业上传。
- 最终上传作业结果,请务必使用 root 身份上传。
- 进入作业硬盘后,先用 root 身份运行 vbird_book_setup_ip ,
运行流程请参考:vbird_book_setup_ip
作业当中,某些部份可能为简答题~若为简答题时,请将答案写入 /home/student/ans.txt 当中,并写好正确题号,方便老师订正答案。
请注意,文件名写错将无法上传!
- 若发生底下的问题,则此次练习为 0 分
- root 设置密码错误
- IP 设置错误
- 缺省出现图形界面 (如果开机不是纯文本界面,也是 0 分)
- 若无法发送成绩,此次考试亦为 0 分
- 某些题目是具有连续性的,因此请看懂题目后再进行。
- 开始考试的练习 -- VM 1: 系统设置与操作部份
这个系统缺省的 root 密码为 myCentOS8,缺省的 student 密码为 mystdgo,是可以直接登录的,无须救援 root 密码。
这个系统需要的是一些正确的设置,以符合系统的运作!
- 不是题目:请使用 vbird_book_setup_ip 设置好你的学号数据。
- 系统初始化设置
- 我需要每次开机都可以缺省的进入纯文本界面而非现行的图形界面,可以节省许多不必要的资源浪费。
- 在系统自己开机后,缺省会跑进纯文本界面,没有图形界面的意思。
- 你在操作时,依旧可以『暂时』切换到图形界面,没有特别要求你一定要在文本界面答题。
- 请设置好这部主机的网络参数成为如下状态 (全对才给分):
- 删除原有的网络连接名称,创建名为『 mynetwork 』的连接名称,且使用到可对外的以太网路界面。
- 需要开机就自动启动这个连接
- 网络参数的设置方式为手动设置
- 互联网地址 IP address 为: 192.168.251.XXX (XXX 为上课时,老师给予的号码)
- 子网络遮罩 netmask 为: 255.255.255.0
- 通信闸 Gateway 为: 192.168.251.254
- 领域名称服务器 DNS server 地址为: 172.16.200.254 以及 120.114.100.1 这两个
- 主机名称:请设置为 wwwXXX.book.vbird (其中 XXX 为上课时,老师给予的号码)
- 针对 YUM 的软件仓储设置,你有底下的两组软件仓储地址,请设置好所需要的环境 (全对才给分):
- http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/AppStream/x86_64/os/
- http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/BaseOS/x86_64/os/
- 时区与时间及网络校时功能设计:
- 你系统的时间好像怪怪的,时区与时间好像都错乱了!请改回台北的时区与时间。
- 请使用网络校时 (chronyd) 的方式,使用贵校 ntp.ksu.edu.tw 作为服务器,主动更新你的系统时间。
且系统启动之后,会持续网络校时以取得最正确的时间。(若贵校并无 NTP 服务器,则以 time.stdtime.gov.tw 作为来源)
- 系统的自动更新机制:
- 请至少升级内核 (kernel) 到最新版本,且升级完毕后,需要重新开机为宜
- 这部主机需要作为未来开发软件之用,因此需要安装一个『 RPM 开发工具 』的软件群组,请安装他。
- 请设置每天凌晨 3 点自动背景进行全系统更新。
- 帐号与权限控管方面的问题,包括新建帐号、帐号相关权限设置等
- 管理员的一般帐号设置:
- 请让 student 可以顺利使用自己的密码操作 sudo 指令
- 帐号锁定功能:
- 有个名为 alex 的帐号,他的密码为 mygodhehe ,这个帐号有点怪异,因此身为管理员的你,得要将该帐号暂时锁定。
- 意思是说,这个帐号的所有资源都不变,但是该帐号无法顺利使用密码登录的意思(密码锁定)
- 特殊系统帐号建置:创建一个名为 mysys1 的系统帐号,且这个系统帐号
- 不需要家目录
- 不具备可交互的 shell
- 不需要密码
- 缺省帐号的权限属性设置:
- 创建新用户时,新用户的家目录应该都会出现一个名为 newhtml 的子目录存在
- 新帐号登录时,缺省将会『 rm='rm -i' 』『 cp='cp -i' 』『 mv='mv -i' 』这三个命令别名存在。
- 特殊帐号管理的需求:
- 让 /home 这个目录支持用户与群组的 Quota 磁盘配额功能
- 增加一个名为 examgroup 的群组
- 特殊帐号创建的需求:请写一只名为 /root/users/addusers.sh 的脚本,这个脚本将用来处理特殊帐号的建置。
你应该使用 for…do…done 循环的方式来创建这只脚本,而 for 循环内的代码,请依序使用如下的方式来建置妥当
- 创建帐号时的相关参数设计:
- 帐号名称为: examuser11 ~ examuser30 共 20 个帐号
- 创建帐号时,每个帐号都要加入一个名为 examgroup 的次要群组支持
- 每个帐号的全名说明就是该帐号的名称
- 每个帐号的密码均为 myPassWord
- 并且每个帐号首次登录系统时,都会被强迫要求更改密码 (chage ??)
- 每个帐号在 /home 的 Quota 为 soft --> 120MB, hard --> 150MB
- 修改每位帐号家目录 (例如 examuser11 家目录在 /home/examuser11/ ) 的权限成为 drwx--x--x 的模样
- 脚本建置完毕后,请务必运行一次,以确定帐号可以顺利被创建!
- 群组共用目录的功能:请创建一个名为 /data/myexam 的目录,这个目录的权限设置是这样的:
- 关于 examgroup 群组内的用户权限:
- 该目录可以让 examgroup 的用户具有完整的权限
- 而其他人不具备任何权限
- 在该目录底下新建的数据(不论文件还是目录),新数据的拥有群组都会是 examgroup
- 关于 examuser30 与 student 这两个帐号的特定要求:
- 因为 examuser30 帐号被盗,因此 examuser30 针对 /data/myexam 设置为不具备任何权限
- 因为 student 是管理员的一般帐号,该帐号也需要查找 /data/myexam 目录下的信息。
- 请让 student 可以读、进入该目录,但不可以写入该目录。
- 未来在此目录底下新建的任何数据,缺省 student 都具有读与进入目录的权限(没有写入的权限喔!)。
- 系统基本操作,包括系统备份、自动化脚本、时间自动更新等机制
- 寻找特殊权限的文件名数据:
- 找出在/usr/bin, /usr/sbin 目录下,具有 s 或 t 等特殊权限的文件名 (SUID/SGID/SBIT)
- 将这些文件名连同权限,以类似 ll 输出的信息,将消息输出到 /data/findperm.txt 文件中
- 找寻 IP 参数输出:
- 使用『 ip addr show 』这个指令,将输出消息中,含有 inet 关键字的,但不能含有 inet6 关键字,一整列输出
- 将上述的结果转输出到 /data/mynetwork.txt 文件中。
- 系统备份脚本制作:由于系统上面有非常多的重要数据必须要进行备份,因此我们想要使用一支 script 来进行备份的动作,且将该 script 定时运行:
- 请撰写一只名为 /root/backup_system.sh 的脚本,来进行备份的工作
- 需要备份的目录有:/etc, /home, /var/spool/mail/, /var/spool/cron/, /var/spool/at/, /var/lib/,脚本的内容为:
- 第一行一定要声明 shell 喔!
- 自动判断 /backups 目录是否存在,若不存在则 mkdir 创建她,若存在则不进行任何动作
- 设计一个名为 mysource 的变量,变量内容以空格隔开所需要备份的目录
- 设计一个名为 mytarget 的变量,该变量为 tar 所创建的文件名,文件名命名规则
/backups/mysys_20xx_xx_xx.tar.gz , 其中 20xx_xx_xx 为西元年、月、日的数字,该数字依据你备份当天的日期由 date 自行取得。
- 开始利用 tar 来备份
- 请注意,撰写完毕之后,一定要立刻运行一次该脚本!确认实际有创建 /backups 以及相关的备份数据喔!
- 定期备份功能:排定上述的备份指令在每个星期 6 的凌晨 2 点进行这个备份的动作,且这个script在运行的时候:
- 备份指令运行的过程请使用数据流重导向将过程完整的保存在 /backups/backup.log 这个文件中(包括正确与错误信息)
- 使用 NI值 10 来运行此指令。
- 我的 /usr/sbin/setquota 这个文件不小心删除了,该如何救回来?(可以使用
rpm 去追踪是哪个软件提供的文件后,移除再安装该软件即可完成此题目。)
- 服务的管理部份,以 httpd 为例:
- 让你的 Linux 成为 http 以及 https 支持两者的网页服务器
- 每次开机都会主动的唤醒这个服务器功能
- Internet 应该要能够连接到你的 http 以及 https 端口口服务
- 当输入 https://127.0.0.1 时,可以看到的是你的 (1)姓名与 (2)学号
- 注意:上课提到的服务建置五个步骤!
- 脚本创建与系统管理
- 特殊原因,例如电力固定维护的关机情境问题:
- 你的系统将在 7 月的 20 号 08:00 进行关机的岁修工作,请以『单次』工作调度来设计关机的动作 (poweroff)
- 系统开机的通知消息:
- 系统开机之后,会自动寄出一封 email 给 root,说明系统开机了。
- 指令可以是『 echo "reboot new" | mail -s 'reboot message' root 』
- 请注意,这个动作必须是系统『自动于开机完成后就动作』,而不需要用户或管理员登录喔!(hint: rc.local)
- 为了方便大家使用 ps 外带的参数来查找系统的进程,因此管理员创建一只名为 /usr/local/bin/myprocess 的脚本让大家方便使用,脚本内容主要为:
- 第一行一定要声明 shell 为 bash 才行;
- 主要仅运行『 /bin/ps -Ao pid,user,cpu,tty,args 』
- 这只脚本必须要让所有人都可以运行才行!
- 写一只名为 /usr/local/bin/myans.sh 的脚本,这只脚本的运行结果会这样:
- 脚本内第一行一定要声明 shell 为 bash
- 当运行 myans.sh true 时,屏幕会输出『 Answer is true 』,且消息为缺省的 Standard output
- 当运行 myans.sh false 时,屏幕会输出『 Answer is false 』,且消息输出到 starndard error output
- 当外带参数不是 true 也不是 false 时,屏幕会输出『 Usage: myans.sh true|false 』
- 这只脚本必须要让所有人都可以运行才行!
- 基础文件管理与文件系统维护:
- 打包文件的格式错误问题:
- 你的系统中有个文件名 /root/mybackup 的文件,这个文件原本是备份系统的数据,但扩展名不小心写错了!
- 请将这个文件修订成为比较正确的扩展名 (例如 /root/mybackup.txt 之类的模样)
- 并且将该文件在 /srv/testing/ 目录中解开这个文件的内容。
- LVM 弹性容量变化的效果:
- 目前的系统中, /home 应该使用的是 LVM 的维护模式。请找出 /home 所在的 VG 剩余容量
- 将 VG 所有剩余容量通通提供给 /home 使用,因此整个 /home 的容量将会放大很多。
- 在目前的系统中,挂载在 /home 的LVM格式数据,请将它的容量变成
- 且这个目录内的数据并不会消失(无须重新格式化的意思)。
- 完成上述所有的题目后,请重新开机,并请在开机后 10 分钟内运行上传脚本,否则系统不允许你上传喔!
作业结果传输:请以 root 的身分运行 vbird_book_check_unit 指令上传作业结果。
正常运行完毕的结果应会出现【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字样。若需要查阅自己上传数据的时间,
请在操作系统上面使用浏览器查找: http://192.168.251.254 检查相对应的课程文件。
相关流程请参考: vbird_book_check_unit
- 开始考试的练习 -- VM 2: 系统救援与文件系统部份
- 不是题目:
- 这个系统容量比较小,而且缺省在文本界面
- 这个系统目前已经没有图形界面,所以你无法进入图形界面。
- 若你想要使用图形界面操作系统,可能需要安装 yum groupinstall GNOME 才行。
- 同样的,缺省界面一定要是纯文本界面才可以!
- 这部主机真的怪怪的,之前的管理员似乎在这部主机上面进行一些测试,追问之下有一些可能发生的原因,问题还不只一个。
请依据底下可能发生原因的问题予以克服,最终让系统可以直接以 root 登录!
(hint: 千万不要忘记 .autorelabel 的动作!)
- 系统救援 - 1 :内核相关数据错误造成的问题
- 原因:因为要测试内核开机功能,结果不小心将 initramfs 文件删除掉了,所以应该是无法顺利开机。
- 建议救援方式:使用原版光盘处理,请进入系统救援的模式,并依据系统既有的内核版本,将 initramfs 重建
- 注意:(1)重建时,应考虑 grub2 的原本设置档 (可能会在哪里?),以找到正确的文件名,方可顺利成功开机喔。
(2)你可以使用任何一个 CentOS 8.x 的光盘做救援,但是需要注意不同的内核版本的问题!
- 系统救援 - 2 :管理员手滑造成的 root 属性问题
- 原因:因为帮用户设置属性,结果不小心『可能』修改到 root 这个帐号的相关属性数据。
- 救援恢复的要求: (1)root 密码恢复到 myCentOS8;(2)root 登录时可顺利取得 bash shell 。
- 系统救援 - 3 :LVM 随便删除造成的错误
- 原因:在发生此错误之前,似乎曾经将系统的 LVM swap 删除,是否如此造成系统错误还不得而之。
- 建议救援方式:不要使用光盘,使用内核支持的维护模式,查看一下开机菜单的内容是否正确。
- 注意:在顺利登录系统之后,你或许需要 (1)重建 grub 菜单以及 (2)修改 /etc/fstab 文件,以处理 swap 产生的问题
- 注意:删除 swap 为正常的行为,所以,请不要重建 lvm 的 swap 设备!从菜单去处理!
- 不是题目:在使用 root 正确登录系统之后,请使用 vbird_book_setup_ip 设置好你的学号与网络。
- 系统初始化功能:
- 针对 YUM 的软件仓储设置,你有底下的两组软件仓储地址,请设置好所需要的环境 (全对才给分):
- http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/AppStream/x86_64/os/
- http://ftp.ksu.edu.tw/FTP/Linux/CentOS/8/BaseOS/x86_64/os/
- 系统升级行为
- 只针对 kernel 升级即可
- 升级完毕请立刻重新开机,且使用新内核
- 关于开机菜单调整
- timeout时间设置为 15 秒,
- 缺省所有的内核参数都会加入 noapic 及 noacpi 两个参数
- 开机菜单多一个回到MBR的设置,菜单名称内亦须包含『 MBR 』字样,且菜单位于最后一个位置
- 开机菜单在最后多一项可以进入图形界面模式,这个图形界面请使用原有的内核版本 (不是刚刚升级的内核版本),
且title必须含有『 mygraphical 』的字样才行!
- 文件系统方面的处理,包含分割(注意primary, extended, logical的限制)、格式化、挂载等
- 软件磁盘数组管理:目前的系统有个出现磁盘出问题而快要损毁 (degrade) 的软件磁盘数组,找出并修复好该系统。
- 该磁盘似乎已经被拔除一个 partition
- 找出系统中具有的跟 RAID 内的 partition 容量相同,且没有被使用的 partition,那就是这个 RAID 缺乏的磁盘槽 (假设已经被修理好了)
- 请将该磁盘槽加入原本的系统中,以救援这个磁盘数组 (让他变成 clean 的状态,改变 degraded 的困扰)
- 内存置换容量的处理:
- 目前这个系统里面似乎所有的 swap 通通被删除了!不过这样实在不太好。
- 创建大型文件,文件名为 /myswap.img,容量大概是 1G 即可。
- 将上述文件格式化成为 swap
- 每次开机这个 swap 都会主动被系统所使用。
- LVM 的创建与 VDO 的应用
- 将目前这个系统当中的所有剩余容量创建成为单一分区,并且将 system ID 设置为 LVM
- 利用上面这个分区,创建一个名为 thevg 的 VG ,且 PE 容量为 8M
- 将 thevg 的所有容量通通给予名为 thelv 的 lv,所以最终会出现 /dev/thevg/thelv 的设备。
- 将 /dev/thevg/thelv 加入到 VDO 的支持,创建名为如下的 VDO 设备
- VDO 名称为 thevdo
- VDO 虚拟容量为 20G
- 设备使用 /dev/thevg/thelv
- 将 VDO 设备格式化成为 XFS 文件系统
- 此设备开机后会立刻挂载到 /data/vmdata 目录下
- LVM 与 stratisd 的应用
- 将 centos 这个 VG 的剩余容量,给予一个名为 thepool 的 LVM 设备,最终会有 /dev/centos/thepool 设备存在。
- 将 thepool 加入到名为 lvmpool 的保存池 (thin pool) 当中
- 创建 thefs 文件系统,并且开机会挂载到 /data/mypool 目录下。
- 上述挂载最好使用 UUID 来处理!
- 系统性能处理:
- 请改用『 throughput-performance 』来动态调整系统性能
- 调整内核参数,让每次开机都会修改成为底下这样:
- /proc/sys/vm/dirty_ratio 改成 40
- /proc/sys/vm/dirty_background_ratio 改成 5
- /proc/sys/vm/swappiness 改成 10
- 完成上述所有的题目后,请重新开机,并请在开机后 10 分钟内运行上传脚本,否则系统不允许你上传喔!
作业结果传输:请以 root 的身分运行 vbird_book_check_unit 指令上传作业结果。
正常运行完毕的结果应会出现【XXXXXX_aa:bb:cc:dd:ee:ff_unitNN】字样。若需要查阅自己上传数据的时间,
请在操作系统上面使用浏览器查找: http://192.168.251.254 检查相对应的课程文件。
相关流程请参考: vbird_book_check_unit