1.4 思考与实践

  1. 什么是自由软件,什么GPL、GNU?
    答:自由软件是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。
    GPL,是GNU General Public License的缩写,含义为GNU通用公共许可证,GNU通用公共许可证试图保证你共享和修改自由软件的自由,即保证自由软件对所有用户是自由。
    GNU是一个自由的操作系统,名称来自GNU’s Not Unix!的递归缩写,其内容软件完全以GPL方式发布。这个操作系统是GNU计划的主要目标。Linux操作系统包涵了Linux内核与其他自由软件项目中的GNU组件和软件,可以被称为GNU/Linux。

  2. Linux操作系统的内核版本有什么特点?
    答:Linux的内核版本表示方法发生几次变化,在1.0至2.6版本之间由3组数字组成:r.x.y 。
    在2.6至3.0版本之间由4组数字组成,r.x.y.z。
    3.0版本之后是“r.x.y”格式,r为Kernel主版本,x随着新版本的发布而增加,y代表一些bug修复,安全更新,新特性和驱动的次数。

  3. 简述Linux操作系统的组成及特点。
    答:Linux软件体系结构包括:
    (1) 设备驱动程序层。(2) Linux内核。(3) 系统调用接口。(4) 语言函数库。(5) Linux Shell。(6) Linux应用程序。
    Linux操作系统的特点:开放性 ;多用户 ;多任务 ;良好的用户界面 ;设备独立性 ;提供了丰富的网络功能 ;可靠的系统安全性;良好的可移植性。

  4. 常用的Linux操作系统有哪些版本?掌握在Internet上获取某一版本的Linux系统的途径及方法。

    2.7 思考与实践

  5. Linux系统的自定义分区要求有哪些?
    答:①必须建立的分区:
    /:根目录分区:这是整个操作系统的根目录,几乎所有的文件都位于此目录下,如果用户没有划分其他分区,如:“/usr”、“/home”及“/var”等,则它的容量越大越好,建议把剩余空间都提供给它使用,本例中要全部安装CentOS 7系统,所以其值应不小于10G。
    /boot:引导分区,该分区存放着操作系统的内核,用来启动引导操作系统的,建议空间为300M。
    SWAP:交换分区,SWAP大小根据经验可以设为物理内存的两倍,但是当物理内存大于1GB时,SWAP分区可以设置为2GB。
    ②其他分区:
    /home:用户目录分区,系统为多用户创建的空间,如果系统有100个用户,大概每个用户分配200M空间,则该目录分配的空间大小至少为20G以上。
    /var:容易改变的文件系统分区,如系统日志、Web空间、系统邮件等,用户根据实际需要定制,至少要分配1000M空间,建议为2G。

  6. 简述Linux系统的启动过程。
    答:(1) 加载BIOS (2) 进入GRUB (3) 加载Linux Kernel(4) 执行init(5) 运行/etc/rc.d/rc.sysinit(6) 执行/etc/inittab(7) 执行默认级别中的所有Script(8) 执行/bin/login程序

  7. 举例说明Windows和Linux系统共存的磁盘分区命名要求。
    答:Windows操作系统不识别Linux分区文件,而Linux操作系统可以识别Windows分区文件系统,所以Linux分区识别Windows分区文件系统,命名要求如下:
    在PC机上使用的硬盘有两种:IDE接口和SCSI/SATA接口。
    在Linux系统中用户用设备名来访问设备,如磁盘设备,它的名称如下:

    1. 系统第一块IDE接口的硬盘称为/dev/hda,而它的第一个分区则称为/dev/hda1。
    2. 系统第二块IDE接口的硬盘称为/dev/hdb,而它的第三个分区则称为/dev/hdb3。
    3. 系统第一块SCSI/SATA接口的硬盘称为/dev/sda,而它的第一个分区则称为/dev/sda1。
    4. 系统第二块SCSI/SATA接口的硬盘称为/dev/sdb,而它的第五个分区则称为/dev/sdb5。

