中国矿业大学LINUX实验报告.docx

上传人:b****3 文档编号:11223597 上传时间:2023-05-29 格式:DOCX 页数:53 大小:1.23MB
下载 相关 举报
中国矿业大学LINUX实验报告.docx_第1页
第1页 / 共53页
中国矿业大学LINUX实验报告.docx_第2页
第2页 / 共53页
中国矿业大学LINUX实验报告.docx_第3页
第3页 / 共53页
中国矿业大学LINUX实验报告.docx_第4页
第4页 / 共53页
中国矿业大学LINUX实验报告.docx_第5页
第5页 / 共53页
中国矿业大学LINUX实验报告.docx_第6页
第6页 / 共53页
中国矿业大学LINUX实验报告.docx_第7页
第7页 / 共53页
中国矿业大学LINUX实验报告.docx_第8页
第8页 / 共53页
中国矿业大学LINUX实验报告.docx_第9页
第9页 / 共53页
中国矿业大学LINUX实验报告.docx_第10页
第10页 / 共53页
中国矿业大学LINUX实验报告.docx_第11页
第11页 / 共53页
中国矿业大学LINUX实验报告.docx_第12页
第12页 / 共53页
中国矿业大学LINUX实验报告.docx_第13页
第13页 / 共53页
中国矿业大学LINUX实验报告.docx_第14页
第14页 / 共53页
中国矿业大学LINUX实验报告.docx_第15页
第15页 / 共53页
中国矿业大学LINUX实验报告.docx_第16页
第16页 / 共53页
中国矿业大学LINUX实验报告.docx_第17页
第17页 / 共53页
中国矿业大学LINUX实验报告.docx_第18页
第18页 / 共53页
中国矿业大学LINUX实验报告.docx_第19页
第19页 / 共53页
中国矿业大学LINUX实验报告.docx_第20页
第20页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

中国矿业大学LINUX实验报告.docx

《中国矿业大学LINUX实验报告.docx》由会员分享,可在线阅读,更多相关《中国矿业大学LINUX实验报告.docx(53页珍藏版)》请在冰点文库上搜索。

中国矿业大学LINUX实验报告.docx

中国矿业大学LINUX实验报告

 

中国矿业大学计算机学院

2013级本科生课程报告

 

课程名称Linux操作系统

报告时间2016.11.10

学生姓名

学号

专业

任课教师王虎

 

任课教师评语

任课教师评语(①对课程基础理论的掌握;②对课程知识应用能力的评价;③对课程报告相关实验、作品、软件等成果的评价;④课程学习态度和上课纪律;⑤课程成果和报告工作量;⑥总体评价和成绩;⑦存在问题等):

成绩:

任课教师签字:

年月日

摘要

Linux作为现在的主流系统之一,开放性和可扩展性有目共睹,本报告从Linux的基础命令和基础操作延伸到Linux的权限设置,除此之外,还在已经有的编程基础上研学了Linux的Shell编程和c语言编程,并通过实践的方式亲身体会,基本上主要的命令都已给出实验的结果截图和详细解释,以增强对Linux的理解。

本报告共分为五章节,第一章节主要介绍和叙述了Linux的几个基本命令,并上手实践给出实践结果;第二章节主要介绍了Linux系统下的Shell编程,并尝试自己编写Shell脚本,并在Linux系统上运行;第三章节主要介绍了Linux的权限管理机制,包括基本权限和特殊权限的机制,并给出相关命令进行演示,相关截图都已展示在报告上;第四章节介绍了Linux系统下的c语言编程,在之前已有的编程基础上,更加深刻地理解c语言编程的核心,并且与Linux系统相结合,发挥更大的作用;第章节作为扩展章节,主要介绍了Linux的发送邮件服务器Postfix的安装和配置,并进行测试。

关键词:

Linux;Shell;权限管理;c语言;Postfix

1Linux命令

1.1建立目录命令

1.1.1命令介绍

建立目录命令:

mkdir–p[目录名]

#即会建立一个新的名为“目录名”的目录

在这里引入其他两个命令的介绍:

cd[目录名]打开一个名为“目录名”的目录;

ls列出当前目录下的文件。

1.1.2实验结果截图

首先我们用ls命令当前目录下的文件,然后用mkdir-pnew命令在家目录下建立一个名为“new”的目录;用mkdir–pnew2/a建立一个目录名为“new2”的目录下的目录名为“a”的目录,然后用ls命令再次列出当前目录下的文件,可以看到new目录和new2目录已经建立成功,然后用cdnew2命令打开new2目录,再使用ls命令列出new2目录下的文件,可以看到a目录也建立成功。

