Linux学习教程(第二章 Linux系统安装)3

第二章 Linux系统安装

十一、Linux远程管理协议(RFB、RDP、Telnet和SSH)

提到远程管理,通常指的是远程管理服务器,而非个人计算机。个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式。

远程管理,实际上就是计算机(服务器)之间通过网络进行数据传输(信息交换)的过程,与浏览器需要 HTTP 协议(超文本传输协议)浏览网页一样,远程管理同样需要远程管理协议的支持。

目前,常用的远程管理协议有以下 4 种:

  • RDP(remote desktop protocol)协议:远程桌面协议,大部分 Windows 系统都默认支持此协议,Windows 系统中的远程桌面管理就基于该协议。
  • RFB(Remote FrameBuffer)协议:图形化远程管理协议,VNC 远程管理工具就基于此协议。
  • Telnet:命令行界面远程管理协议,几乎所有的操作系统都默认支持此协议。此协议的特点是,在进行数据传送时使用明文传输的方式,也就是不对数据进行加密。
  • SSH(Secure Shell)协议:命令行界面远程管理协议,几乎所有操作系统都默认支持此协议。和 Telnet 不同,该协议在数据传输时会对数据进行加密并压缩,因此使用此协议传输数据既安全速度又快。

1、RDP 对比 RFB

RDP 协议和 RFB 协议都允许用户通过图形用户界面访问远程系统,但 RFB 协议倾向于传输图像,RDP 协议倾向于传输指令

  • RFB 协议会在服务器端将窗口在显存中画好,然后将图像传给客户端,客户端只需要将得到的图像解码显示即可;
  • RDP 会将画图的工作交给客户端,服务器端需要根据客户端的显示能力做适当的调整。

因此,完成相同的操作,使用 RFB 协议传输的数据量会比 RDP 大,而 RDP 对客户端的要求比 RFB 更苛刻,RFB 适用于瘦客户端,而 RDP 适用于低速网络。

瘦客户端是相对于胖客户端而言的,比如,人们使用 QQ,需要下载客户端,这属于"胖客户";反之,通过浏览器就可查阅网络上各种资料,无需再下载其他任何软件,这属于"瘦客户"。简单理解,瘦客户端指的是最大可能减轻客户端的负担,多数工作由服务器端完成;胖客户端则相反。

2、Telnet 对比 SSH

Telnet 协议和 SSH 协议都是命令行远程管理协议,有共同的应用领域,常用于远程访问服务器。

相比 Telnet 协议,SSH 协议在发送数据时会对数据进行加密操作,数据传输更安全,因此 SSH 协议几乎在所有应用领域代替了 Telnet 协议。

在一些测试、无需加密的场合(如局域网),Telnet协议仍常被使用。

3、Linux远程管理软件

基于以上 4 种远程管理协议,Linux 远程管理服务器的软件可分为以下 3 种:

  • 类似于 VNC(基于 RFB 协议)的图形远程管理软件,如 Xmanager、VNC VIEWER 以及 TightVNC 等;
  • 基于 SSH 协议的命令行操作管理;
  • 类似 Webmin 的基于浏览器的远程管理,此种管理方式只提供简单的管理窗口,可用的管理功能有限;

介于安全性和稳定性的考虑,大部分的服务器都舍弃图形管理界面而选择命令行界面,因此远程管理 Linux 服务器常使用基于 SSH 协议的命令行管理方式。

目前,基于 SSH 协议常用的远程管理工具有 PuTTY、SecureCRT、WinSCP 等,这些管理工具的具体使用下节给大家详细介绍。

十二、Linux远程管理工具(PuTTY和SecureCRT)

通过十一节 可以知道,Linux远程管理服务器多基于 SSH 协议。本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 SecureCRT。

在使用远程管理工具之前,应先设置宿主机 Windows 与虚拟机 Linux 能够连通。这里要注意 VMware 的网卡设置,Linux 中更改网络设置可以使用 ifconfig 和 setup 命令,若还是无法进行远程连接,要么就是 SSH 服务没有启动,要么就是 Linux 防火墙默认屏蔽了 SSH 服务的端口。

另外还要记住一点,远程连接管理服务器与本地操作服务器是一样的,没有任何区别。

1、PuTTY远程管理工具