其他的命名方式以此类推。在Windows操作系统中使用盘符来标识不同的分区,而Linux操作系统以分区的设备名来标识不同的分区,Linux中的分区数字编号,1~4留给主分区和扩展分区,逻辑分区从5开始。

  1. 多用户情况下,如何保证其他在线用户的作业,而系统还能正常安全关机。
    答:使用shutdown关机命令,可以按照管理员的各种工作意图完成关机工作。利用wall命令可以向用户以广播的形式发送信息,通常我们会向用户提示系统即将关机的内容,在发送信息后,系统会每隔一分钟传送一次信息,直到时间到期为止。这样用户就会按照关机倒计时内保存工作任务,按时关机。

  2. 练习系统的开机、登录、注销及关机的方法,并对该过程进行观察和记录。略
    6. 练习在Windows下利用VMware进行建立并安装Linux虚拟机系统。略
    7. 练习安装后的虚拟系统的移植。略
    8. 练习在Windows下的SSH终端软件登录虚拟的CentOS 7系统,并进行Windows系统与Linux系统间的文件上传及下载操作。略
    9. 练习在Windows下,利用SSH终端软件以不同的用户身份同时登录虚拟的CentOS 7系统,再用shutdown(携带不同参数)的关机命令,体会多用户状态下,不同终端窗口系统关机的提示及状态变化情况。 略

    3.8 思考与实践

  3. 怎样查询文本文件内的特定文字?又怎样查询系统内特定文件?
    答:查询文本文件内的特定文字可以有多种方法,例如用如下命令:
    cat 文本文件名 | grep 关键字
    查询系统内特定文件,可以用find命令,例如:在/var目录下查找所有以sh为扩展名的文件,命令如下:
    find /var -name *.sh

  4. shell有哪些高级操作?
    答:shell的命令补全、shell的历史命令、shell的重定向、shell的管道操作

  5. 对一个命令不熟悉,有哪些方法可以获得辅助?
    答:可以调入该命令的帮助信息,如:
    man 命令名命令名 --help

  6. 练习定制环境变量。略
    5. 在CentOS 7系统桌面环境下进行如下操作:设置系统时间、更换桌面背景、工作区切换、目录的切换、文件的查看等操作,比较该系统和Windows系统的基本操作区别。略
    6. 在CentOS 7系统下,分别在远程SSH终端、以及本地桌面环境下多用户方式登录(登录的用户分为普通用户及root用户),再在不同终端关闭系统进行观察,此时多用户在线状态下普通用户及root用户系统关机的提示及状态变化情况。略
    7. 在CentOS 7系统的桌面环境下,进行系统的语言格式由中文版转换成英文版的重新设置操作。设置成功后观察设置前后的远程终端的输出变化,即把原来终端的中文输出转换成英文输出的格式。略
    8. 在CentOS 7系统的桌面环境下,安装MySQL软件包。略

    4.6 思考与实践

  7. 在你所使用的Linux系统的根目录上有哪些目录,它们的作用是什么?
    答:Linux系统的根目录上的文件目录基本相同,具体的文件目录及其作用参考教材“4.1.2 Linux系统的目录结构”章节内容。

  8. 如何递归式地显示指定目录的各个子目录中的文件?
    答:递归式地显示指定目录的各个子目录中的文件,命令如下:
    ls -R 指定目录
    如果文件较多,可以分屏显示,命令如下:
    ls -R 指定目录 | more

  9. 如何把两个文件的内容合并成一个文件?
    答:如果两个文件名分别为f1、f2,可以把f2文件内容附加到f1后面,命令如下:
    cat f2 >> f1
    也可以把f1、f2内容合并成一个新文件f3,命令如下:

    1. cat f1 > f3
    2. cat f2 >> f3
  10. 文件的权限管理的意义?
    答:Linux系统的文件权限管理方式,可以把任何文件或目录,针对不同的用户或用户组设置成不同的访问权限,如读、写、执行权限,这样极大地方便了多用户系统间的用户对不同文件或目录的访问权限。对用户的文件的安全性有非常重要的作用。

  11. 如何统计当前系统中的在线人数?
    答:显示在线用户,并统计行数,命令如下:
    who | wc -l

  12. 把root目录下的所有文件(包含隐藏文件)按文件的大小进行排序。
    答:ls -al /root | sort -n -r -k 5

  13. 请给出下列命令的执行结果。
    (1)cd / (2)cd .. (3)cd ../.. (4)cd
    答:
    (1)cd / 返回根目录
    (2)cd .. 返回上一层目录
    (3)cd ../.. 返回上两层目录
    (4)cd 返回用户宿主目录

  14. 建立符号链接文件后,如果删除原文件会有什么样的结果?
    答:建立符号链接文件后,如果删除原文件,符号链接文件不变,但是它指向的源文件已经没有了,所以该符号链接文件失效。

  15. 在一个Linux系统中的多个用户间,实现文件共享的方法有哪些?试讨论它们的优缺点。
    答:在一个Linux系统中的多个用户间,实现文件共享的方法有多种方式,如

  16. 链接法:设置要共享文件的链接文件,该方法简单、方便、访问快捷,是一个Linux系统中的多个用户间共享文件最简单有效的方法。

  17. 设置目录或文件的访问权限:该方法可以实现其他用户的访问,但访问路径比较麻烦,且权限设置也很不方便,且对文件的安全影响较大。
  18. 其他可以实现共享,但必须网络相通的前提下进行,并且还需要进行相关的配置,比较繁琐,如:

    1. NFS:网络文件系统,用于Linux与Linux系统之间的文件共享
    2. Samba:用于windows与Linux系统之间的共享
    3. FTP:windows与Linux都可以,有图形化界面与命令行两种方式访问共享数据
  19. 对某个文件在同一目录中分别建立硬链接和符号链接文件,然后运行1s -l命令。观察输出信息的第二列(链接数)以及第五列(文件尺寸),比较两种链接有什么不同。
    答:

  20. 硬连接:链接数+1,文件尺寸和源文件一样。

  21. 符号链接:链接数为1,文件尺寸和源文件相比非常小,该文件尺寸大小只是源文件路径字符数。

  22. 已知文件f1,创建f1文件的硬链接f2,再创建f1的软链接f3,再删除源文件f1,问共享文件f2和f3是否失效?共享文件f2和f3的链接数是多少?
    答:共享文件f2没有失效,f3失效,共享文件f2的链接数为删除f1之前的链接数减1,f2的链接数不变仍为1。

    5.8 思考与实践

  23. 简述Linux的四个帐户系统文件及其各个字段的含义。
    答:参照“5.1.2 用户和组的配置文件”内容。

  24. 举例说明使用RPM命令安装、升级、删除、查询、校验软件包的方法?
    答:参照“5.2.2 RPM软件包的管理”内容。

  25. 查看“/bin/at”文件隶属于那个软件包的?并查看该软件包的描述信息,以及该包里所包含的文件。
    答:查看“/bin/at”文件隶属于那个软件包的,命令如下:
    rpm -qf /bin/at
    查看上述命令查询到的该软件包的描述信息,命令如下:
    rpm -qi RPM软件包名
    查看上述命令查询到的该软件包所包含的文件,命令如下:
    rpm -ql RPM软件包名

  26. 网络通信有几种方式,都在什么情况下适用?
    答:对于多用户的操作系统中,在一台主机上的不同终端用户之间可以方便地收发信息。

  27. 双方同时在线时,常用以下两种方式:

    1. 点对点:write
    2. 广播:wall
  28. 另一方不在线时,可以采用mail邮件方式。