1.2删除目录命令

1.2.1命令介绍

rmdir[目录名]

#这个命令只能删除空目录。

rm–rf[文件或目录]

选项:

-r#删除目录

-f#强制

无论是不是空目录,都可以用这个命令删除。

1.2.2实验结果截图

这里我们使用1.1建立目录命令已经建好的两个目录,new目录和new2目录,new目录为空目录,new2目录下有个名为“a”的目录;则使用rmdirnew命令可以成功删除new目录,而当使用rmdirnew2命令删除new2目录时则失败,因为new2目录不是空目录,然后我们使用rm-rfnew2命令可以成功删除new2目录。

1.3文件搜索命令

1.3.1命令介绍

在这里介绍两个搜索命令。

一个是locate,一个是find。

locate文件名

#在后台数据库中按文件名搜索,搜索速度快。

updatedb

#更新数据库

在这里是在数据库中进行搜索,但是数据库不是实时更新的,如果要立即搜索新建的文件需要先用updatedb更新数据库,然后用locate文件名进行搜索。

find[搜索范围][搜索条件]

#依据搜索范围和搜索条件进行搜索文件

这个命令可以指定范围和搜索条件,确定更小的范围和更精确的搜索条件可以加快搜索效率[1]。

搜索条件有:

-name文件名#按照文件名来查找文件

-iname文件名#不区分大小写

-user文件所有者#按照所有者搜索

-group文件所属组#按照文件所属组来查找文件

-perm文件权限#按照文件权限来查找文件

-prune指定目录#不在当前指定目录中寻找

1.3.2实验结果截图

为了避免权限的问题,我们使用超级用户root来进行操作。

首先在家目录下建立两个新的目录:

new3目录和new4目录。

然后我们需要用updatedb来更新数据库,然后使用locatenew3来搜索new3的位置,系统马上就反应过来,并且给出new3的位置:

/home/new3,与我们之前建立的位置一致;然后我们使用find命令来寻找new3目录,可以发现,如果不指定查找条件的话,是无法进行查找的,然后我们使用-name搜索条件来按照文件名进行搜索,输入命令find-namenew3命令来查找new3目录,find命令的反应时间相比locate要长很多,但是当指定了目录/home后(find/home-namenew3)查找new3目录,反应时间大大缩短,所以指定更小的范围可以提高搜索的效率,Linux也是支持模糊查询的,我们使用“new*”来进行模糊查询,输入find/home-name“new*”,new3和new4目录都被查找到。

1.4压缩和解压缩命令

1.4.1命令介绍

这里介绍几个常用的压缩和解压缩命令[2]。

(1)gzip[选项][文件名]

#压缩成文件名为.gz的压缩文件

最简单的可以直接用gzip文件名来进行压缩;而如果希望压缩出最小的文件,则加一个-9选项,比如gzip-9[文件名]。

在这种情况下,压缩后的源文件是不会被保留的,如果要保存源文件,需要使用这样的格式,gzip-c源文件>压缩文件

这样源文件会被保留,gunzip是一样的用法,可以保留源文件。

gunzip[选项][文件名.gz]

#将.gz压缩文件解压

最简单的使用方法为:

gunzip文件名.gz即可进行解压缩。

gunzip甚至可以去解压缩其它压缩程序如Compress或ZIP压缩出来的文件,但不建议这样做。

(2)tar[选项][打包文件名][文件]

#打包为.tar的打包文件或解开

由于tar的选项很多这里不做太多介绍,可以自行查阅帮助文件,这里简单介绍常用的压缩和解压缩命令。

tarzxvf文件名.tar

#解压后缀名为tar的文件

tarczvf打包文件名.tar要打包的文件名

#打包文件

(3)compress[选项][文件名]

#压缩文件名为.Z的压缩文件

uncompress[选项][文件名.Z]

#将.Z压缩文件解压

(4)zip[选项][文件名.zip][文件名]

#打包并压缩成文件名为.zip的文件

unzip[选项][文件名.zip][文件名]

#将.zip压缩文件解压

(5)bzip2[选项][文件名]

#压缩成文件名为.bz2的压缩文件

bunzip2[选项][文件名.bz2]

#将.bz2压缩文件解压

1.4.2实验结果截图

这里我们在家目录下建立了一个abc.abc的文件,然后使用gzip-9abc.abc压缩这个文件,然后我们重新列出该目录下的文件,发现源文件已经被删除了,只留下了压缩后的文件:

abc.abc.gz,然后我们使用gunzipabc.abc.gz解压缩压缩包,成功之后,我们发现压缩包也已经被删除,只剩下解压缩后的文件。