这是一款完全免费的 Windows 远程管理客户端工具,体积小,操作简单,不需要安装(下载后即可使用)。

对于经常到客户公司做技术支持和维护的朋友来说,该工具的使用相当方便,只要随身携带 U 盘,即可实现"一盘在手,随处登录"

PuTTY 包含很多组件,比如说:

  • PuTTY(远程登录的客户端)
  • PSCP(SCP 客户端,在命令行下通过 SSH 协议复制文件)。
  • PSFTP(SFTP 的命令行客户端,类似于 FTP 的文件传输,基于 SSH 协议)。
  • PuTTYtel(仅仅是一个 Telnet 客户端)。
  • Plink(命令行工具,可用于执行远程M务器上的命令)。
  • Pageant(PuTTY、PSCP、Plink 的 SSH 认证代理)。
  • PuTTYgen(用来生成 RSA 和 DSA 密钥的工具)。

尽管有如此多的组件,但对初学者来说,用的最多的主要是 PuTTY。下载 PuTTY 并双击 putty.exe 文件,就会出现如图 1 所示的配置界面。

图 1 PuTTY配置界面

在"主机名称(或 IP 地址)"文本框中输入远程登录主机 IP 地址,如 192.168.8.88

"端口"根据使用的协议有所区别(选择不同的"连接类型"选项,端口会自动变化),一般选择"SSH"或"Telnet",这取决于 Linux 服务器所提供的服务。

建议选择 SSH,Telnet 服务密码会被明文传输,安全性较差,目前大多数 UNIX/Linux 系统默认禁用 Telent。

如果想保存会话方便下次连接,则可以在"保存的会话"文本框中输入一个名称,单击"保存"按钮即可把这次的连接配置保存起来。

设置完成后,单击"打开"按钮,就会出现如图 2 所示的操作界面。

图 2 PuTTY作界面

如果希望 PuTTY 支持中文显示,则修改的方法是:**在"窗口->转换"的右侧设置项"远程字符集"下拉列表框中选择"UTF-8",**如图 3 所示。

图 3 PuTTY支持中文显示

2、SecureCRT远程管理工具

SecureCRT 是一款功能强大的远程管理工具,该软件将 SSH(Secure Shell)的安全登录、数据传送性能与 Windows 终端仿真提供的可靠注、可用性和可配置性融于一身。

使用此工具的优势是,管理多台服务器时可以很方便地记住多个地址,并且可以设置自动登录,方便远程管理,效率很高。但与 PuTTY 相比,SecureCRT 需要安装,并且是一款共享软件,不付费注册不能使用(网络上散布有一些注册码,读者可自行搜索使用)。

安装 SecureCRT 并启动后,单击"快速连接"按钮,输入 IP 地址和用户名,按照提示输入密码即可登录,与 PuTTy 类似,如图 4 所示。

图 4 SecureCRT 使用

SecureCRT 默认不支持中文(中文会显示为乱码),一种解决方法是:在建立连接后,进入"选项"菜单,选择"会话选项",在"终端->仿真"的右侧设置项"终端"下拉列表框中选择"Xterm",勾选"ANSI颜色"复选框支持颜色显示,单击"确定"按钮,如图 5 所示。

图 5 SecureCRT 仿真设置

在"终端->外观"的右侧设置项"当前颜色方案"下拉列表框中选择"Traditional (传统)","标准字体"和"精确字体"均选择中文字体,如新宋体或楷体,并确保"字符编码"选择为"UTF-8"(CentOS 默认使用的中文字符集为 UTF-8),取消勾选"使用 Unicode 线条绘制字符"复选框,保存即可,如图 6 所示。

图 6 SecureCRT 外观设置

除 PuTTY 和 SecureCRT 之外,还有一款笔者很喜欢用的 Windows 与 Linux 之间的文件共享工具 WinSCP,可以方便地实现两个系统之间的文件传输,有兴趣的读者也可以自行下载安装体验。

远程管理工具众多,但在使用上大同小异,本节不做过多介绍。

十三、新手必读的Linux使用注意事项

通过安装并体验 Linux 系统,读者应该能发现 Linux 与 Windows 的一些不同之处,本节就几个容易让初学者混淆的问题做重点讲解,以便加深读者对 Linux 系统的认识。