注意对于不同主机之间,最好采用该用户先远程登录到对方主机上,才能进行相互间通信。

  1. 对进程来说,前台和后台的含义是什么,如何进行切换?
    答:

  2. 进程的前台执行:当键入一个命令并按下<Enter>键时,shell执行命令,然后回显进程的执行情况,该进程执行完后返回Shell的提示符。

  3. 进程的后台执行:当命令执行某个进程后,立即返回到shell提示符,而没有显示该进程的执行情况,从而可以做其他工作。这种方式称为进程在后台运行。
  4. 前台到后台的切换:快捷键“<Ctrl> + Z”
  5. 后台到前台的切换:因为后台的进程可能很多,具体切换哪一个到前台,首先要执行“jobs”命令查看后台的进程号,然后执行“fg 后台进程编号”,把后台挂起的进程恢复到前台来运行。

6.如何启动和停止各种网络服务?
答:使用如下命令来控制网络服务。
systemctl [status/start/stop/restart/reload] name.service
启动:systemctl restart name.service
停止:systemctl stop name.service

  1. 如何启动多个用户进程。
    答:可以使用“at”命令,多个用户进程以列表的方式指定某个时间启动执行。
    也可以使用crontab命令来实现cron作业,来完成复杂的多个用户进程执行方式。

  2. 利用vi及top命令分别创建两个后台进程后,再利用ps -au命令显示这两个后台进程的运行状态。用操作系统原理的进程运行状态转换图加以解释说明。答:略
    9. 已知系统有一个root用户及多个a用户同时在线,对于root用户来说如何指定其中的一个a用户,并把它强行离线,并禁止该用户以原来登录的用户名及IP地址重新进行登录。
    答:首先root用户建立多个虚拟IP,让不用的用户以不同的IP地址用同一个a用户名登录同一个系统中,root用户再利用“who”命令查看多个a用户的不同端口号,指定某个a用户的端口号,再利用“ps -ef”命令查看该端口号a用户的登录时的父进程“bash”的进程号,root用户利用“kill -9 该进程号”杀死该进程,使该用户强行离线,再关闭该用户登录的虚拟IP地址。

  3. 如何发送文件信息的消息?
    答:cat 文件名 | write 用户名

  4. 查看系统中安装相关的http软件有那些?以及查看该软件的信息说明,并把该服务在多用户模式下和X窗口模式下设为系统启动时自动加载。
    答:查看系统中安装相关的http软件有那些,命令如下:
    rpm -q | grep http
    上述命令的查询结果,找到http软件包名,再查看该软件包的信息说明,命令如下:
    rpm -qi 该软件包名
    把该服务在多用户模式下和X窗口模式下设为系统启动时自动加载
    可以使用chkconfig命令,其中3和5分别代表多用户模式和X窗口模式
    chkconfig 35 httpd.service on或者 利用systemctl命令 systemctl enable httpd.service

  5. 如何把2019年的日历信息以邮件的形式发送给一个指定的用户?
    答:首先制作一个2019年的日历文件,命令如下:
    cal 2019 > 2019.txt
    再把该文件以邮件的形式发送个如a用户,命令如下:
    mail -s sendfile a < 2019.txt

  6. 如何快速查找系统自动识别并加载的设备(如光盘)的设备名称以及在本地挂接点的路径?
    答:当它挂载一个新的磁盘设备后,系统启动时会自动识别它,可以用df命令查看所有当前被挂载的文件系统的信息,包括所识别的文件系统的设备名称,该设备的磁盘空间大小,以及被挂载本地的挂接点。命令如下:
    df -lh

  7. 利用VMware虚拟系统添加并加载新的物理硬盘NTFS分区,然后启动CentOS 7虚拟系统后,下载第三方驱动程序软件ntfs-3g并编译安装,在CentOS 7系统中识别NTFS分区并挂载访问它。
    答:Linux系统也可以访问NTFS类型的文件系统,但必须下载并编译安装第三方的软件包,“NTFS-3G”访问NTFS文件系统的驱动程序,其编译安装方法详见5.2.5小节。通过执行“fdisk -l”命令读取到NTFS设备文件名,然后加载到指定的挂接点,就可以读写Windows系统的NTFS分区文件了。操作过程略。

    6.8 思考与实践

  8. 进入和退出vi编辑器的方法有那些?
    答:进入vi编辑器方法有:

  9. 打开并进入vi编辑器:“vi”

  10. 打开以filename命名的文件,光标停在第n行行首:“vi +n filename
  11. 打开filename文件,光标停在最末行行首:“vi + filename
  • 系统瘫痪后恢复filename文件:“vi –r filename
  • 从文件中找出“词”第一次出现位置,光标停在该行的行首:“vi +/词 filename

