Linux系统安装与实验基础

Posted timeㄨ 若情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统安装与实验基础相关的知识,希望对你有一定的参考价值。

Linux系统安装与使用基础


写在最前面:本文是Linux 的基础操作。大家要明白的一个东西是:路径。不管是文件路径,还是目录路径,都要在大脑中有一个架构,在终端输入指令后,要明白是对哪里进行操作,你目前在哪个目录下(使用 pwd 可以查看当前目录)。Linux的终端命令操作是他的特色,也挺好用的。还有就是,在输入命令行的时候,要注意空格,在之后的代码中, 可能体现的不是很明显,你需要仔细观察 ,空格是否存在。在之后的学习中,出现不明白的东西,可以私信我,咱们一起进步呀!当然首先推荐大家去百度搜一下,会比较快的得到答案并解决。接下来,就请开始学习吧!

1.目的与要求

(一) 目的
本实验的目的是使学生学会Linux的安装、配置和基础使用;掌握Linux常用命令的格式和操作以及系统管理、设备管理、用户管理和文件存取权限管理的基本方法;熟悉编译工具GCC的作用,学会在Linux环境下进行工作。
(二) 要求
熟悉并完成Linux(CentOS 7)的安装和基本配置的操作过程;

  1. 了解Linux的基本操作命令的格式,掌握基本操作命令功能和使用;
  2. 了解Linux的文本编辑器vi的3种工作模式,掌握3种工作模式的转换并学会利用vi进行文本编辑;
  3. 掌握Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
  4. 熟悉编译工具GCC的作用和基本使用方法。

2.实验内容

  1. 安装并配置Linux(CentOS 7)操作系统。
    要求将主机名设置为用户姓名的全拼,并建立一个用户名为姓名简拼的普通用户。
  2. 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。
    1)首先查看用户配置文件/etc/passwd中普通用户的记录。
    2)在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。
    3)然后在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”(例如“rj1701zhangsan”)的子目录下的一个名为“姓名”(例如:“zhangsan”的文件中,然后显示该文件的内容。
    hello.c源程序代码:
    #include <stdio.h>
    main()
    {char name[20];
    printf(“Please input your name:”);
    scanf(“%s”,name);
    printf(“Welcome %s!\\n”,name);
    reture 0;}
  3. 控制文件和目录的存取权限。
    1)将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。
    2)使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。
    3)通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。
    比较链接文件和被链接文件有什么不同?文件的硬链接数是多少?执行hello.link的执行结果是什么?
    4)改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么?
    5)删除hello.link,这样做也删除了hello文件吗?为什么?
  4. 掌握Linux下存储设备的挂载与卸载的方法。
    1)建立挂载点/mnt/usb。
    2)使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
    3)使用mount命令手工挂载本地磁盘(U盘)。
    4)用ls -l查看U盘中文件的详细信息。
    5)使用umount命令手工卸载本地磁盘(U盘)。

3.小结(回答问题)

Centos 7 虚拟机的安装

虚拟机安装Linux 系统全家桶(百度网盘链接)
提取码:zr0e

1.创建主机名和用户名
@ 前面是用户名 后面是主机名

修改主机名 在超级管理员下:hostnamectl set-hostname 修改的名字
修改用户名 在超级管理员下,要修改的用户不得登录,否则失败

usermod -u newname oldname
用户管理 (root 权限下)
创建用户 : useradd [ 参数值 ] 用户名
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
删除用户: userdel [ 参数值 ] 用户名
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。

pwd 显示当前目录的绝对路径

[lsf@lishuaifu ~]$pwd

2. 熟悉Linux操作系统vi编辑器、编译工具GCC的使用并掌握文件、目录基本操作命令的使用。

2.1 首先查看用户配置文件/etc/passwd中普通用户的记录。

[lsf@lishuaifu ~]$ vim /etc/passwd


2.2 在用户主目录下建立一个名字为“班级姓名”(例如“rj1701zhangsan”)的子目录,使用ls显示该子目录的详细信息。

创建目录——mkdir
a) mkdir test 在当前目录下创建一个名为test的目录
b) mkdir test1 test2 同时创建两个目录
c) mkdir ./test/test3 在指定目录下创建一个名为test的目录
创建文件——touch
a) touch test001.txt 创建一个空文件
b) touch text002 创建一个空文件(没有后缀)
c) touch ./test/test003.txt 在指定目录下创建文件

语法: mkdir  目录
[lsf@lishuaifu ~]$ mkdir rj2026lishuaifu
[lsf@lishuaifu ~]$ ls -l  查看是否创建成功


2.3 在用户主目录下使用vi编辑器编辑一个C语言源程序hello.c,并使用编译工具GCC编译该源程序,可执行文件的文件名为hello,运行编译成功的可执行程序hello,并将运行结果重定位到“班级姓名”的子目录下的一个名为“姓名”

[lsf@lishuaifu ~]$ vim hello.c

使用vi 编辑器 创建一个hello.c 文件

gcc 编译器