1、Linux 严格区分大小写

和 Windows 不同,Linux 是严格区分大小写的,包括文件名和目录名、命令、命令选项、配置文件设置选项等。

例如,Windows 系统桌面上有一个名为 Demo 的文件夹,当我们在桌面上再新建一个名为 demo 的文件夹时,系统会提示文件夹命名冲突;而 Linux 系统不会,Linux 系统认为 Demo 文件和 demo 文件不是同一个文件,因此在 Linux 系统中,Demo 文件和 demo 文件可以位于同一目录下。

因此,初学者在操作 Linux 系统时要注意区分大小写的不同。

2、Windows 下的程序不能直接在 Linux 中使用

Linux 和 Windows 是不同的操作系统,两者的安装软件不能混用。例如,Windows 系统上的 QQ 软件安装包无法直接放到 Linux 上使用。

系统之间存在的这一差异,有弊也有利。弊端很明显,就是所有的软件要想安装在 Linux 系统上,必须单独开发针对 Linux 系统的版本(也可以依赖模拟器软件运行);好处则是能感染 Windows 系统的病毒(或木马)对 Linux 无效。

由于系统间存在差异,很多软件会同时推出针对 Windows 和 Linux 的版本,如大家熟悉的即时通信软件 QQ,既有 Windows 系统下的 QQ 版本,也有适用于 Linux 系统的 QQ for Linux 版本。

3、Linux 不靠扩展名区分文件类型

我们都知道,Windows 是依赖扩展名区分文件类型的,比如,".txt" 是文本文件、".exe" 是执行文件、".ini" 是配置文件、".mp4" 是小电影等。但 Linux 不是。

Linux 系统通过权限位标识来确定文件类型 ,且文件类型的种类也不像 Windows 下那么多,常见的文件类型只有普通文件、目录、链接文件、块设备文件、字符设备文件等几种。Linux 的可执行文件不过就是普通文件被赋予了可执行权限而已。

Linux 中的一些特殊文件还是要求写 "扩展名" 的,但大家小心,并不是 Linux 一定要靠扩展名来识别文件类型,写这些扩展名是为了帮助管理员来区分不同的文件类型。这样的文件扩展名主要有以下几种:

  • 压缩包:Linux 下常见的压缩文件名有 *.gz、*.bz2、*.zip、*.tar.gz、*.tar.bz2、*.tgz 等。为什么压缩包一定要写扩展名呢?很简单,如果不写清楚扩展名,那么管理员不容易判断压缩包的格式,虽然有命令可以帮助判断,但是直观一点更加方便。另外,就算没写扩展名,在 Linux 中一样可以解压缩,不影响使用。
  • 二进制软件包:CentOS 中所使用的二进制安装包是 RPM 包,所有的 RPM 包都用".rpm"扩展名结尾,目的同样是让管理员一目了然。
  • 程序文件:Shell 脚本一般用 "*.sh" 扩展名结尾,其他还有用 "*.c" 扩展名结尾的 C 语言文件等。
  • 网页文件:网页文件一般使用 "*.php" 等结尾,不过这是网页服务器的要求,而不是 Linux 的要求。

在此不一一列举了,还有如日常使用较多的图片文件、视频文件、Office 文件等,也是如此。

4、Linux 中所有内容(包括硬件设备)以文件形式保存

Linux 中所有内容都是以文件的形式保存和管理的(硬件设备也是文件),这和 Windows 完全不同,Windows 是通过设备管理器来管理硬件的。比如说,Linux 的设备文件保存在**/dev/** 目录中,硬盘文件是**/dev/sd[a-p]** ,光盘文件是**/dev/hdc**等。

5、Linux中所有存储设备都必须在挂载之后才能使用

Linux 中所有的存储设备都有自己的设备文件名,这些设备文件必须在挂载之后才能使用,包括硬盘、U 盘和光盘。

**挂载其实就是给这些存储设备分配盘符,只不过 Windows 中的盘符用英文字母表示,而 Linux 中的盘符则是一个已经建立的空目录。**我们把这些空目录叫作挂载点(可以理解为 Windows 的盘符),把设备文件(如 /dev/sdb)和挂载点(已经建立的空目录)连接的过程叫作挂载。这个过程是通过挂载命令实现的,具体的挂载命令后续会讲。