退出vi编辑器方法有:

  • 存盘退出:“wq
  • 不存盘退出:“:q!
  1. vi编辑器的工作方式有那些?相互间如何转换?
    答:参照教材图6-3:vi编辑器的三种工作模式转换操作。

  2. 打开vi编辑器,进行如下操作:
    (1) 插入2019年日历,并把该文件命名为2019.txt。
    答:
    用vi打开编辑器,进入新的文件编辑时,转到底行命令,输入命令
    :r !cal 2019
    即插入2019年日历,然后再执行底行命令
    :w 2019.txt
    即把该文件存盘命名为2019.txt。

(2) 把4、5、6月的日历整体向右移动一个制表位。
答:
在命令模式下,把光标移到4、5、6月的行首,执行命令
>>7
即把4、5、6月的日历整体向右移动一个制表位。

(3) 把该日历的标题“2019”改为“2019年全年日历”。
答:
把光标移到日历标题位置,在输入模式下把日历的标题“2019”改为“2019年全年日历”。

(4) 删除1、2、3月的日历,然后予以恢复。
答:
把光标移到1、2、3月的日历行首,执行命令
d8G
其中8为1、2、3月的日历最底行的行号。
按u键予以恢复。

(5) 把7、8、9月的日历整体移到日历的最后面。
答:该操作为把7、8、9月的日历先整体剪切,然后再到日历最底行,再粘贴的过程,操作如下:
先把光标移到7、8、9月的日历的行首,7、8、9月的日历整体占6行,执行剪切命令
"a6dd
即把7、8、9月的日历整体占的6行剪切到a的缓存区中;
把光标移到日历的最底行,执行粘贴命令
"ap

(6) 依次检索字符串“30”,如果每个月的最后一天为“30”,则删除该字符串“30”。
答:该操作为检索命令,再判断每个月的最后一天是否为“30”,再进行删除该字符串“30”,操作如下:
执行字符串检索命令:/30
首先检索到第一个“30”,再判断该月的最后一天是否为“30”,如果是则执行命令d2l
删除该字符串“30”,然后按n键,检索下一个“30”字符串,以此类推进行操作。