使用vim建立一个“main.c”的文件
在终端输入命令:gcc main.c。这时会生成一个名为a.out的可执行文件。
若是想指定文件名,则可以通过命令:gcc -o main main.c,把可执行文件名修改为main,并通过./main来查看运行结果

gcc  hello.c  ///编译生成一个a.out 可执行的文件。
语法 :  gcc  -o  修改名  原文件名
gcc -o hello a.out     ///修改文件名

vim编辑器介绍

a) 可以分为三种状态:命令模式(command mode),插入模式(insert mode),底行模式(last line mode)
i. 命令模式:控制屏幕光标的而移动,字符,字或行的删除,移动复制某区,进入插入模式,过着底行模式
ii. 插入模式:进行文字输入,按【ESC】回到命令模式
iii. 底行模式:将文件保存或者退出vi
Vi基本操作
a) 输入 vi +文件名,进入vi全屏编辑画面:$ vi myfile 刚进去是命令模式,不可以按动方向键移动光标,按【 i 】进入插入模式,才可以进行文字输入
b) 删除文字,在插入模式下,不能删除,需要按下【ESC】进入命令模式,才可以进行删除操作
c) 退出vi 并保存文件 在命令行模式下,按下【:】进入底行模式
i. :w filename (将文件以指定的文件名保存filename)
ii. :wq 保存并退出
iii. :q! 不保存并退出
命令行模式功能键
a) 插入模式
i. 按【 i 】进入后,光标在当前位置
ii. 按【 a 】进入后,光标在当前的下一个位置
iii. 按【 o 】进入后,插入新的一行
b) 插入模式转命令模式 【ESC】
c) 移动光标 方向键即可
i. 按数字「0」:移到文章的开头。
ii. 按「G」:移动到文章的最后。
iii. 按「$」:移动到光标所在行的"行尾"。
iv. 按「^」:移动到光标所在行的"行首"
d) 删除文字
i. 【 x 】 删除后一个字符 相当于 delete
ii. 【 X 】 删除前一个字符,相当于 返回键
iii. 【 dd 】删除行
e) 复制
i. 【 yw 】光标所在的地方到字尾 复制到缓冲区
ii. 【 yy 】 光标所在行复制到缓冲区
iii. 【 p 】 将缓冲区的文字,粘贴到光标所在的位置
f) 替换
i. 【 r 】替换光标所在的字符
g) 撤销
i. 【 u 】恢复上一次操作

运行hello 文件

./hello    /// 运行程序

语法 : 文件名 > 目标文件 
./hello > /home/lsf/rj2026lishuaifu/lishuaifu   // 重定向

将hello运行的结果重定向到指定目录文件中。

使用vim 编辑器 查看/home/lsf/rj2026lishuaifu 中的 lishuaifu 文件。

4.控制文件和目录的存取权限。

4.1 将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到rj1701zhangsan子目录中,并分别命名为zhangsancal和zhangsancat。使用ls查看rj1701zhangsan子目录中的各个文件的详细信息。

语法:  cp   文件名 /目录  指定文件夹/目录
[lsf@lishuaifu ~]$ cp /usr/bin/cal /home/lsf/rj2026lishuaifu  // 复制文件cal
[lsf@lishuaifu ~]$ cp /usr/bin/cat /home/lsf/rj2026lishuaifu	//复制文件cat
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu  // 进入rj2026lishuaifu 目录下
[lsf@lishuaifu rj2026lishuaifu]$ ls -l		//查看该目录下的文件
总用量 96
-rwxr-xr-x. 1 lsf lsf 33528 10月 30 15:35 cal  		//复制成功
-rwxr-xr-x. 1 lsf lsf 54080 10月 30 15:36 cat		//复制成功
-rw-rw-r--. 1 lsf lsf    41 10月 30 15:29 lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$ sudo mv cal lishuaifucal  // 修改文件名
[sudo] lsf 的密码:
[lsf@lishuaifu rj2026lishuaifu]$ sudo mv cat lishuaifucat		//修改文件名
[lsf@lishuaifu rj2026lishuaifu]$ ls -l				//查看该目录下的文件
总用量 96
-rwxr-xr-x. 1 lsf lsf 33528 10月 30 15:35 lishuaifucal
-rwxr-xr-x. 1 lsf lsf 54080 10月 30 15:36 lishuaifucat
-rw-rw-r--. 1 lsf lsf    41 10月 30 15:29 lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$


4.2使用长列表命令ls查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与rj1701zhangsan子目录中的文件进行比较。

语法: comm  -1  文件   文件
[lsf@lishuaifu ~]$ comm -1 /usr/bin/cal  /home/lsf/rj2026lishuaifu/lishuaifucal
[lsf@lishuaifu ~]$ comm -1 /usr/bin/cat  /home/lsf/rj2026lishuaifu/lishuaifucat


4.3通过建立硬链接在rj1701zhangsan子目录中以hello.link的文件名来运行文件hello。

语法: ln 被链接文件  链接文件 (没有文件就自动新建)
//建立硬链接 l
[lsf@lishuaifu ~]$ ln /home/lsf/hello /home/lsf/rj2026lishuaifu/hello.link
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu
[lsf@lishuaifu rj2026lishuaifu]$ ./hello.link
Please input your name:lishuaifu
Welcomelishuaifu!