十四、Linux文件目录结构一览表

学习 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各个目录的功能同样至关重要。

使用 Linux 时,通过命令行输入ls -l / 可以看到,在 Linux 根目录(/)下包含很多的子目录(称为一级目录),例如 bin、boot、dev 等。同时,各一级目录下还含有很多子目录(称为二级目录),比如 /bin/bash、/bin/ed 等。Linux 文件系统目录总体呈现树形结构,/ 根目录就相当于树根。

由于 Linux 系统免费开源,使得 Linux 发行版本有很多,利用 Linux 开发产品的团队也有很多,如果任由每个人都按照自己的想法来配置 Linux 系统文件目录,后期可能会产生诸多的管理问题。试想,如果你进入一家公司,所用 Linux 系统的文件目录结构与所学的完全不同,实在令人头疼。

为了避免诸多使用者对 Linux 系统目录结构天马行空,Linux 基金会发布了FHS 标准。多数 Linux 发行版系统都遵循这一标准。

**FHS(Filesystem Hierarchy Standard),文件系统层次化标准,**该标准规定了 Linux 系统中所有一级目录以及部分二级目录(/usr 和 /var)的用途。发布此标准的主要目的就是为了让用户清楚地了解每个目录应该存放什么类型的文件。

1、Linux 根目录(/)

FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:

  1. 所有目录都是由根目录衍生出来的;
  2. 根目录与系统的开机、修复、还原密切相关;

因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件,如表 1 所示。

一级目录 功能(作用)
/bin/ 存放系统命令,普通用户和 root 都可以执行。放在 /bin 下的命令在单用户模式下也可以执行
/boot/ 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
/dev/ 设备文件保存位置
/etc/ 配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
/home/ 普通用户的主目录(也称为家目录)。在创建用户时,每个用户要有一个默认登录和保存自己数据的位置,就是用户的主目录,所有普通用户的主目录是在 /home/ 下建立一个和用户名相同的目录。如用户 liming 的主目录就是 /home/liming
/lib/ 系统调用的函数库保存位置
/media/ 挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
/mnt/ 挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/misc/ 挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,笔者在接触 Linux 的时候,默认挂载目录只有 /mnt/,所以养成了在 /mnt/ 下建立不同目录挂载不同设备的习惯,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘,都是可以的
/opt/ 第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。不过笔者还是习惯把软件放到 /usr/local/ 目录中,也就是说,/usr/local/ 目录也可以用来安装软件
/root/ root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在"/"下
/sbin/ 保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置,但也有些命令可以允许普通用户查看
/srv/ 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据,最好每次开机都把该目录清空
[表 1 Linux一级目录及其作用]

FHS 针对根目录中包含的子目录仅限于表 1,但除此之外,Linux 系统根目录下通常还包含表 2 中的几个一级目录。

一级目录 功能(作用)
/lost+found/ 当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如,/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是 /boot 分区的备份恢复目录
/proc/ 虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,/proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的......
/sys/ 虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息
[表 2 其他一级目录及功能]

2、Linux /usr目录

usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。

Linux 系统中,所有系统默认的软件都存储在 /usr 目录下/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。

FHS 建议,/usr 目录应具备表 3 所示的子目录。

子目录 功能(作用)
/usr/bin/ 存放系统命令,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行
/usr/sbin/ 存放根文件系统不必要的系统管理命令,如多数服务程序,只有 root 可以使用。
/usr/lib/ 应用程序调用的函数库保存位置
/usr/XllR6/ 图形界面系统保存位置
/usr/local/ 手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
/usr/share/ 应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
/usr/src/ 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过笔者更习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
/usr/include C/C++ 等编程语言头文件的放置目录
[表 3 /usr 子目录及其功能]

3、Linux /var 目录

**/var 目录用于存储动态数据,**例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如表 4 所示的这些子目录。