(7) 显示行号。
答:执行底行命令
:set number

(8) 在该vi编辑器中统计该文件的大小。
答:在该vi编辑器中统计该文件的大小,首先把该文件进行存盘,比如存盘命名为2019.txt,则可以在vi中执行shell命令
:!wc 2019.txt

  1. 已知有两个文本文件f1和f2,把f1文件中的第5~9行剪切并插入粘贴到f2文件的第3行后,再把f2文件中的所有read字符串全部改写成reading,最后在f1文件后附加上当前时间。利用vi编辑器写出以上操作步骤及其相关命令。
    答:首先用vi打开两个文本文件f1和f2,执行命令如下
    vi f1 f2
    此时编辑为f1下,把光标移到第5行,执行剪切命令
    "b5dd
    然后把剪切后的f1存盘
    :w
    之后转到编辑f2文件下
    :n
    进入到f2下把光标移到第3行,执行粘贴命令
    "bp
    粘贴后,把f2文件中的所有read字符串全部改写成reading,执行全局替换命令
    :g/read/s//reading/g
    最后在f1文件后附加上当前时间,操作如下:
    当前为f2文件的编辑状态下,先把f2存盘,后返回f1的编辑状态下
    :w
    :e#
    进入到f1编辑状态下后,把光标移到最低,执行插入shell命令,插入当前时间
    :r !date

    7.7 思考与实践

  2. Shell脚本的执行都有哪些方法,有何不同?
    答:执行Shell脚本的方式常用的有三种:
    (1) 输入定向的执行方式
    这种方式是用输入重定向方式让Shell从给定文件中读入命令行并进行相应处理。其一般格式如下:
    sh < 脚本名
    (2) 以脚本名作为Shell参数的执行方式
    这种方式是脚本名作为Shell命令的参数,是能将参数值传递给程序中的命令。其一般格式如下:
    sh 脚本名 [参数]
    (3) 改执行权限后直接执行方式

  3. 环境变量与用户自定义变量有可何区别?
    答:Shell环境变量的作用是定制Shell的运行环境,并保证Shell命令的正确执行。它又分成可写和只读两大类。
    用户自定义变量在Shell脚本中使用,它们拥有临时的存储空间,在程序执行过程中其值可以改变。

  4. 什么是管道?如何在命令行下使用管道?
    答:用管道线“|”可以将多个简单的命令集合在一起,用以完成较复杂的功能。管道线“|”前面命令的输出是管道线“|”后面命令的输入。格式为:
    命令1 | 命令2 | 命令3……| 命令n

  5. 什么叫重定向?有哪几种重定向方式?
    答:在默认的情况下,每条命令都是从键盘读取输入,并将输出和错误消息发送到显示屏上。通过使用Linux/Unix中文件重定向命令,可以将命令的输入、输出以及错误消息重定向到其他文件中。
    重定向方式有以下几种:

  6. 输入重定向命令

    1. command < input-file
  7. 输出重定向命令
    1. command > output-file
  8. 输出附加定向命令
    1. command >> output-file
  9. 标准错误重定向命令

    1. command 2> error-file
  10. 编写一个只供a用户使用的一个新命令hello,除了root用户外,其他用户没有使用这个命令的权限,该命令的功能描述如下:查找给定的某用户是否在线。如果在就发一个问候给他。
    答:首先以root用户方式,利用vi编写一个shell脚本,脚本命名为hello,脚本内容为教材中的“例7.7”
    编写完后把该文件更改其宿主为a用户,命令如下:
    chown a:a hello
    再更改其只供文件主使用的权限,命令如下:
    chmod 700 hello
    最后把该文件拷贝到/bin目录中,当成普通命令随时执行。
    cp hello /bin

  11. 编写一个Shell脚本,利用for循环把当前目录下的所有*.c文件复制到指定的目录中,并显示复制后该目录内按文件大小排序的目录文件清单。
    答:

    1. echo "please confirm directory name:"
    2. read dir
    3. if [ -d $dir ]
    4. then
    5. for filename in *.c
    6. do
    7. cp $filename $dir
    8. done
    9. ls -l $dir | sort -n -r -k 5
    10. else echo "bad directory name:$dir"
    11. fi
  12. 编写一个Shell脚本,它把第二个位置参数及其以后的各个位置参数指定的文件复制到第一个位置参数指定的目录中。
    答:

    1. dir=$1
    2. shift
    3. if [ -d $dir ]
    4. then
    5. for i in $*
    6. do
    7. if [ -f $i ]
    8. then cp $i $dir
    9. else echo "invalid file name:$i"
    10. fi
    11. done
    12. else echo "bad directory name:$dir"
    13. fi
  13. 编写一个Shell脚本,根据键盘可以循环输入学生成绩(百分制),并显示对应的成绩标准(及格和不及格),按“q”键退出,按其他键提示重新输入。
    答:
    1. while true
    2. do
    3. echo "please enter the score:"
    4. read x
    5. case $x in
    6. [0-9]|[1-5][0-9]) echo "failed!";;
    7. [6-9][0-9]|100) echo "passed!";;
    8. q) exit;;
    9. *) echo "error!";;
    10. esac
    11. done
  14. 编写一个Shell脚本,完成如下字符图形的输出。
    答:
    1. x=0
    2. while [ $x -lt 10 ]
    3. do
    4. y=" $x"
    5. while [ "$y" -ge 0 ]
    6. do
    7. echo "$y \c"
    8. y=`expr $y - 1`
    9. done
    10. echo
    11. x=`expr $x + 1`
    12. done
    10.编写一个Shell脚本的安装文件Setup.sh,功能描述如下:显示当前目录内文件,如果有phpMyAdmin.tar.gz文件,则接受键盘提示输入y/n,输入y则把该文件拷贝到默认站点主目录下解压缩并改解压缩后的目录名为admin,并提示用户进行http://localhost/admin方式访问。
    答:
    1. ls
    2. f1=phpMyAdmin.tar.gz
    3. if[ -f $f1 ]
    4. then echo "please enter y/n:"
    5. read x
    6. if [ $x = "y" ]
    7. then cp phpMyAdmin.tar.gz /var/www/html
    8. cd /var/www/html
    9. tar zxvf phpMyAdmin.tar.gz
    10. mv phpMyAdmin admin
    11. echo "http://localhost/admin"
    12. else "error!"
    13. fi
    14. else echo "bad file name:$f1"
    15. fi

    8.7 思考与实践

  15. 什么是NFS、SMB?它们之间的区别是什么?
    答:
  • NFS(Network File System)网络文件系统,多用于Unix/Linux操作系统中,它是连接在网络上的计算机之间共享文件的一种方法,在这种系统上的文件就如同在本地计算机上的硬盘驱动器上一样,类似于Windows系统上的“网上邻居”,但NFS文件系统更适合于字符命令方式完成网络之间的文件共享。
  • SMB是Server Message Block的简写,是一个高层协议,这个协议用于共享文件,共享打印机,共享串口等用途。我们通过这个协议实现Linux和Windows操作系统间文件共享。