如果我们使用-c选项并进行重输出操作,则可以保存源文件,并改变输出后的压缩包的名字,解压缩也是一样的原理,源文件也会被保存并改变输出文件的名字。

这里我们新建了一个名为“c.c”的文件在家目录下,然后用tarczvf/tmp/cl.tarc.c命令将该文件打包压缩并输出到tmp目录中,命名为cl.tar,然后我们进入tmp目录使用ls命令查看该目录下的文件,发现刚才的命令已经成功,然后我们使用tarzxvfcl.tar将cl.tar压缩包解压,解压后源文件c.c出现在tmp目录中。

由于其他压缩命令大同小异在这里不做过多演示。

1.5切换用户命令

1.5.1命令介绍

这里介绍切换用户的命令——su命令[3]。

su[-fmp][-ccommand][-sshell][--help][--version][-][USER[ARG]]

-f,–fast:

不必读启动文件(如csh.cshrc等),仅用于csh或tcsh两种Shell。

-l,–login:

加了这个参数之后,就好像是重新登陆一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。

如果没有指定USER,缺省情况是root。

-m,-p,–preserve-environment:

执行su时不改变环境变数。

-ccommand:

变更账号为USER的使用者,并执行指令(command)后再变回原来使用者。

–help显示说明文件。

–version显示版本资讯。

USER:

欲变更的使用者账号。

ARG:

传入新的Shell参数。

在这里简单介绍一个指令:

su[用户名]即可切换到指定用户名,但必须输入正确命令后才可以,除此之外,当执行一些必须系统管理员才能够执行的命令时,如1.3中介绍的updatedb更新数据库命令,可以使用sudo命令名称来实现命令。

1.5.2实验结果截图

我们已经在root用户下,如果我们使用su命令切换到一个不存在的用户ming,则会提示该用户不存在,当su命令跟上一个存在的用户名时,则会直接切换到该用户下,但从普通用户mingsha切换到超级用户root下时,需要输入密码,密码正确才可以切换成功。

1.6编辑文件命令

1.6.1命令介绍

在这里只简单介绍几个常用的vi命令。

vifilename

#编辑一个新文件或编辑一个已经存在的文件

#进入vi后光标停留在文件的第一行行首

vi+nfilename

#进入vi后光标位置为第n行

vi+filename

#进入vi后光标位置为文件尾行

关于vi的退出:

先按键盘上的esc键,然后输入:

即可进入底行模式,输入wq即可保存退出,而只输入w会保存但不会退出,只输入q不保存文件,退出vi,输入wfile会修改另外保存到file中,不退出vi。

1.6.2实验结果截图

首先我们在home目录下新建了一个a.a文件,然后输入via.a进行编辑。

编辑界面如上图所示,一开始是什么都没有的,因为是个空文件,

我们输入HelloWorld并按esc键后输入:

wq保存退出,之后会回到一开始的命令行界面。

然后我们使用cata.a命令显示a.a这个文件的内容。

发现与我们刚才输入的内容是一致的,然后我们再次打开a.a这个文件,

修改内容后另存到b.a文件中,然后使用

退出(使用q会报错,提示没有文件内容被改变请使用q!

)。

然后我们使用ls查看目录下的文件,发现多了一个b.a文件即我们刚才另存为的那个文件,使用cata.a查看文件发现文件内容没有改变,使用catb.a查看文件,发现文件内容与我们刚才保存的一致。

1.7总结与体会

作为对Linux系统的初次接触,还是收获很多的,从一开始的VMware虚拟中CentOS7.0的安装到后面的慢慢试验,也是经历了一个比较漫长的过程,好在在这个过程中,学会了Linux操作系统的基本操作,学会用最基本的“命令行语言”与系统进行对话而不仅限于大众使用的图形界面,对我个人而言,也是一个不小的进步。

 

2Shell编程

2.1Shell简介

Linux的Shell是用户和系统内核之间的接口程序,它在用户和系统之间架起了一座桥梁,使用户可以方便地实用操作系统[4]。

Shell是一种具备特殊功能的程序,它是介于使用者和UNIX/Linux操作系统核心程序(kernel)间的一个接口。

Shell是命令解释器,同时也是高级编程语言。

Shell作为命令解释器,它通过提示符响应并处理用户在命令行界面上输入的命令;而作为一门编程语言,它们将处理存放在Shell脚本文件中的命令。

如其它编程语言一样,Shell也有变量和控制流命令,可以编写Shell脚本来执行用户的指令,还可以编写执行用户指令的Shell脚本,这些脚本可以是包含复杂命令的单行脚本,也可以是更长的脚本。

