前置知识
Linux常见目录
目录参数 | 说明 |
---|---|
/ | 根目录,文件的最顶端,/etc、/bin、/dev、/lib、/sbin应和根目录放置在一个分区中,而类似/usr/local可以单独位于另一个分区 |
/bin | 存放系统所需的重要命令,如文件或目录操作的命令ls、cp、mkdir等。/usr/bin也存放了一些系统命令,这些命令对于的文件都是可执行的,普通用户可以使用大部分的命令 |
/boot | 存放Linux启动时内核及引导系统程序所需要的核心文件,内核文件和grub系统引导管理器都位于此目录 |
/dev | 存放Linux系统下的设备文件,如光驱、磁盘等。访问该目录下的文件相当于访问某个硬件设备,常用于挂载光驱 |
/etc | 存放系统的配置文件,作为一些软件启动时默认配置文件读取的目录,如/etc/fstab存放系统分区信息 |
/home | 系统默认的用户主目录。若添加用户时不指定用户的主目录,默认在/home下创建与用户名同名的文件夹。代码中可以用HOME环境变量表示当前用户的主目录 |
/lib | 64位系统有/lib64文件夹,主要存放动态链接库,类似的目录还有/usr/lib、/usr/local/lib等 |
/lost+found | 存放一些当系统意外崩溃或机器意外关机时产生的文件碎片 |
/mnt | 存放挂载储存设备的挂载目录,如光驱等 |
/proc | 存放操作系统运行时的运行信息,如进程信息、内核信息、网络信息等。此目录的内容存在于内存中,实际不占用磁盘空间。如/etc/cpuinfo存放CPU相关信息 |
/root | Linux超级权限用户root的主目录 |
/sbin | 存放一些系统管理的命令,一般只能由超级权限用户root执行。大多数命令普通用户一般无权执行,如/sbin/ifconfig,普通用户使用绝对路径也可执行,用于查看当前系统网络配置,如/usr/sbin、/usr/local/sbin |
/tmp | 临时文件目录,任何人都可以访问。系统软件或用户运行程序时产生的临时文件存放到这里。此目录数据需要定期清除,重要数据不能放在该目录下,其目录空间也不能过小 |
/usr: | 应用程序存放目录,如命令、帮助文件等。安装Linux软件包时默认安装到/usr/local目录下,如/usr/share/fonts存放系统字体,/usr/share/man存放帮助文档,/usr/include存放软件的头文件等。建议将/usr/local目录单独分区并设置较大的磁盘空间 |
/var | /var/log存放系统日志,/var/lib存放系统库文件。目录内容会经常变动 |
/sys | 与/proc类似,是一个虚拟的文件系统,主要记录与系统核心相关的信息,如系统已经载入的模块信息等,该目录实际不占硬盘容量 |
网络管理协议
TCP/IP协议
TCP/IP协议体系
TCP/IP协议主要包含传输控制协议(TCP)和网际协议(IP)。
TCP/IP体系是一种分层结构,由基于硬件层次上的4个概念层次构成,从上往下看,即为应用层、传输层、网际互联层和网络接口层。
TCP/IP层次 | 功能及作用 |
---|---|
应用层 | 为用户提供所需要的各自应用服务,如FTP、Telnet、DNS、SMTP等 |
传输层 | 为应用层提供端到端的通信功能,同时提供流量控制,确保数据完整和正确。TCP协议位于该层,提供一种可靠的、面向连接的数据传输服务,对之对应的是UDP协议,提供不可靠的、无连接的数据报传输服务 |
网际互联层 | 解决主机到主机之间的通信问题。其主要协议有:网际协议(IP)、地址解析协议(ARP)、反向地址解析协议(RARP)和互联网控制报文协议(ICMP) |
网络接口层 | 为上层提供服务,完成链路控制等功能 |
包(packet)
包(packet)是网络上传输的数据片段,也称为分组或IP数据报。用户数据按照规定划分为大小适中的若干组,每个组加上包头构成一个包,该过程便称为封装。网络上使用包为单位进行数据传输。
包是一种统称,在不同的层次,包有不同的名字。如TCP/IP中称作帧,而IP层称之为IP数据报,TCP层称之为TCP报文等。
网络字节顺序
TCP/IP协议定义了一种所有机器在互联网分组的二进制字段中必须使用的网络标准字节顺序,与之对应的是主机字节顺序,主机字节顺序和各个主机密切相关。
传输时需遵循以下转换规则:主机字节顺序→网络字节顺序→主机字节顺序。
即发送方将主机字节顺序的整数转换为网络字节顺序后发送出去,接收方收到数据后将网络字节顺序的整数转换为自己的主机字节顺序,然后再进行处理。
地址解析协议(ARP)
TCP/IP网络使用IP地址进行寻址,IP包在IP层实现路由选择,但IP包在网络接口层的传输却需要知道设备的物理地址,此时便需要一种IP地址到物理地址的转换协议ARP。
ARP协议是一种在以太网这种有广播能力的网络中解决地址转换问题的方法,该方法允许在不重新编译代码、不需维护一个集中式数据库的情况下,在网络中动态增加新机器。
其原理为:当主机A想转换某一IP地址时,通过向网络中广播一个专门的报文分组,要求具有该IP地址的机器以其物理地址做出应答。所有主机都将收到这个请求,但只有符合条件的主机才辨认该IP地址,同时发回一个包括其物理地址的应答。主机A收到应答时便知道该IP地址对应的物理地址,并使用这个地址将数据分组发过去。
UDP协议
UDP是一种无连接的传输层协议,主要用于不要求分组顺序到达的传输中。其优点为资源消耗小、处理速度快。由于其不提供数据包分组、组装和不能对数据包进行排序的缺点,当报文发送后,无法得知其是否安全完整到达的,因此UDP协议丢包会比较严重。
ICMP协议
ICMP协议是Internet控制报文协议,属于TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制信息。控制信息是指网络是否通畅、主机是否可达、路由是否可用等网络本身的信息,其唯一的功能是报告问题,而不是纠正错误,纠错的任务由发送方完成。
网络管理命令
Ping:检查网络连接速度及网络是否通畅
ping常用于测试与目标主机或域名是否可达。ping的结果通常是可信的(部分服务器设置了禁止ping的除外)
ping命令不会自动终止,需要按"ctrl+c"终止,或是用参数"-c
"指定要求完成的回应次数。
在CenOS 7中,ping的常用命令如下:
1 | #ping目的ip地址如192.168.3.100 |
ifconfig:配置网络或显示当前网络接口状态
ifonfig命令可以用于查看、配置、启用或禁用指定网络接口,如配置网卡的IP地址、掩码、广播地址、网关等。
在CenOS 7中,查看网卡基本信息:
查看指定网络接口ens33的信息:
其中:
第一行:UP表示该网络接口为启用状态。RUNNING表示网卡设备已连接,MULTICAST表示组播,mtu为数据包最大传输单元
第二行:网卡IP、子网掩码、广播地址
第三行:IPv6地址
第四行:ether为网卡的MAC地址,Ethernet表示连接类型
第五行:接收数据包个数、大小统计信息
第六行:异常接收数据包的数量,如丢包量、错误等
第七行:发送数据包个数、大小统计信息
第八行:产生错误数据包的数量,如丢包量,错误等
ifconfig的常用命令如下:
1 | #关闭ens33网卡 |
route:显示添加或修改路由表
route命令用于查看或编辑计算机的IP路由表。
route的常用命令如下:
1 | #显示所有路由表 |
scp:Linux系统之间复制文件和目录
scp可以将本地文件传送到远程主机或从远程主机拉取文件到本地。注意由于各发行版本不同,scp语法也不同。
scp使用方法如下所示:
1 | #将本地/root/lk目录下所有文件传输到远程主机192.168.3.100的/home/lk/cpfile目录下: |
rsync:数据镜像备份工具
rsync是Linux系统下常用的数据镜像备份工具,用于在不同的主机之间同步文件。除了单个文件外,rsync还可以保存整个目录树和文件系统,可以增量同步,并保持文件原来的属性,数据传输过程是加密的,保证数据的安全。
rsync不仅可以远程同步数据,还可以本地同步数据。与cp或scp不同的是,使用rsync备份数据时不会直接覆盖已经存在的数据,而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
rsync使用方法如下所示:
1 | #将本地/etc/passwd文件同步到本地的/tmp/目录下,并改名为1.txt |
netstat:显示网络连接、路由表或接口状态
netstat命令用于监控系统网络配置和工作状况,可以显示内核路由表、活动的网络状态以及每个网络接口有用的统计数字。
netstat的常用命令如下:
1 | #显示所有端口,包含UDP和TCP端口 |
traceroute:探测至目的地址的路由信息
traceroute跟踪数据包到达网络主机所经过的路由,其原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。
traceroute的常用命令如下:
1 | #先检查主机与www.baidu.com之间的网络是否通畅 |
telnet:测试、登录或控制远程主机
telnet通常用来远程登录。在客户端使用telnet在程序中输入命令,可以在本地控制服务器。由于telnet采用明文传送报文,安全性较差。telnet可以确定远程服务端口的状态,以便确认服务是否正常。
telnet常用命令如下:
1 | #检查198.168.3.100对应的56789端口服务是否正常 |
wget:下载网络文件
wget可以断点续传,同时支持FTP或HTTP协议下载,并可以设置代理服务器。
wgett常用命令如下:
1 | #下载文件http://ftp.gnu.org/gnu/wget/wget-1.14.tar.gz |
Linux网络配置
与Linux网络配置相关的文件主要有以下这些:
目录 | 功能及作用 |
---|---|
/etc/hostname | 主要用于修改主机名称 |
/etc/sysconfig/network-scrips/ifcfg-enoN | 设置网卡参数的文件,如IP地址、子网掩码、广播地址、网关等,N为一串数字 |
/etc/resolv.conf | 设置DNS相关的信息,用于将域名解析到IP |
/etc/hosts | 计算机IP对应的主机名称或域名对应的IP地址 |
/etc/nsswitch.conf | 规定通过哪些途径、按照什么顺序通过这些途径来查找特定类型的信息。通过修改选项可以选择是DNS解析优先还是本地设置优先 |
配置Linux系统的IP地址
可以通过终端命令直接设置主机的IP地址,如想设置在系统重启后依然生效,可以通过设置对应的网络端口文件。
1 | oot@localhost admin]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 |
设置完接口文件后,需要重启网络服务才能生效,重启后使用ifconfig查看设置是否生效:
1 | service network restart |
同一个网络接口可以使用子接口的方式设置多个IP地址:
1 | #配置网络接口ens33子接口1的ip地址和子网掩码 |
当服务器重启或网络服务重启后,子接口的配置将消失。若需要重启后仍生效,可以将配置子接口命令加入/etc/rc.local文件中。
使用hostname设置主机名
主机名是识别某个计算机在网络中的标识。在单机情况下,主机名可任意设置。执行以下命令修改主机名,重新登录后可以发现主机名已改变。
1 | hostname mycomputername |
如要修改重启后依然生效,可以将主机名写入文件/etc/hostname中。
设置默认网关
设置好IP地址后,若要访问其他的子网或Internet,用户还需要设置路由,这里采用设置默认网关的方法来设置路由。
在Linux中,设置默认网关有两种方法:
第一种是直接使用route命令。在设置默认网关之前,先用
route -n
命令查看路由表,而后执行下面命令设置网关:1
route add default gw 192.168.10.254
若不想每次开机都执行route命令,则应把要执行的命令写入/etc/rc.d/re.local文件中。
第二种是在/ect/sysconfig/network-scripts/ifcfg-接口文件中添加如下字段:
1
GATEWAY=192.168.10.254
然后重启网络服务来使设置生效。
1
service network restart
设置DNS服务器
设置DNS服务器只需修改/etc/resolv.conf文件即可:
1 | [root@localhost admin]# cat /etc/resolv.conf |
FTP服务器
FTP服务概述
FTP文件共享基于TCP/IP协议,是一种通用性比较强的网络文件共享方式。FTP是仅基于TCP的服务,不支持UDP。FTP使用两个端口,一个数据端口和一个命令端口(控制端口)。通常这两个端口是21(命令端口)和20(数据端口)。由于FTP工作方式的不同,数据端口并不总是20,分为主动FTP和被动FTP。
- 主动FTP
- 主动模式是从服务器向客户端发起连接。主动模式下,服务端开启的是20和21端口,客户端开启的是1024以上的端口
- 被动FTP
- 被动模式是客户端向服务端发起连接。被动模式下,服务端开启的是21命令端口和大于1024的数据连接端口,客户端开启的是大于1024的两个端口
两者的共同点是都使用21端口进行用户验证及管理,差别在于传送数据的方式不同。
vsftp的安装与配置
在Linux系统下,vsftp是一款应用比较广泛的FTP软件,其特点是小巧轻快、安全易用。
vsftp安装
使用yum工具安装vsftp:
1 | #使用yum工具下载vsftp |
匿名FTP设置
这种运行匿名用户访问并上传文件,配置文件路径一般为/etc/vsftpd.conf
,若是使用rpm包安装,则配置文件位于/etc/vsftpd/vsftpd.conf
。
1 | #将默认目录赋予用户ftp权限以便可以上传文件 |
启动FTP服务
1 | #启动vsftpd |
匿名用户登录测试
1 | #登录ftp |
上述上传文件时,遇到了553 Could not create file错误。解决方式如下:
输入quit退出vsftpd,在ftp的目录创建一个目录,然后设置权限为777:
1
2
3[root@localhost admin]# mkdir /var/ftp/write
[root@localhost admin]# chmod -R 777 /var/ftp/write
[root@localhost admin]# vim /etc/vsftpd/vsftpd.conf然后修改位于/etc/vsftpd/vsftpd.conf的配置文件,在文件最后加上以下代码:
1
local_root=/var/ftp
杀死vsftpd进程,然后重启vsftpd服务器程序:
1
2
3
4
5
6
7
8
9
10#杀死vsftpd进程
[root@localhost admin]# pkill vsftpd
#查看是否还有vsftpd进程
[root@localhost admin]# pgrep vsftpd
#启动vsftpd服务器
[root@localhost admin]# /usr/sbin/vsftpd &
[1] 61422
#查看是否有vsftpd进程
[root@localhost admin]# pgrep vsftpd
61418然后再试试登录ftp上传文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14#上传文件测试
ftp> put wget-1.14.tar.gz
local: wget-1.14.tar.gz remote: wget-1.14.tar.gz
227 Entering Passive Mode (192,168,18,128,122,212).
150 Ok to send data.
226 Transfer complete.
3118130 bytes sent in 0.00845 secs (368834.88 Kbytes/sec)
#上传文件成功退出ftp
ftp> quit
221 Goodbye.
#查看上传后的文件信息,文件属于ftp用户
[root@localhost admin]# ll /var/ftp/pub/
总用量 3048
-rw-------. 1 ftp ftp 3118130 11月 16 01:29 wget-1.14.tar.gz
实名FTP设置
除了配置匿名FTP服务外,vsftp还可以配置实名FTP服务器,以便实现更精确的权限控制。
实名需要的用户认证信息位于/etc/vsftpd/目录下,用户启动时可以单独指定其他的配置文件。
1 | #配置文件使用vim /etc/vsftpd/vsftpd.conf修改为如下: |