硬链接与原文件是分居于不同或相同目录下的的dentry而已,它们指向同一个inode,对应于相同的磁盘数据块(data block),具有相同的访问权限、属性。
链接文件与被链接文件 ,只是名字不同而已,公共用同一个inode,共享同一份数据
链接数都是 :2
执行结果是:和运行 hello 文件相同


4.4改变文件hello.link的权限,使拥有者只具有读的权限。试着再运行hello.link,它运行了吗?为什么?

修改文件权限

chmod XXX filename 只读 100 只写 010 可执行 001 二进制数换成十进制

a) chmod 777 xxxx指令,这里有3个7,但是每个7的含义是不同的。7的二进制形式为111,表示可读可写可执行,第1个7表示文件对于文件所有者来说可读可写可执行;第2个7表示文件对于文件所有者所在组来说可读可写可执行;第3个7表示文件对于其他身份的用户来说可读可写可执行。也就是说,通过chmod 777,文件就没有了读写执行权限限制了。
b) 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
i. chmod -R 421 oldDir5
c) 修改文件所有者 chown 用户名 文件名/目录名
i. 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
chown -R 用户名 目录名
d) 修改文件所属组 chgrp 用户名/组名 文件名/目录名
i. 将该目录下的所有子目录或文件权限一并处理。 使用 -R 递归处理
ii. chgrp -R 用户名/组名 目录名

//修改文件权限 chmod 
[lsf@lishuaifu ~]$ cd /home/lsf/rj2026lishuaifu   // cd  到rj2026lishuaifu目录下
[lsf@lishuaifu rj2026lishuaifu]$ chmod 444 hello.link
[lsf@lishuaifu rj2026lishuaifu]$ ls -l


hello.link 没有运行,因为hello.link文件没有可执行的权限,他只有可读权限。
4.5删除hello.link,这样做也删除了hello文件吗?为什么?

语法 : rm -f  文件名
//删除链接文件
lsf@lishuaifu rj2026lishuaifu]$ rm -f hello.link
[lsf@lishuaifu ~]$ cd /home/lsf  // 回去查看用户主目录
[lsf@lishuaifu ~]$ ls -l  


没有删除hello文件。删除的只是 hello.link与iNode的映射关系,并不影响hello与 iNode的映射关系。

5.Linux下存储设备的挂载与卸载的方法。

1)建立挂载点/mnt/usb。
2)使用#fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件系统类型。
3)使用mount命令手工挂载本地磁盘(U盘)。
4)用ls -l查看U盘中文件的详细信息。
5)使用umount命令手工卸载本地磁盘(U盘)。

挂载卸载方法

a) 挂载
1.创建/mnt/usb文件夹并进入
2.通过fdisk -l查看挂载的U盘在哪里
3.利用mount 命令挂载设备 mount /dev/sdb3 /mnt/usb
4.cd 进入/mnt/usb文件夹 查看是否挂载成功

b) 卸载
1.当不适用U盘时,就可以卸载U盘了
#umount /dev/sdb3
若出现问题–>umount: /mnt/usb: device is busy
2.查找占用目录进程:
使用该语句查看进程

fuser -mv /mnt/usb

					  用户     进程号 权限   命令
/mnt/usb:             root     kernel mount /mnt/p2
                     dengfei   14821 ..c.. bash

3.杀掉进程:
#kill -9 14821
4.卸载:#umount /mnt/usb

挂载开始!
记得切换超级用户呢 : sudo su 之后会提醒输入密码
也可以 用 : su root

[root@lishuaifu ~]#	 mkdir  /mnt/usb   //新建挂载点
[root@lishuaifu ~]# fdisk -l     查看挂载的U盘在哪里和盘符名



在这里看到这个U盘的设备名是: /dev/sdb1 文件系统是 FAT32

语法: mount 设备名 挂载点
[root@lishuaifu ~]# mount  /dev/sdb1 /mnt/usb 

[root@lishuaifu ~]# cd  /mnt  查看 mnt 目录下有没有usb 挂载点
[root@lishuaifu ~]# ls -l
[root@lishuaifu ~]# cd  /mnt/usb  进入 usb 挂载点,查看是否挂载成功
[root@lishuaifu ~]# ls -l   查看文件信息  如果有文件,就挂载成功了 
[root@lishuaifu ~]#umount  /mnt/usb  // 卸载U盘
  如果显示U盘正忙之类的,参考前面方法中的,杀死进程


好啦,至此所有的Linux 操作就完了!祝大家学习愉快呀。

以上是关于Linux系统安装与实验基础的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018-1 《信息安全系统设计基础》实验五 通信协议设计

Linux系统安装与使用基础之第四篇掌握Linux下存储设备的挂载与卸载的方法

Linux系统安装与使用基础之第二篇熟悉Linux操作系统

Linux系统安装与使用基础之第一篇安装并配置Linux(CentOS 7)操作系统

201555332盛照宗—网络对抗实验1—逆向与bof基础

Linux系统安装与使用基础之第三篇控制文件和目录的存取权限