/var子目录 功能(作用)
/var/lib/ 程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中
/var/log/ 登陆文件放置的目录,其中所包含比较重要的文件如 /var/log/messages, /var/log/wtmp 等。
/var/run/ 一些服务和程序运行后,它们的 PID(进程 ID)保存位置
/var/spool/ 里面主要都是一些临时存放,随时会被用户所调用的数据,例如 /var/spool/mail/ 存放新收到的邮件,/var/spool/cron/ 存放系统定时任务。
/var/www/ RPM 包安装的 Apache 的网页主目录
/var/nis和/var/yp NIS 服务机制所使用的目录,nis 主要记录所有网络中每一个 client 的连接信息;yp 是 linux 的 nis 服务的日志文件存放的目录
/var/tmp 一些应用程序在安装或执行时,需要在重启后使用的某些文件,此目录能将该类文件暂时存放起来,完成后再行删除
[表 4 /var子目录及其功能]

根据以上各表列举的各目录及作用,如果我们要做一些实验和练习**,需要创建一些临时文件,应该保存在哪里呢?**

答案是用户的主目录或 /tmp/ 临时目录。 但是要小心有些目录中不能直接修改和保存数据,比如 /proc/fn/sys/ 目录,因为它们是保存在内存中的,如果在这里写入数据,那么你的内存会越来越小,直至死机;/boot/ 目录也不能保存额外数据,因为 /boot/ 目录会单独分区作为启动分区,如果没有空闲空间,则会导致系统不能正常启动。

总之,Linux 要在合理的目录下进行操作和修改。

十五、Linux中一切皆文件[包含优缺点]

Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件是文件,目录(Windows 下称为文件夹)是文件 ,硬件设备(键盘、监视器、硬盘、打印机)是文件,就连套接字(socket)、网络通信等资源也都是文件。

Linux系统中,文件具体可分为以下几种类型:

1、普通文件

类似 mp4、pdf、html 这样,可直接拿来使用的文件都属于普通文件,Linux 用户根据访问权限的不同可以对这些文件进行查看、删除以及更改操作。

2、目录文件

对于用惯 Windows 系统的用户来说,目录是文件可能不太好理解。

Linux 系统中,目录文件包含了此目录中各个文件的文件名以及指向这些文件的指针,打开目录等同于打开目录文件,只要你有权限,可以随意访问目录中的任何文件。

注意,目录文件的访问权限,同普通文件的执行权限,是一个意思。

3、字符设备文件和块设备文件

这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用。

例如,磁盘光驱属于块设备文件,串口设备则属于字符设备文件。

Linux 系统中的所有设备,要么是块设备文件,要么是字符设备文件。

4、 套接字文件(socket)

套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。

5、符号链接文件(symbolic link)

类似与 Windows 中的快捷方式,是指向另一文件的简介指针(也就是软链接)。

6、管道文件(pipe)

主要用于进程间通信。例如,使用 mkfifo 命令创建一个 FIFO 文件,与此同时,启用进程 A 从 FIFO文件读数据,启用进程 B 从 FIFO文件中写数据,随写随读。

7、"一切皆文件"的利弊

和 Windows 系统不同,Linux 系统没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中。

这样做最明显的好处是,开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读 socket,读 PIPE)的操作都可以用 read 函数来进行;几乎所有更改(更改文件,更改系统参数,写 socket,写 PIPE)的操作都可以用 write 函数来进行。

不利之处在于,使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。我们知道,本身 Linux 具有一个以根目录为树根的文件目录结构,每个设备也同样如此,它们是相互独立的。如果我们想通过 Linux 上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一,这就是挂载的真正含义。

有关 Linux 挂载的具体知识,后续文章将会详细介绍。

十六、什么是挂载,Linux挂载详解

前面讲过,Linux 系统中"一切皆文件",所有文件都放置在以根目录为树根的树形目录结构中。在 Linux 看来,任何硬件设备也都是文件,它们各有自己的一套文件系统(文件目录结构)。

因此产生的问题是,当在 Linux 系统中使用这些硬件设备时,只有将Linux本身的文件目录与硬件设备的文件目录合二为一,硬件设备才能为我们所用。合二为一的过程称为"挂载"。

如果不挂载,通过Linux系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

挂载,指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃挂载点最好是新建的空目录。

举个例子,我们想通过命令行访问某个 U 盘中的数据,图 1 所示为 U 盘文件目录结构和 Linux 系统中的文件目录结构。

图 1 U 盘和 Linux 系统文件目录结构

图 1 中可以看到,目前 U 盘和 Linux 系统文件分属两个文件系统,还无法使用命令行找到 U 盘文件,需要将两个文件系统进行挂载。

