Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验 联系客服

发布时间 : 星期一 文章Linux系统应用与开发教程 第二版 刘海燕 荆涛综合实验更新完毕开始阅读

综合实验

实验1

目的:练习vi编辑器以及X Window桌面的使用。

需要的知识:第3章vi编辑器的使用和第4章建立快速链接的内容。

题目:首先使用vi编辑器编辑一个c语言源程序hello.c,程序的功能为:接受用户输入的姓名,然后向屏幕输出一条语句“Welcome 姓名”。使用命令“gcc –o hello hello.c”编译源程序,如果发现程序错误则需要反复使用vi修改源文件并且在修改后重新编译。最后在X Window的桌面上放置源程序hello.c的链接。 实验步骤:

步骤1:使用vi编辑文件hello.c

#include main(){

char name[20];

printf(\

scanf(\输入姓名

printf(\输出welcome 姓名 return 0; }

步骤2:编译文件gcc –o hello hello.c

步骤3:如果有错误,再次使用vi修改hello.c的内容;然后再次编译。直至编译时不报任何错误。

步骤4:在桌面建立链接:

创建链接有如下两个方法:

方法1:打开文件管理器,找到hello.c文件,单击鼠标右键,选择【创建链接】命令,则在文件管理器的窗口中出现一个图标,名字为“到…的链接”,并且带一个小箭头符号。只要将该图标拖放到桌面,就可以建立到该项目的链接。

方法2:选中hello.c文件,按住鼠标中键(三键鼠标)的滚轮键,拖放到桌面,当放开鼠标中键时,会弹出【移动到此处】、【复制到此处】、【在此处创建链接】等命令,选择【在此处创建链接】命令,就可以在桌面创建到该项目的链接。

提示:本题用到了编译命令,题目中已经指出了该命令的使用方式,不要求理解每个项目的含义,在第12章会有具体介绍。

实验2

目的:练习存储设备的挂载以及编写shell程序将日常管理任务简化。 需要的知识:第6章存储设备的挂载和第11章shell编程的内容

题目:假设有一台Windows和Linux双启动的主机,Window有C、D两个分区,编写一个负责挂载的脚本程序mmnt,参数为cdrom时挂载光驱、参数为floppy时挂载软驱、参数为

C(大小写都可以)时挂载Windows的C盘(有中文字符),参数为D(大小写都可以)时挂载Windows的D盘(有中文字符),参数为其它时显示帮助信息: Usage: mmnt cdrom|floppy|C|c|D|d

编写一个负责卸载的脚本程序umnt,完成相应的存储设备的卸载,参数的含义同上。 实验步骤:

步骤1:以root身份登录Linux系统,使用fdisk –l命令查看系统连接的存储设备,主要查看windows的两个分区的名称,比如hda3, hda5等。

步骤2:建立挂载点:一般地,光驱和软驱的挂载点/mnt/cdrom、/mnt/floppy由系统缺省建立,查看一下这两个目录是否存在,如果没有,手工建立;此外使用mkdir命令建立windows的C盘和D盘的挂载点:

mkdir /mnt/C mkdir /mnt/D

步骤3:编写/etc/fstab文件,编辑或者添加如下4行:

/dev/hda3 /mnt/C vfat noauto,iocharset=cp936 0 0 /dev/hda5 /mnt/D vfat noauto,iocharset=cp936 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 步骤4:编写shell脚本mmnt #!/bin/sh case $1 in cdrom) mount /mnt/cdrom ;; floppy) mount /mnt/floppy ;; C|c) mount /mnt/C ;; D|d) mount /mnt/D ;; *) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;; esac

步骤5:编写shell脚本umnt #!/bin/sh case $1 in cdrom) umount /mnt/cdrom ;; floppy) umount /mnt/floppy ;; C|c) umount /mnt/C ;; D|d) umount /mnt/D ;; *) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;; esac

步骤6:使脚本mmnt和umnt可执行

chmod +x mmnt chmod +x umnt 提示:此实验可以分两步,学完第6章后完成步骤1到步骤3,使用系统命令mount和umount测试自己的设置,学完第11章shell编程之后完成最后几步。

实验3

目的:练习网络服务的配置与管理。

需要的知识:第7章网络配置、第8章网络服务器的配置和使用。

题目:某局域网(yys.com)具有3台安装了Linux系统的计算机,分别用于提供WWW、FTP和DNS服务,要求:设计分配IP地址和主机名,配置三种服务器,使得可以通过域名访问网络服务。 实验步骤:

步骤1:设计分配各主机的IP地址和域名,假设三台主机分别为A、B、C,可以如下分配IP地址和域名: 主机 IP 主机名 域名 A. 192.168.1.10 www www.yys.com B 192.168.1.11 ftp ftp.yys.com C 192.168.1.12 dns dns.yys.com 步骤2:构建WWW服务器

1. 在A主机中安装最新版的Apache服务器软件 2. 配置Apache

3. 在其主文档目录中建立web主页 4. 启动Apache服务器

5. 在本机中测试服务器与网页是否正常运行 步骤3:构建FTP服务器

1. 在B主机中安装最新版的vsFtpd服务器软件 2. 配置vsFtpd,按需求建立不同形式的登录方式 3. 在对应的文件目录中复制有关文件资料 4. 启动vsFtpd服务器

5. 在本机中测试服务器是否正常运行 步骤4:构建DNS服务器

1. 在C主机中安装最新版的bind服务器软件 2. 配置系统,建立主机与IP地址的映射。 3. 启动bind服务器

4. 在本机中测试服务器是否正常运行 步骤5:设置客户机

1. 在客户机中修改本地DNS服务器的设置。

2. 打开网页浏览器,在地址栏中输入:http://www.yys.com ,检验是否连接WWW服务器 3. 打开网页浏览器,在地址栏中输入:ftp://ftp.yys.com ,检验是否连接FTP服务器

实验4

目的:了解Linux下的用户管理机制,熟练掌握Linux下的C语言编程以及gcc工具的使用。 需要的知识:C/C++语言的基本技能、第9章用户管理知识、第12章gcc的使用。

题目:Linux系统管理的一项重要工作就是用户管理。用户的口令以加密的形式存储在口令文件/etc/shadow中。弱口令就是很容易被猜出来的口令,比如与用户名相同的口令、象“123456、admin、computer”这类常用的口令等,口令字典是指将一些常用弱口令写在一个文本文件。管理员应该定期检测系统中是否存在弱口令。试编写一个c语言程序,主动检查自己的Linux系统中是否存在弱口令。 实验步骤;

步骤1:分析/etc/shadow文件的格式。

可以查看自己的系统中该文件的格式,参照9.1节的介绍,该文件的每一行对应一个用户,下面是一个系统中/etc/shadow文件的实例:

user1:$6$DVLiBPZG$IrR9o0KpjtGQOj7I5WvgxQ.jMQ/Qzl3cJp4w0loUMZs4xQSQ8wkdIK7Sdkdk2pMXeAfOYq9O07r/QuDdJ8f3c0:14748:0:99999:7:::

user2:$6$RR8pmW2aerqIkySA$PcMV7/Z37QFCe9hJrf1rlUjPTAOdmKsW/mfG40V343kxG1QNsWWI7mdzl.50SCJpI4TQ/x4z4zsCoiA48EjAn1:14748:0:99999:7:::

user3:$6$oGG.739y$9ysybZ.VaTQ7dmR1zyz1vR8OiCUSCnzqnFd1PUYvedJMt.t6ElISwUohtOAlqAuT7.sPDjfy.bKCKar82mSp2.:14748:0:99999:7:::

user4:$6$AJerec5o$bwgJnQ0mTPzZMRCZYuivQVsWtD9mlh3.pWK2tR2pZPr4NzSlqk6hhFq3/zfWJXQCNmXJTlZhubwwW9x6a8mtM0:14748:0:99999:7:::

user5:$6$o1DA6WOiXtme7Zsw$Lj6bXgI5c5Kg/GewGWYv.4pQ0fD/AnSYEjMvmXxuvzEK3IYhNYjnTIEnTPQr9pZIMzatBOyrC4FgBjYtR5R.n1:14749:0:99999:7:::

user6:$6$UUXC4WKX$mKyl/32n7xrU1ChPIJYs2gwYuEoObdkNsPcVhxR22xFBIspNjVIfRv4FgoDWsJIxy4TZ.ci70MeDvDMEeExXL0:14749:0:99999:7::: 步骤2:了解Linux下口令加密的原理

口令的加密是使用Linux系统的crypt函数。使用info或者man可以了解该命令的工作原理:Red Hat Linux9中使用的MD5算法,在Fedora 10中默认使用了SHA-512算法。它使用一个字符串作为salt(翻译成盐),长度是8到16个字节,将用户输入的口令key进行加密。函数crypt(key,salt)的结果存入/etc/shadow文件的第2个域。这个域前面$6$salt$就是crypt函数的salt参数。当给用户设置口令时,salt是由系统随机选取的,因此即使是相同的key,因salt不同而第二个域的值也不同。

当用户在登录中输入自己的口令时,系统使用crypt进行同样的计算,如果所得的结果与/etc/shadow中存储的一致,则接受用户的登录。

步骤3:什么是弱口令:弱口令就是很容易被猜出来的口令,比如admin,guest,fllower,123456,beauty等等。在口令猜测或者破解时,一般不会穷尽所有字符的所有排列组合,一般都使用一个弱口令字典,字典中包含了常被用来作为口令的字符串。可以到网上查找口令字典。

步骤4:弱口令检查的原理

对每个用户而言,逐个将那些经常被用来作为口令的词,使用crypt做运算,如果运算结果与/etc/shadow所存储的加密后的口令相同,则口令被猜出来。 步骤5:用c语言编写实现口令检查的程序 关键部分的代码如下:

通过读取/etc/shadow的每一行,获得一个关于用户的数据结构,存放在pwd中。

char saltstr[21]; //存放种子,最多是20个字节 bzero(saltstr,sizeof(saltstr));//将变了全部清0

strncpy(saltstr,pwd->pw_passwd,20);

//将salt取出,最多20个字节,以其中$作为边界

cp = crypt (guess, saltstr); //调用crypt加密函数

if (strcmp (cp, pwd -> pw_passwd)) //与口令文件中存储的信息比较 return (0); //若不一致则返回

printf (\

pwd -> pw_name, guess); //找到口令,显示口令

步骤6:编译程序

gcc –o passchk pass.c –lcrypt