长的复杂的Shell脚本不仅仅运行其他程序,其本身就是程序[5]。

2.2Shell脚本实例

2.2.1Shell脚本的编写和执行

简单的步骤如下:

(1)使用“touchShell脚本名字.sh”生成Shell脚本文件。

(2)使用“viShell脚本名字.sh”打开Shell脚本文件。

(3)输入Shell脚本内容后保存退出。

(4)Shell脚本有两种运行方式:

①直接“bashShell脚本名字.sh”即可运行;②为Shell脚本提供执行权限:

chmod755Shell脚本名字.sh,即所有者有读、写、执行的权限,所属组和其他人有读和执行的权限,然后./Shell脚本名字.sh即可运行。

2.2.2简单的随机加法题目生成器

(1)源代码

#!

/bin/bash

a=$RANDOM#生成两个初始随机数

b=$RANDOM#RANDOM的范围是[0,32767]

c=0#操作码变量

a=$(expr$a%100)#使随机数的范围在0~99以内

b=$(expr$b%100)

echo"Pleaseinputrequestcode(ifitisnotanumberthisshellwillend):

"#提示信息

readc#读入操作码

while[["$c"=~^[1-9]+$]]#操作码是数字时进入循环体

do

answer=$(expr$a+$b)#计算a+b的值

echo-n$a#并输出在屏幕上

echo-n"+"

echo-n$b

echo"=?

"

echo"Pleaseinputyouranswer:

"#输出提示信息

readuser_answer#读入用户答案

until[$user_answer-eq$answer]#如果用户答案与刚才计算的a+b的值

do#不相等则提示错误并要求重新输入

echo-e"YouranswerisFalse!

\nPleaseinputyouranswer:

"

readuser_answer#重新读入用户答案

done#echo-e表示读到其中的\n时换行

echo-e"YouranswerisRight!

\nPleaseinputrequestcode:

"

readc#重新读入操作码

if[["$c"=~^[1-9]+$]]#当操作码是数字时重置加法器的两个

then#数

a=$(expr$RANDOM%100)

b=$(expr$RANDOM%100)

fi

done

###########################################################

#代码说明:

#输入操作码为任意数字时可以继续运行程序,

#当操作码不是数字时终止程序;

#会生成两个0~99的数要求进行加法运算

#当提示“Pleaseinputyouranswer:

”时请输入数字

#若输入的结果正确,则会提示再次输入操作码

#当操作码是数字时,会重新生成两个新的数

#若输入的结果错误,会提示错误并要求重新输入直到输入正确为止

(2)实验结果截图

我们使用bashtest1.sh运行这个Shell脚本文件,一开始生成了两个数,要求输入答案,而我们一开始输入的答案是错误的,这时候题目要求重新输入,如果输入还是错的,则被要求继续重新输入,直到输入正确时,会提示正确,并要求再次输入操作码,我们在这里再次输入数字,则程序生成了两个新的随机数要求我们进行计算,这时我们直接输入正确答案,答案通过则要求重新输入操作码,我们输入非数字的字符串,则程序退出。

2.2.3用户信息显示器

(1)源代码

#!

/bin/bash

user=`whoami`#反引号里面存的是系统命令,则将系统

case$userin#命令后的信息存入user变量

root)#case进行多分支选择,已知该系统上有

echo"Helloroot!

";;#两个用户root和mingsha,不同用户不

mingsha)#同的提示信息

echo"Hellomingsha!

";;

*)

echo"hello$user,welcome!

"#若该用户不在我们设定好的列表中,则

;;#直接打印该用户的姓名

esac

echo"Currenttime:

`date`"#利用反引号+系统命令输出当前时间

echo"Yourmachinename:

`uname-n`"

#输出当前的机器名

echo"ThenameofyourOperationSystem:

`uname-s`"

#输出当前操作系统的名字

echo"TheversionofyourOperationSystem:

`uname-r`"

#输出当前操作系统的版本

echo-e"Allprocessesrunningbyyou:

\n`ps-u$user`"

#输出当前用户运行的所有进程

echo"GoodBye!

"#输出提示结束信息

(2)实验结果截图

由于进程太多,在截图中不能一一列出,在这里我们从root用户切换到mingsha用户,可以看到信息都被完整、正确地显示出来了。

2.2.4批量新建/删除目录脚本

(1)源代码

#!

/bin/bash

cd/home/test3#事前需要打开要建立目录的路径

requestcode=0;#初始化操作码

echo"Pleaseinputrequestcode:

"#提示输入操作码

readrequestcode;#读入操作码

 