接下来,我们在根目录下新建一个目录 /sdb-u,通过挂载命令将 U 盘文件系统挂载到此目录,挂载效果如图 2 所示。

图 2 文件系统挂载

可以看到,U 盘文件系统已经成为 Linux 文件系统目录的一部分,此时访问 /sdb-u/ 就等同于访问 U 盘。

前面讲过,根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1) ,但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

具体的挂载以及卸载指令后续章节会详细介绍。

十七、新手必看的Linux服务器管理和维护注意事项

本节介绍有关服务器管理和维护过程中的一些注意事项,都是笔者的经验之谈,相信对新手会有一定的启发和帮助。

很多初学者接触 Linux 时间不长,还未完整地学习一遍 Linux,理解本节内容可能有些困难,可以先跳过本节,阅读完整套教程后再回过头来阅读。

1、远程服务器关机及重启时的注意事项

为什么远程服务器不能关机?原因很简单,远程服务器没有放置在本地,关机后谁帮你按开机电源键启动服务器?虽然计算机技术曰新月异,但是像插入电源和开机这样的工作还是需要手工进行的。如果服务器在远程,一旦关机,就只能求助托管机房的管理人员帮你开机了。

远程服务器重启时需要注意两点。

(1) 远程服务器在重启前,要中止正在执行的服务

计算机的硬盘最怕在高速存储时断电或重启,非常容易造成硬盘损坏。所以,在重启前先中止你的服务,甚至可以考虑暂时断开对外提供服务的网络。

可能你会觉得服务器有这么娇贵吗?我的笔记本电脑经常强行关机,也没有发现硬盘损坏啊?这是因为你的个人计算机没有很多人访问,强制断电时硬盘并没有进行数据交换。小心驶得万年船!

(2) 重启命令的选用

Linux 可以识别的重启命令有很多条,但是建议大家使用 "shutdown-r now" 命令重启这条命令在重启时会正常保存和中止服务器中正在运行的程序,是安全命令。

最好在重启前执行几次 "sync" 命令,这条命令是数据同步命令,可以让暂时保存在内存中的数据同步到硬盘上。

重启和关机也是服务器需要注意的操作规范,不正确的重启和关机造成服务器故障的不在少数。

2、不要在服务器访问高峰运行高负载命令

在服务器访问高峰,如果使用一些对服务器压力较大的命令,有可能会造成服务器响应缓慢甚至死机。

哪些命令是高负载命令呢?如果大家使用过 Windows 操作系统,则也会留意一些操作会给计算机带来较大的运算压力,道理都是一样的,如复制大量的数据、压缩或者解压缩大文件、大范围的硬盘搜索等。

服务器的访问高峰期一般认为是在 17:00-24:00。当然,每台服务器具体提供的服务不同,访问高峰期有时也会有所出入。比如,服务器主要是供美国人民访问的,那就要考虑时差的问题;或者服务器提供的服务很特殊,访问高峰期可能也不同。

高负载命令一般建议在凌晨的 4:00-5:00 执行。那么,是不是说我们需要在凌晨上班?当然不是,这谁受得了啊?我们可以使用系统的计划任务,让操作自动在指定的时间段执行。

3、远程配置防火墙时不要把自己踢出服务器

防火墙是指将内网和外网分开,并依照数据包的 IP 地址、端口号和数据包中的数据来判断是否允许数据包通过的网络设备。

防火墙可以是硬件防火墙设备,也可以是服务器上安装的防火墙软件。

简单来讲,防火墙就是根据数据包自身的参数来判断是否允许数据包通过的网络设备。我们的服务器要想在公网中安全地使用,就需要使用防火墙过滤有害的数据包。

但在配置防火墙时,如果管理员对防火墙不是很熟悉,就有可能把自己的正常访问数据包和有害数据包全部过滤掉,导致自己也无法正常登录服务器。比如说,防火墙关闭了远程连接的 SSH 服务的端口。

防火墙配置完全是靠手工命令完成的,配置规则和配置命令相对也比较复杂,万一设置的时候心不在焉,悲剧就发生了。如何避免这种趟尬的情况发生呢?