注意它们之间的主要区别就是NFS是实现Linux系统间的文件共享,而SMB是实现Linux和Windows系统间文件共享。

  1. 说出建立NFS的工作步骤及相关命令。
    答:
    (1) 实现NFS服务功能必须安装相关软件包,并启动该服务。启动NFS服务命令如下:

    1. systemctl start rpcbind
    2. systemctl start nfs

    (2) 主机对所提供的共享文件下放权限。
    在设置了NFS共享目录并正确启动NFS服务后,可以利用showmount命令查看NFS共享目录状态。
    showmount -ae hostname
    (3) 客户机针对主机下放的权限把远程文件挂载到本地目录上。
    扫描某一主机所提供的NFS共享的目录时,就使用命令如下:
    showmount -e IP
    挂载NFS服务器中的共享目录,命令如下:
    mount 主机IP:主机共享目录 本地共享目录

  2. 如何建立个人Web站点。
    答:要开通个人网站功能需要root用户进行配置,其操作步骤如下:
    (1) 配置文件
    (2) 用户创建个人Web站点
    (3) 测试发布的个人站点

  3. FTP服务器的远程访问有哪几种方式,它们的各自特点是什么?
    答:FTP服务器的远程访问方式有三种方式:
    (1) FTP字符终端方式
    (2) 专用客户端软件
    (3) Web方式

  4. Smb和Samba区别是什么?简述在Windows中访问Linux中的共享信息实现的方式及操作步骤。
    答:
    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
    Windows中访问Linux中的共享信息实现的方式是SMB方式,其操作步骤为:
    (1)Linux下安装与启动Smb服务
    (2)Linux下Smb服务的配置,配置共享目录及其权限
    (3)设置samba访问密码
    (4)在Windows系统中访问Linux系统的Samba共享

  5. 已知同一台计算机中一块硬盘安装了两个操作系统Linux和Windows,它们资源共享的方法有几种,举例说明并写出相关的命令操作。
    答:
    同一台计算机中一块硬盘安装了两个操作系统Linux和Windows,它们之间只能同时启动一个操作系统,Linux文件系统可以识别Windows文件系统,而Windows不识别Linux文件系统,所以它们之间的文件资源共享只有一种方法,就是在Linux系统中加载识别Windows分区的文件系统,如果是NTFS分区还要在Linux中安装识别NTFS分区的第三方软件,方法详见第5章的课后习题14的答案。
    如果是两台同时运行的Linux和Windows操作系统,它们之间的共享方法常用FTP或SMB方式。

  6. 在Windows下分别利用远程终端的SSH方式建立基于IP、端口号和域名的三种方式的虚拟主机,对外发布站点,站点的文件在Windows系统下制作完成,然后使用FTP客户端软件方式上传到Linux系统虚拟主机本地路径的站点目录中,并在Windows下的浏览器访问虚拟主机进行测试。答:略

    9.5 思考与实践

  7. 如何实现MySQL数据库的异地访问,写出实现的办法、操作步骤及相关的MySQL客户端程序命令。
    答:
    实现MySQL数据库的异地访问,实现的方法主要在异地客户端安装客户端软件,常用的是字符界面的MySQL命令方式,另一种是图形界面的客户端软件如Navicat for mysql。
    字符终端方式远程访问mysql的登录命令为:
    mysql –h hostname –u username –p

  8. 如何实现MySQL数据库的定期备份。
    答:
    对于MySQL数据库的定期备份方法很多,最简单的方法是利用crontab的守护进程方式进行。
    守护进程的cron作业文件列表参照教材“例5.3”

  9. 如何实现Windows下的MySQL数据库移植到Linux下MySQL数据库中。
    答:Windows下的MySQL数据库移植到Linux下MySQL数据库的方法很多,操作最简单的方法是利用图形界面的客户端软件如Navicat for mysql,登录Windows下的MySQL数据库,导出其sql脚本,再利用该客户端软件登录到Linux下的MySQL数据库,再导入其sql脚本。

  10. MySQL数据库的客户端管理的模式方法主要有哪些,比较它们的性能,应用的客户端软件有哪些?
    答:MySQL数据库的客户端管理的模式方法主要有三种方式
    (1)字符终端命令方式:需要客户端安装MySQL客户端命令软件,该操作通过命令实现,相对专业。
    (2)Web方式:需要MySQL服务器端安装phpMyAdmin服务器端软件,另外需要PHP支持及启动Web服务器。
    (3)图形界面方式:客户端需要安装图形界面软件如:Navicat for mysql,相对操作而言,该方式比较简单。

  11. 利用MySQL数据库的客户端管理软件,建立一个数据库、表、字段及插入记录信息,再利用PHP脚本语言把自己建立的数据库记录信息在浏览器中读出来。答:略

    10.7 思考与实践

  12. 什么是远程管理,远程管理的方式有哪几种,各自的特点是什么?
    答:远程管理是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,控制被控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的。
    远程管理的方式主要有三种:
    (1)字符终端方式的远程管理:客户端安装客户端软件,通过终端命令方式操作,该方式效率高,速度快!如Telnet或SSH。
    (2)Web方式的远程管理:通过服务器端安装Web方式的软件,客户端通过浏览器访问服务器进行远程管理,如Webmin软件。
    (3)图形界面即远程桌面方式的远程管理:需要服务器端启动远程桌面服务,客户端安装并运行远程桌面客户端软件来实现远程桌面,如VNC。
    相对来说SSH效率高、安全、响应快、稳定。而VNC操作方面,但受到网速、用户数量等限制。

  13. 对于专业的网络管理员来说,使用哪一种远程管理方式比较适合。
    答:对于专业的网络管理员来说,SSH等字符终端方式比较适合。

  14. 远程桌面的管理方式,服务器端和客户端需要什么条件。
    答:远程桌面的管理方式中,服务器端首先要安装并启动远程桌面服务,该服务还需要进行相关的配置,然后客户端需要安装相关的远程桌面的客户端软件,来启动运行通过远程主机IP连接远程主机的桌面服务,通过户名和密码的验证登录远程主机桌面系统,如同操作本地主机一样进行控制。

  15. 对采用Telnet、SSH、webmin、VNC四种软件进行Linux操作系统远程管理来说,从下面几个方面讨论它们性能:用户使用的方面性、多用户性、并发性、稳定性、系统响应速度、耗用服务器的资源、安全性等方面进行比较并说明哪一种远程管理方式更卓越。答:略

    11.4 思考与实践

  16. 举例说出你使用的Linux操作系统网络安全管理中都使用了哪些关键技术?
    答:按照教材中介绍的Linux操作系统网络安全管理知识,对比你自己所使用的的Linux操作系统都使用了哪些关键技术。略

  17. 如何清除系统中不用的默认账户?
    答:一般情况下,一个规范的系统提供的系统不用的默认账户都需要删除掉,删除不用的账户有多种方式,一般可以查询/etc/passwd文件可以看到系统中默认的其他账户,如bin账户,删除该账户有两种方法:
    userdel bin或编辑/etc/passwd文件,把不用的专户账户前加上“#”注释掉,使该账户失效。

  18. 如何查看Linux系统上一周pts/0端口中都有哪些用户来访?
    答:显示一周前的所有日志信息
    journalctl --since now --until "one week ago"
    last命令显示登陆日志信息,比如当前日期为2020-1-10,显示上一周pts/0端口中都有哪些用户来访的日志命令为
    last -t 20200117000000 pts/0

  19. 如何查看指定IP地址来访的登录用户信息。
    答:如果指定的IP为192.168.1.100,则查看指定IP地址来访的登录用户信息命令为
    last -a | grep 192.168.1.100

  20. 日志变化写入动态检测实践:同时开两个字符命令终端窗口,分别执行不同的命令,看A窗口中的日志信息变化情况。
    A窗口执行如下命令:
    [root@localhost ~]# tail -f /var/log/messages # 实时监测messages日志文件
    B窗口执行如下命令:

    1. [root@localhost ~]# systemctl restart firewalld # 重新启动防火墙
    2. [root@localhost ~]# su wdg # 转到wdg用户环境下
    3. [wdg@localhost ~]$ init 5 # 切换到图形模式

    答:略
    6. 防火墙的功能有哪些?
    答:
    (1) 防火墙是网络安全的屏障
    (2) 防火墙可以强化安全策略
    (3) 对网络存储和访问进行监控和审计
    (4) 防止内部信息的外泄

  21. 举例说明在你使用的Linux操作系统中的防火墙所使用的设计策略。
    答:略
    8. 如何把某一个服务加设到Linux防火墙中,作为信任的服务?
    答:
    首先作为信任的服务,就是允许该服务通过防火墙,Linux中允许某一个服务通过防火墙有多种方法:
    例如字符终端方式允许mysql服务通过防火墙,其命令为:
    firewall-cmd --enable service=mysql
    或者开放ssh的端口号,允许mysql服务通过防火墙,其命令为:
    firewall-cmd --add-service=mysql

    firewall-cmd --add-port=3306/tcp

    12.7 思考与实践

  22. Linux下的开发工具有哪些,集成开发平台都有哪些?
    答:Linux下的开发工具以及集成开发平台很多,常用的有
    编辑工具:vi、gcc等;编译工具:make等;调试工具:gdb等。
    集成开发平台:Eclipse、Kylix等。

  23. 在Linux下如何开发、调试C、C++、Java程序?
    答:略,参照教材
    3. 编写一个C语言程序,出现错误时利用GDB进行调试,说出程序调试工具GDB的一般使用步骤及方法。
    答:略,参照教材
    4. Linux下编程都用到哪些协议?Socket原始套接字有哪些操作函数,有哪些作用?
    答:略,参照教材
    5. 嵌入式系统有哪些应用领域?嵌入式软件开发主要分几个步骤?
    答:

  • 嵌入式技术有着广泛的应用前景,它可以渗透于人们生活和工作的诸多领域,如智能公路、虚拟机器人、家政系统、工业控制、电子商务、数码设备、卫星定位及环境工程等等。
  • 嵌入式软件开发主要分如下几个步骤:建立交叉开发环境、交叉编译和连接、重定位和下载、联机调试。

6. Linux内核都有哪些结构,作用各是什么?
答:Linux 内核的结构分成 3 层,其结构及作用主要有:
(1) 系统调用接口

  • 系统调用接口在最上面,实现了一些基本的功能,例如 read 和 write。

(2) 内核代码

  • 内核代码位于系统调用接口下面,它可以更精确地定义为独立于体系结构的内核代码。这些代码是 Linux 所支持的所有处理器体系结构所通用的。

(3) 依赖于体系结构的代码

  • 这些代码在内核空间的最下面,构成了通常称为 BSP(Board Support Package)的部分。这些代码用作给定体系结构的处理器和特定于平台的代码。
  • Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。