if[[requestcode-eq1]]#若操作码为1,则新建目录

then

max=0

echo"Pleaseinputmax:

"#输入需要新建的目录的数量

readmax

for((i=1;i<=max;i=i+1))#从1循环到数量值

do

mkdir-p/home/test3/user$i

#使用mkdir命令新建目录

chmodo-xuser$i#将目录权限设置为rwxr-xr--

done

else[[requestcode-eq2]]#如果操作码为2

rm-rf/home/test3/*#删除该目录下的所有目录

fi

###########################################################

#代码说明:

#操作目录是/home/test3

#操作码为1时新建目录,操作码为2时删除目录

#新建目录会要求输入max,即需要新建多少个目录,请输入数字

#新建的目录权限均为rwxr-xr-

#命令执行完一次后,Shell脚本退出

#删除目录时会删除/home/test3下所有目录

(2)实验结果截图

如图所示,我们一开始显示/home/test3目录下的所有内容,发现为空,然后我们为test3.sh赋权限,并执行,一开始输入1,则我们输入max为8,然后进入/home/test3目录,发现已经有8个目录生成,并且权限为rwxr-xr--,然后我们再次执行test3.sh,则发现/home/test3目录下的目录都已经被完全删除。

2.3总结与体会

这是我第一次接触Shell脚本,也是我第一次尝试去编写Shell脚本并执行它,通过Shell脚本的编程,本人更进一步地熟悉了Linux系统的操作,并将命令在Shell脚本中体现,本着人性化的想法,更加智能、便捷地编写程序,方便用户。

总体上来说,在前面已经学习了多门语言的基础上,掌握Shell脚本的编程并不难,如果可以长期练习和提高,应该可以得心应手。

 

3Linux权限管理

3.1相关权限简介

3.1.1基本权限

Linux系统中的每个文件和目录都有访问许可权限,用来确定谁能通过何种方式对文件和目录进行访问和操作。

文件或目录的访问权限分为只读、只写和可执行三种[6]。

有三种不同类型的用户可对文件或目录进行访问:

文件所有者、同组用户、其他用户。

所有者一般是文件的创建者,所有者能允许同组用户有权访问文件,还能将文件的访问权限赋予系统中的其他用户。

在这种情况下,系统中每一位用户都能访问该用户拥有的文件或目录[6]。

每一个文件或目录的访问权限都有三组,每组用三位表示,分别文件属主的读、写和执行权限;和属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限[6]。

举例来说,

drwxr-xr--

这10个字符确定不同用户能对文件干什么:

第一个字符代表文件(-)、目录(d)、链接(l);其余字符每3个一组即(rwx),分别代表读(r)、写(w)、执行(x)。

其中,这10个字符,代表这是个目录(d)。

而这个目录对于文件属主来说是可读、可写、可执行(rwx)的;对于同组的用户来说,是可读和可执行(r-x);对于其他用户来说,是可读(r)的。

(换算成数字为r--4;w--2;x--1)

而rwx这三个权限对于文件和目录的作用是不同的,其中:

(1)对于文件而言:

r为读取文件内容(catmoreheadtail);w为编辑、新增、修改文件内容,但是不能够删除这个文件(viecho);x代表可执行这个文件。

(2)对于目录而言:

r为可以查询目录下文件名(ls);w为具有修改目录结构的权限,如新建、删除、重命名、剪切文件或目录(touchrmmvcp);x为可以进入目录(cd)。

对文件来讲,最高权限是x;对目录来讲,最高权限是w。

关于文件的默认权限:

用666减去umask值即可得到默认权限。

对于目录的默认权限:

用777减去umask值即可得到默认权限。

3.1.2特殊权限

(1)ACL权限

ACL是AccessControlList的缩写,主要目的是在提供传统的owner、group、others的r、w、x权限之外的局部权限设定。

ACL可以针对单个用户,单个文件或目录来进行r、w、x的权限设定,特别适用于需要特殊权限的使用情况[7]。

ACL主要针对用户(user)、用户组(group)以及掩码(mask)方面来控制权限[7]。

简单讲,ACL可以设置特定用户或用户组对于一个文件/目录的操作权限[7]。

(2)sudo权限

sudo通过更严谨的管理,为用户分配可通过root权限运行某些特定的命令或软件,避免直接将root用户账号的密码公开给普通用户。

sudo的操作对象是系统命令。

(3)文件特殊权限

s或S(SUID,SetSUID):

可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系统资源。

SetUID权限只在该程序执行过程中有效,也就是说身份改变只在该程序执行过程中有效。

s或S(SGID,SetGID

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2