最好的方法当然是在服务器本地配置防火墙,这样就算不小视自己的远程登录给过滤了,还可以通过本机登录来进行恢复。如果服务器已经在远程登录了,要配置防火墙,那么最好在本地测试完善后再进行上传,这样会把发生故障的概率降到最低。

虽然在本地测试好了,但是传到远程服务器上时仍有可能发生问题。于是笔者想到一个笨办法,如果需要远程配置防火墙,那么先写一个系统定时任务,让它每 5 分钟清空一下防火墙规则,就算写错了也还有反悔的机会,等测试没有问题了再刪除这个系统定时任务。

总之,大家可以使用各种方法,只要留意不要在配置防火墙时把自己踢出服务器就好了。

4、指定合理的密码规范并定期更新

除了前面给大家介绍设置密码需要遵守复杂性、易记忆和时效性的三原则外,还需要注意密码的保存。

日常使用的密码,我们最简单的原则是写下来。服务器可能有很多,不可能所有的服务器都使用同样的密码,最好每台服务器的密码都不尽相同(但是在实际的工作中也不现实)。一般的做法是给服务器分类,每类服务器的密码一致,这样可以有效地减少密码的数量。但是在有大量服务器的情况下,密码的数量还是很可怕的。

比如,当年笔者从事游戏运维的时候,有超过 2000 台服务器,再加上交换机和路由器等网络设备,虽然采用了每类服务器相同密码的方法,但是密码的总数量还是超过了 100 个......这时把密码一次性记忆下来基本上是一项不可能完成的任务。那么,该如何保存这些密码呢?只能通过文档来保存了,当然这些文档不能是明文保存的,而是要加密的。

总之,合理的密码还要有合适的保存方式,这些在构建服务器架构的时候都是必须考虑的内容。

5、合理分配权限

管理服务器要遵守一个最基本的原则,"给予用户最小的权限"。

初次接触服务器的人会很迷惑,我们所有同事都使用管理员 root 账户登录多好,省得还要学习如何添加用户、设置权限。这样操作,如果是对个人计算机来讲问题不大,如日常使用的 Windows 桌面系统,但如果是服务器,就会出现重大的安全隐患。

在实际的工作中,因为给内部员工分配的权限不合理而导致数据泄密甚至触犯法律的情况屡见不鲜。所以,在服务器上,合理的权限规划必不可少!而且就算只有你是这台服务器的 root,我们也建议在管理服务器时,能使用普通用户完成的操作都使用普通用户,确实完成不了的操作要么进行授权,要么再切换到 root 执行。因为 Linux 上的 root 用户权限实在过大,一旦误操作,后果是严重的,下场是惨淡的。

在实际的工作中,越是重要的服务器,对权限的管理越严格。原则上,在能够完成工作的前提下,分配的权限越小越安全。当然,权限越小,你需要做的规划和权限分配任务就越多,但是服务器也越可靠。

6、定期备份重要数据和日志

没有备份的服务器,就是在作死!

我身边有很多人,手机坏了或丟了,通讯录就没了;自己电脑的硬盘坏了,上面的资料就再也找不到了,一点备份的意识也没有。个人的损失往往可以承受,但是公司服务器的损失可能会非常惊人。

有的人知道备份重要,但是因为懒情或忘记,结果后悔莫及。很多事情都是知易行难的,备份来不得半点侥幸心理。如果公司的主要盈利项目是在互联网上的业务,那么数据的丟失就有可能造成公司的直接利益损失。

相关推荐
o(╥﹏╥)15 分钟前
在 Ubuntu 上安装 VS Code
linux·运维·vscode·ubuntu·vs
AI慧聚堂40 分钟前
自动化 + 人工智能:投标行业的未来是什么样的?
运维·人工智能·自动化
不爱学英文的码字机器42 分钟前
[Linux] Shell 命令及运行原理
linux·运维·服务器
cdut_suye1 小时前
Linux工具使用指南:从apt管理、gcc编译到makefile构建与gdb调试
java·linux·运维·服务器·c++·人工智能·python
qq_433618441 小时前
shell 编程(三)
linux·运维·服务器
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花1 小时前
Jenkins 持续集成部署
运维·jenkins
Tlzns1 小时前
Linux网络——UDP的运用
linux·网络·udp
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen1 小时前
天融信Linux系统安全问题
linux·运维·系统安全