第一章: 初始Linux发展历程
-
Linux 是在
GPL版权协议下发布的 -
遵循
POSIX标准的操作系统内核 -
其版权属于
Linus Torvalds -
Linux是指GNUL/Linux操作系统,它包含kernel(内核)、Utilities(系统工具程序)以及Application(应用软件) 而不是仅指Linux系统内核 -
什么是发行版?
- 发行版是指某些公司、组织或个人把
Linux内核、源代码以及相关的应用程序组织在一起发行。
- 发行版是指某些公司、组织或个人把

Linux 是UNIX的“克隆”
由于Linux倡导开放和自由,所以它的发行版本十分多。

-
Linux是由谁编写的?
最初只是由芬兰人林纳斯·托瓦兹(
Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的 -
Linux vs Windows
第二章: 图形界面与命令行
1. Linux图形化管理系统组成部分
(1)X Window系统
(2)KDE、GNOME或其他桌面环境(如XFCE等)
2. 什么是 X Window 系统
X Window是一套基于“服务器/客户端”架构的视窗系统
于1984年在麻省理工学院(MIT)计算机科学研究室开发
目前,它是UNIX及类UNIX系统中最流行的视窗系统,并可用于几乎所有的现代操作系统。
X Windox 位GUI环境提供了基本的框架:在屏幕上绘图和移动窗口,以及与鼠标和键盘的互动
X Window系统不是一个软件,而是一个协议
3. X Window组成
由服务器(Server)、客户端(Client)和通信协议(X protocol)三部分组成
4. 什么是KDE桌面
KDE(K Desktop Environment),即K桌面环境,由德国人Mathias Ettrich于1996年10月创建
KDE主要包含以下应用程序。
(1)Konqueror(档案管理与网页浏览器)
(2)amaroK(音乐播放器)
(3)Gwenview(图像浏览器)
(4)Kaffeine(媒体播放器)
(5)Kate(文本编辑器)
(6)Kopete(即时通讯软件)
(7)KOffice(办公软件套件)
(8)Kontact(个人信息管理软件)
(9)KMail(电子邮件客户端)
(10)Konsole(终端模拟器)
(11)K3B(光盘烧录软件(确认表述是否正确))
(12)KDevelop(集成开发环境)
5. 什么是GNOME桌面
GNOME(GNU Network Object Model Environment, GNU网络对象模型环境)计划于1997年8月由Miguel de lcaza和Federico Mena发起,目的是取代KDE
GNOME的兴起很大程度上是因为KDE中使用的----Qt链接库最初并未采用开源协议,限制了其应用
GNOME是GNU计划的正式桌面,也是开发代码运动的一个重要组成部分
GNOME下的主要应用程序如下。
(1)Abiword(文字处理器)
(2)Epiphany(网页浏览器)
(3)Evolution(联系/安排和E-mail管理)
(4)Gaim(即时通讯软件)
(5)gedit(文本编辑器)
(6)The Gimp(高级图像编辑器)
(7)Gnumeric(电子表格软件)
(8)GnomeMeeting(IP电话或者电话软件)
(9)Inkscape(矢量绘图软件)
(10)Nautilus(文件管理器)
(11)Rhythmbox(类型Apple iTunes的音乐管理软件)
(12)Totem(媒体播放器)
6. Red Hat Linux 下的桌面环境
Red Hat的修改使图标、菜单、面板和许多系统工具在这两个不同的桌面环境中看起来是一致的GNOME和KDE等常见Linux桌面环境,在操作上和Windows基本类似
7. 认识Linux Shell
Shell就是系统的用户界面,提供了用户与内核进行交互操作的一种接口
Windows XP中的 Shell为命令行提示符CMD和窗口管理器Explorer
目前,Linux下可用的Shell也有很多种:
如Bourne Shell、C Shell、Korn Shell、POSIX Shell以及Bourne Again Shell等
8. 登录终端控制台
方式两种
一种是在桌面系统中使用终端仿真器:另一种是直接在字符界面登录终端
-
使用
GNOME终端仿真器启动终端控制台
快捷菜单在终端中打开
-
直接登录字符界面
如果图形界面属于未开启状态(例如直接登录字符界面,或退出了图形界面),则需要首先输入命令“startx”启动“X Windox”
如果需要改变Red Hat Linux 默认的启动方式,则需要修改/etc/inittab
9. 使用Linux控制台
Linux 的bash 相当智能化,可以使用键的自动补齐功能,将部分命令补充完整
bash还具备完善的历史记录功能
提示符样式
10. 在控制台里使用帮助——man命令
man 命令用于查看Linux系统的手册,是Linux中使用最为广泛的帮助形式。
其中不仅包含了常用命令的帮助说明,还包括配置文件、设备文件、协议和库函数等多种信息
man命令的基本格式如下:
man[-acdfhkKtwW][-msystem][-pstring][-Cconfig_file][-Mpath][-Ppager][-Ssection_lis-t][section]name...
11. 在控制台里使用帮助——info命令及其他
info文档是Linux系统提供的另一种格式的文档。
info命令支持文件的链接跳转,使用方向键在显示的帮助文档中选择需要进一步查看的文件名,回车后被选中的文件会自动打开。与man手册相比,info文档具有更强的交互性。
info命令的基本格式如下:
info cmd_name
12. 使用Linux的注意事项
通常不建议直接登录root账号。因为root账号拥有最高的系统控制权,稍有不慎则可能完全破坏整个Linux系统
如果确实需要root权限执行某些操作,可以使用su和sudo命令执行
第三章: 文件管理与常用命令
一. Linux 文件基础知识
1. Linux常见文件类型
-
在Linux系统上,任何软件和I/O设备都被视为文件。
-
Linux中的文件名最大支持256个字符,分别可以用A-Z、a-z、0-9等字符来命名。
-
和Windows不同,Linux中文件名是区分大小写的,所有的UNIX系列操作系统都遵循这个规律。
-
Linux下也没有盘符的概念(如Windows下的C盘、D盘),而只有目录,不同的硬盘分区是被挂载在不同目录下的。
Linux目录和Windows目录有着很大的不同,Linux目录类似一个树,最顶层是其更目录,如下图:

-
Linux的文件没有扩展名,所以Linux下的文件名称和它的种类没有任何关系。例如,abc.exe可以是文本文件,而abc.txt也可以是可执行文件。
-
Linux下的文件可以分为5种不同的类型:
普通文件、目录文件、链接文件、设备文件和管理文件
2. Linux目录结构概述
Linux系统以文件目录的方式来组织和管理系统中的所有文件
——所谓文件目录就是将所有文件的说明信息采用树型结构组织起来
——【目录也是一种类型的文件】各个目录结点之下都会有一些文件和子目录
3. Linux目录常见概念
-
路径
路径是指从树型目录中的某个目录层次到某个文件的一条路径。
-
根目录
Linux的根目录(/)是Linux系统中最特殊目录。
-
用户主目录
是系统管理员增加用户时建立起来的(以后也可以根据实际情况改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。
-
工作目录
用户登录Linux系统之后,每时每刻都处在某个目录之中,此目录被称作工作目录或当前目录
4. Linux 系统目录及说明
| 目录 | |
|---|---|
| /bin | 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。 |
| /etc | 存放系统管理和配置文件 |
| /home | 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 |
| /usr | 用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。 /usr/x11r6 存放x window的目录 /usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库 |
| /opt | 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。 |
| /proc | 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 |
| /root | 超级用户(系统管理员)的主目录(特权阶级o) |
| /sbin | 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。 |
| /dev | 用于存放设备文件。 |
| /mnt | 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。 |
| /boot | 存放用于系统引导时使用的各种文件 |
| /lib | 存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件 |
| /tmp | 用于存放各种临时文件,是公用的临时文件存储点。 |
| /var | 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。 |
| /lost+found | 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里 |
二. 文件与目录基本操作
1. 显示文件内容命令 cat , more , less , head , tail
1.1 cat 命令
作用:
cat查看文件内容 (是以只读的方式打开)
基本语法:
cat [选项] 要查看的文件
常用选项:
-n 显示行号

1.2 more命令
作用:
more指令是一个基于VI编辑器的文本过滤器
它以全屏的方式按页显示文本文件内容
more指令中内置了若干快捷键,详见操作说明
基本语法:
more要查看的文件
快捷键一览表

1.3 less命令
作用:
less指令用来分屏查看文件内容
它的功能与more指令相似,但是比more指令更加强大——支持各种显示终端
less指令在显示文件内容时,并不是一次性将整个文件加载之后才显示
而是,根据显示需要加载内容
——对于显示大型文件具有较高的效率
基本语法:
less 要查看的文件
快捷键一览表

1.4 head命令
作用:
head用于显示文件的开头部分内容
默认情况下head指令显示文件的前10行内容
基本语法:
head文件 (功能描述:查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意数)

1.5 tail命令
作用:
tail用于输出文件中尾部内容
默认情况下tail指令显示文件的后10行内容
基本语法:
tail 文件 (功能描述:查看文件后10行内容)
tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
tail -f 文件 (功能描述:实时追踪该文件的所有更新——工作中经常使用)

2. 文件内容查找命令 grep , egrep , fgrep
指定的查找模式搜索文件,通知用户在什么文件中搜索到与指定的模式匹配的字符串,
并且打印出所有包含该字符串的文本行,该文本行的最前面是该行所在的文件名
这组命令在搜索与定位文件中特定的主题和关键词方面非常有效
可以用其来搜索文件中包含的这些关键词
grep命令
一次只能搜索一个指定的模式;
egrep命令
检索扩展的正则表达式(包括表达式组和可选项);
fgrep命令
检索固定字符串,并不识别正则表达式,是一种更为快速的搜索命令
——总的来说,grep命令的搜索功能比fgrep强大
因为grep命令的搜索模式可以是正则表达式,而fgrep却不能
该组命令的常用格式如下:
grep [option] [search pattern] [file1, file2,……]
erep [option] [search pattern] [file1, file2,……]
frep [option] [search pattern] [file1, file2,……]
3. 文件查找命令 find , locate , grep , |
-
find从指定目录向下递归遍历其各子子目录指令
作用: find指令将从指定目录向下递归遍历其各个子目录 将满足条件的文件或者目录显示在终端 基本语法: find [搜素范围] [选项]选项说明

案例:

-
locate快速定位文件路径指令
作用: locate指令快速定位文件路径 locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件 locate指令无需遍历整个文件系统,查询速度较快 为了保证查询结果的准确度,管理员必须定期更新locate时刻 基本语法: locate 收索文件 特别说明: 由于locate指令基于数据库进行查询 所以第一次运行前,必须使用updatedb指令创建locate数据库
案例

- grep过滤查找指令和管道符号|
作用:
grep 过滤查找
| 管道符
表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法:
grep [选项] 查找内容 源文件
常用选项:
-n 显示匹配行及行号
-i 忽略字母大小写
案例:

4. 文本处理命令 sort , uniq
4.1 sort命令
对文件中的各行进行排序
该命令将逐行地对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符
sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的
可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件
默认情况下,以整行为关键字按ASCII字符顺序进行排序。
sort命令的常用格式如下:
sort [option] filename
4.2 uniq命令
用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本
常用格式如下:
uniq [option] filename
5. 文件内容统计命令 wc
统计给定文件中的字节数、字数、行数
如果没有给出文件名,则从标准输入读取
wc同时也给出所有指定文件的总统计数
字是由空格字符区分开的最大字符串
常用格式如下:
wc [option] filename
6. 文件比较命令 comm , diff
6.1 comm命令
该命令是对两个已经排好序的文件进行比较
comm读取这两个文件,然后生成三列输出:
仅在file1中出现的行;
仅在file2中出现的行;
在两个文件中都存在的行。
如果文件名用“-”,则表示从标准输入读取
常用格式如下:
comm [option] filename
6.2 diff命令
功能为逐行比较两个文本文件,列出其不同之处
它对给出的文件进行系统地检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序
常用格式如下:
diff [option] file1 file2
diff [option] dir1 dir2
7. 文件的复制、移动和删除、创建命令 cp , mv , rm,touch
7.1 cp命令
作用:
cp指令拷贝文件到指定目录
基本语法:
cp [选项] source dest
常用选项:
-r 递归复制整个文件夹

注意:一定要注意你当前的目录位置,然后要准确的定位源目录和目标目录

强制覆盖相同文件

7.2 rm命令 移除文件或目录指令
作用:
rm指令移除文件或目录
基本语法:
rm [选项] 要删除的文件或目录
常用选项:
-r 递归删除整个文件夹
-f 强制删除不提示
案例

7.3 mv命令 移动文件与目录或重命名
作用:
mv移动文件与目录或重命名
基本语法:
mv oldNameFile newNameFile (功能描述:重命名)
mv/temp/movefile/targetFolder (功能描述:移动文件)
案例

7.4 touch创建空文件指令
作用:
touch指令创建空文件
基本语法:
touch 文件名称

8. 文件链接命令 ln
符号链接
创建一个文件,并输入内容
[root@localhost disk4]# echo 123 > /file00
[root@localhost disk4]# cat /file00
123 硬 软
[root@localhost disk4]# ln -s /file00 /tmp/file11 #创建软连接
[root@localhost disk4]# cat /tmp/file11
123
[root@localhost disk4]# rm -rf /file00 删除硬连接,软连接不复存在
[root@localhost disk4]# cat /tmp/file11
cat: /tmp/file11: 没有那个文件或目录
#可以对源文件进行追加,软链接文件也有追加内容
硬链接(可以理解为文件备份)
[root@localhost disk4]# echo 222 >/file2
[root@localhost disk4]# cat /file2
222
[root@localhost disk4]# ln /file2 /tmp/file-h1
[root@localhost disk4]# cat /tmp/file-h1
222
[root@localhost disk4]# rm -rf /file2
[root@localhost disk4]# cat /tmp/file-h1
222
#把源文件删除,硬链接文件还存在原有数据
9. 目录的创建与删除命令 mkdir , rmdir
9.1 mkdir命令
作用:
mkdir指令用于创建目录
基本语法:
mkdir [选项] 要创建的目录
常用选项:
-p 创建多级目录
案例:

9.2 rmdir命令
基本语法:
rmdir [选项] 要删除的空目录
使用细节:
rmdir删除的是空目录
如果目录下有内容时,时无法删除的
提示:
如果需要删除非空目录,需要使用以下命令
rm -rf 要删除的目录
案例:

10. 改变工作目录、显示路径以及目录内容命令 cd , pwd , ls
10.1 cd命令
基本语法:
cd [参数] (功能描述:切换到指定目录)
常用参数:
绝对路径和相对路径
cd~或者cd: 回到自己的家目录
cd.. 回到当前目录的上一级目录
10.2 pwd命令
基本语法:
pwd (功能描述:显示当前工作目录的绝对路径)

10.3 ls命令
基本语法:
ls [选项] [目录或是文件]
常用选项:
-a:显示当前目录所有的文件和目录,包括隐藏的
-l:以列表的方式显示信息

三. 文件/目录访问权限管理
Linux系统中的每个文件和目录都有访问许可权限
通过其确定何种用户/用户组可以通过何种方式对文件和目录进行访问和操作
1. 文件/目录访问权限简介
分为三种:只读、只写、可执行
有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户、其他用户
每一个文件或目录的访问权限都有三组,每组用三位表示,分别为:
文件属主的读、写和执行权限;
与属主同组的用户的读、写和执行权限;
系统中其他用户的读、写和执行权限。
2. 改变文件/目录的访问权限 chmod 命令
改变文件或目录的访问权限,它是一条非常重要的系统命令
用户可用其控制文件或目录的访问权限
该命令有两种用法:
一种是包含字母和操作符表达式的文字设定法;
另一种是包含数字的数字设定法
2.1 文字设定法
一般使用形式如下:
chmod [who] [+|-|=] [mode] filename
2.2 数字设定法
比文字设定法更加简洁
数字设定法用3个二进制位来表示文件权限:【设定好后将其换算为十进制数即可】
第一位表示r权限(可读),
第二位表示w权限(可写),
第三位表示x权限(对于文件而言为可执行,对于文件夹而言为可枚举)
也可以直接用十进制数计算:
0表示没有权限,
1表示x权限,
2表示w权限,
4表示r权限,
然后将其相加
数字属性的格式应为3个从0到7的八进制数——其顺序是(u)、(g)、(o)
如果想让某个文件的属主有“读/写”二种权限,须要把4(可读)+2(可写)=6(读/写)
一般使用形式如下:
chmod [mode] filename
3. 更改文件/目录的默认权限 umask命令
登录系统之后,创建文件或文件夹有一个默认权限的
umask命令则用于显示和设置用户创建文件的默认权限
当使用不带参数的umask命令时,系统会输出当前umask的值
代码如下所示:
[root@localhost root]# umask
0022
4. 更改文件/目录的所有权 chown命令
chown命令用来更改某个文件或目录的属主和属组
常用格式如下:
chown [option] [user|group] filename
四. 文件/目录的打包和压缩
打包
tar命令本是用于备份文件的命令,该命令可以打包多个文件或目录,亦可将被打包的文件与目录中包中还原。
命令格式 tar 选项 包名 [参数]
选项:
-c 创建新的备份文件
-x 从备份文件中还原文件
-v 显示命令执行过程
-f 指定备份文件
-z 通打包完成后使用gzip命令将包压缩
-j 打包完成后使用bzip2命令将包压缩
-p 保留包中文件原来的属性
用法:
# 将目录test下的文件打包
$ tar -cvf test.tar./test
# 将目录test下的文件打包,并以gzip命令将包压缩
$ tar -zcvf test.tar.gz./test
# 将目录test下的文件打包,并以bzip2命令将包压缩
$ tar -jcvf test.tar.bz2 ./test
#从包test.tar.bz2中还原文件
$ tar -xvf test.tar.bz2
打包:zcvf
解压:zxvf
压缩和解压
-
zip/unzip命令
使用zip命令压缩文件时压缩包一般命名为“文件名.zip”
zip [选项] 压缩包名 参数选项: -j 只保留文件名称及其内容,不存放任何目录名称 -m 文件压缩完成后,删除原始文件 -o 以压缩文件内拥有最新更改时间的文件为准,更新压缩文件的更改时间 -r 当参数为目录时,递归处理目录下的所有文件和子目录 $ zip -r dir1.zip dir1 注意:不能在当前目录压缩该目录使用unzip命令解压
unzip [选项] 压缩包名选项: -l 显示指定压缩包中所包含的文件 -M 将输出结果送到more程序处理 -n 解压时不要覆盖原文件 -o 命令执行后直接覆盖原有文件 -d 指定解压后文件要存放的目录,不存在时可自动创建目录,默认解压在当前目录 -
使用tar命令压缩
tar [选项] [压缩包名] [源文件][root@localhost ~]# tar -cf etc.tar /etc # c:creat f:file 压缩后的文件名 所压缩的文件 [root@localhost ~]# tar -czf etc-gz.tar.gz /etc #使用z压缩工具压缩 [root@localhost ~]# ls -lh |grep etc #压缩对比 -rw-r--r--. 1 root root 12M 6月 27 23:54 etc-gz.tar.gz -rw-r--r--. 1 root root 38M 6月 27 23:45 etc.tar [root@localhost ~]# tar -xf etc.tar 解压 压缩类型分析(了解) [root@localhost ~]# tar -cf etc.tar /etc [root@localhost ~]# tar -czf etc.gz /etc [root@localhost ~]# tar -cjf etc.bz /etc [root@localhost ~]# tar -cJf etc.xz /etc 压缩时间由上到下越来越长,压缩程度越来越狠 [root@localhost ~]# ls -lh |grep etc -rw-r--r--. 1 root root 11M 6月 28 00:18 etc.bz -rw-r--r--. 1 root root 12M 6月 28 00:17 etc.gz -rw-r--r--. 1 root root 38M 6月 28 00:17 etc.tar -rw-r--r--. 1 root root 8.3M 6月 28 00:19 etc.xz
10. >输出重定向和 >> 追加指令
第四章 Vi和Vim编译器及常用命令
一, 介绍

二. Vi和Vim常用的三种模式
插入模式和替换模式【合称为编译模式】:键盘输入的才是字符

-
命令行模式/一般模式/正常模式
用户刚刚启动Vi/Vim,便进入了命令模式,任何键盘输入都是命令

-
插入模式/编译模式/输入模式

-
命令行模式/底线命令模式

三. Vi 和 Vim模式的相互转换

四. Vi和Vim的快捷键
引言:
特别注意,在 vi/vim 中,数字是很有意义的!
数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思
第一部分: 一般模式可用的光标移动、复制粘贴、搜索替换等




第二部分:编辑模式的可用的按钮说明

第三部分:一般模式切换到指令行模式的可用的按钮说明


五. Vi和Vim快捷键一览表

第五章:linux的开机/关机/用户登录注销
一: 关机/重启命令(shutdown)

二:用户的登录和注销
-
基本介绍

-
使用细节
logout注销命令在图形运行级别无效,在运行级别3下有效
第六章:用户管理
一:基本介绍

二:添加用户
基本语法: useradd [选项] 用户名

1.当创建用户成功后,会自动创建和用户同名的家目录
2.也可以通过:
useradd -d 指定目录 新的用户名
给新创建的用户指定家目录

三:指定/修改密码
基本语法: passwd 用户名
1.当你输入密码时看不到:这是正常的,系统设置密文
2.在工作中,密码必须写复杂

四:删除用户
基本语法: userdel 用户名
1. 删除用户,但要保留家目录
userdel 用户名
2. 删除用户,以及删除目录主目录
userdel -r 用户名

3. 在删除用户时,我们一般不会将家目录删除
五:查询用户信息
基本语法: id 用户名

六:切换用户
基本语法:
su - 用户名
1.权限高的用户切换到权限低的用户,不需要输入密码,反之需要
2.当需要返回到原来的用户时,使用exit命令
注意中间是空格
exit命令
重新回到原来的用户

七:查看当前用户/登录用户
基本语法: whoami

八:用户组
1. 介绍
类似于角色,系统可能对有共性的多个用户进行统一的管理类似
2. 增加组
指令:
groupadd 组名
3. 增加用户时直接加上组
指令(基本语法):
useradd -g 用户组 用户名

4. 删除组
指令(基本语法):
groupdel 组名
5. 修改用户组
指令(基本语法):
usermod -g 用户组 用户名

九:用户和组的相关文件

1. /etc/passwd文件

2. /etc/shadow文件

3. /etc/group文件

十:组的管理
1. Linux组的基本介绍

图示

2. 文件/目录的所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
2.1查看文件的所有者
2.1.1 指令
ls -ahl
2.1.2 案例

2.2 修改文件所有者
2.2.1 指令
chown 用户名 文件名
2.2.2 案例


3. 组的创建
3.1 基本指令
groupadd 组名
3.2 案例

4. 文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
4.1 查看文件/目录的所在组
基本指令 ls -ahl
4.2 修改文件所在的组
4.2.1 基本指令 chgrp 组名 文件名
4.2.2 案例

5. 其它组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其它组。
6. 改变用户所在组
在添加用户时,可以指定将该用户添加到那个组中,同样的用root的管理权限可以改变某个用户所在的组。
6.1 改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变用户登录的初始目录
6.2 案例

第七章:权限管理
一:权限的基本介绍
1. ls -l 中显示的内容如下

2. 0-9 位说明


二:rwx 权限详解
1. rwx 作用到文件

2. rwx 作用到目录

3. 文件及目录权限实际案例

三:修改权限-chmod
1. 基本说明
通过chmod指令,可以修改文件或者目录的权限
2. 第一种方式:+、-、= 变更权限

3. 案例
- 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。

2. 给abc文件的所有者除去执行的权限,增加组写的权限

- 给abc文件的所有用户添加读的权限

4. 第二种方式:通过数字变更权限

案例:要求将/home/abc.txt 文件的权限修改成 rwxr-xr-x,使用给数字的方式实现

四:修改文件所有者-chown
1. 基本介绍

2. 案例
- 请将/home/abc.txt文件的所有者修改成tom

2. 请将/home/kkk目录下所有的文件和目录的所有者都修改成tom

五:修改文件所在组-chgrp
1. 基本案例
chgrp newgroup file 改变文件的所有组
2. 案例

第七章:进程管理(重点)
一、进程的基本介绍
- 在linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在的。前端与后端,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但是屏幕上无法看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才能结束。
二、显示系统执行的进程-ps
1. 基本介绍
ps命令是用来查看目前系统中,有哪些正在进行的进程,以及他们的执行情况,可以不加任何参数
参数命令:一般使用的参数是 ps -aux
ps-a显示当前终端的所有进程信息ps-u以用户的格式显示进程的信息ps-x显示后台进程运行的参数
2. 综合说明

3. ps指令详解

4. 查看父进程ps指令详解

5. 应用实例
- 查看父进程
ps -ef | more
2. 查看某一个进程的父进程是什么 ps -ef | grep sshd
三、终止进程kill和killall
1. 介绍
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止进程。使用kill命令来完成此项任务。
2. 基本语法
kill [选项] 进程号 (功能描述:通过进程号杀死进程)
killall 进程名称
(功能描述:通过进程名杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
常用选项:
-9 表示强迫进程立即停止
3. 案例
- 踢掉某个非法登录用户

- 终止远程登录服务sshd,在适当时候再次重启sshd服务

四、查看进程树pstree
1.介绍
基本语法: pstree [选项] 可以更加直观的来看进程信息
常用选项: -p 显示进程的PID
-u 显示进程的所属用户
2. 案例
-
请你以树状的形式显示进程的pid

-
请你以树状的形式显示进程的用户id
pstree -u
五、服务(Service)管理
1. 服务
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它进程的请求,比如【mysql、sshd、防火墙等等】,因此我们又称为守护进程,是Linux中非常重要的知识点。
【原理图】

2. service管理命令
service 服务名 [start | stop | restart | reload | status]
在CentOS7.0后不再使用service,而是使用systemctl
3. 常见服务管理操作
systemctl start/status/stop/restart 服务名 //开启、查看、关闭、重启服务
systemctl reload 服务名 //重新加载服务的配置文件
systemctl enable 服务名 //开机自启服务
systemctl disable 服务名 //开机自关服务
systemctl list-units //列出全部的unit服务
systemctl list-unit-files //列出全部的进程服务
六、端口
lsof -i:端口 显示使用端口的进程
第八章:Linux的 ——rpm包管理器与yum包管理器
Linux提供了软件包的集中管理机制,该机制将软件以包的形式存储在仓库中,方便用户搜索、安装和管理软件包。
RPM软件包管理

RPM软件包分为两种:二进制包和源码包。
1、二进制包中封装的是编译后生成的可执行文件,类似于Windows系统的.exe文件,可使用rpm命令直接安装。
2、源码包中封装的是源代码,在安装之前需先下载源码包以生成源码,再对源码进行编译生成后缀名为.rpm的RPM包,之后才能安装软件本身。
3、后缀.rpm表示二进制包,后缀.src.rpm表示源码包

RPM工具
无法解决依赖
[root@localhost cdrom]# cd Packages/
#检查是否存在安装包
[root@localhost Packages]# ls wget-1.14-18.el7_6.1.x86_64.rpm
wget-1.14-18.el7_6.1.x86_64.rpm
[root@localhost Packages]#rpm -ivh wget-1.14-18.el7_6.1.x86_64.rpm
#使用-i:install -v:显示安装信息 -h:百分比
使用rpm安装软件包:
安装软件包:rpm -ivh 软件包
查询是否安装完成:rpm -q 软件包
查询软件安装路径:rpm -ql 软件名称
查询软件名称:rpm -qa |grep 服务名称 //这个查询出来后就可以卸载包了。
查询软件信息:rpm -qi 软件名称
查询某个文件是那个软件产生的 : rpm -qf 文件路径
删除软件包:rpm -e 软件名称(卸载的是软件,不用加.rpm后缀)
强制删除软件包(不安装依赖):rpm -ivh 软件包 --force
删除软件包(不检查依赖):rpm -ivh 软件包 --nodeps
--force 在安装的时候用(强制安装)
--nodeps 在卸载的时候用(卸载的时候不检查依赖关系)
YUM工具
介绍:基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动依赖处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐的一次次下载,安装。
1、安装 install
2、查询
list和info。yum list用于列出一个或一组软件包;yum info用于显示关于软件包或组的详细信息
[root@localhost ~]# yum list lrzsz
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
已安装的软件包
lrzsz.x86_64 0.12.20-36.el7 @base
[root@localhost ~]# yum info lrzsz
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
已安装的软件包
名称 :lrzsz
架构 :x86_64
版本 :0.12.20
发布 :36.el7
大小 :181 k
源 :installed
来自源:base
简介 : The lrz and lsz modem communications programs
网址 :http://www.ohse.de/uwe/software/lrzsz.html
协议 : GPLv2+
描述 : Lrzsz (consisting of lrz and lsz) is a cosmetically modified
: zmodem/ymodem/xmodem package built from the public-domain version of
: the rzsz package. Lrzsz was created to provide a working GNU
: copylefted Zmodem solution for Linux systems.
使用yum 安装软件包
语法:
安装: yum -y install 软件包
重新安装:yum -y reinstall 软件包
更新:yum -y update 软件包
查询软件包:yum list 软件包
卸载软件包:yum -y remove 软件包
查看文件属于哪个软件:yum provides vim
使用install把对应的软件包下载下来,即可以使用vim
注意:
- yum命令可以相当于windos中的应用商店,可以网上下载安装包后在安装的。而rpm只是安装软件的。
- yum出现下载错误信息:可能出现的原因,/etc/yum.repos.d 文件配置错误,这个是yum的找包地址。
案例
-
配置本地YUM源,我们这里用系统光盘中的软件安装包作为yum源。
-
**本地源:系统安装光盘 ** (yum配置核心目录:/etc/yum.repos.d)
下载源:
[admin@localhost yum.repos.d]$ ls CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo CentOS-Debuginfo.repo CentOS-Sources.repo docker-ce.repo #移除官方源 [root@localhost yum.repos.d]# mv /etc/yum.repos.d/* /tmp/ [root@localhost yum.repos.d]# ls /dev/cdrom #设备光盘文件 /dev/cdrom [root@localhost yum.repos.d]# mkdir /mnt/cdrom #创建挂载目录 [root@localhost yum.repos.d]# mount /dev/cdrom /mnt/cdrom mount: /dev/sr0 写保护,将以只读方式挂载 #编译本地yum [root@localhost yum.repos.d]# vim /etc/yum.repos.d/dvd.repo [dvd] #库的名称 name=dvd本地源 #库的说明 baseurl=file:///mnt/cdrom #记录源的地址 gpgcheck=0 #忽略检验光盘的完整性
编译好本地源后,将系统光盘通电,挂载到/mnt/cdrom

[root@localhost yum.repos.d]# ls /mnt/cdrom/
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
#查看rpm包的数量
[root@localhost yum.repos.d]# ls /mnt/cdrom/Packages/ | wc -l
4072
设置光盘开机自动挂载(开机时会自动执行/root/.bashrc中的指令)
[root@localhost yum.repos.d]# cat /root/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
mount /dev/cdrom /mnt/cdrom #添加开机自动挂载光盘驱动
配置阿里云YUM源
#下载《阿里巴巴开源镜像站》 到官网上根据系统的版本下载镜像源。
[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# ls
CentOS-Base.repo
[root@localhost yum.repos.d]# yum clean all #清理YUM缓存
[root@localost yum.repos.d]# yum makecache #更新YUM仓库
注意,
更换源之后要清空yum缓存 yum clean all
缓存软件信息:
提高搜索/安装软件的速度 yum makecache
源码包管理
rz
rz 命令是win和liunx和以互传的命令
yum provides rz显示rz软件包

yum -y install lrzsz-0.12.20-36.el7.x86_54安装
ngine源码包安装
apache的httpd和nginx都是web服务,都占用80端口
tengine下载的是源码包,源码包不能直接安装,需要机器的环境。
-
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel安装环境 -
useradd www 创建一个tengine的用户
-
tar xvf tengine-tengine-2.2.0.tar.gz //解压缩
-
cd tengine-2.2.0
-
./configure \ --user=www \ //使用用户 --prefix=/usr/local/nginx \ //安装位置 --with-http_stub_status_module \ //可要可不要 --with-http_sub_module \ --with-http_ssl_module \ --with-pcre //设置配置文件 -
make 将源码编译成二进制文件并保存到当前目录下
-
make install
-
usr/local/nginx/sbin/nginx启动nginx服务器 -
usr/local/nginx/sbin/nginx -s stop关闭nginx服务
认识源码包(了解)

第九章:日志管理
1. 日志重要性

2. 常见系统日志

常用是1、4点,遇到错误提示时,可以查看系统日志,上图的第一点使用
在/root目录下,tailf /var/log/messages #实时查看系统日志
日志的优先级
日志的优先级分为7种,级别代号0~7:
0 debug 有调试信息的,日志信息最多
1 info 一般信息的日志,最常用
2 notice 最具有重要性的普通条件的信息
3 warning 警告级别
4 err 错误级别,阻止某个功能或者模块不能正常工作的信息
5 crit 严重级别,阻止整个系统或者整个软件不能工作的信息
6 alert 需要立即修改的信息
7 emerg 内核崩溃等严重信息
none 什么都不记录
自定义日志(了解)

#之后重启日志服务
[root@localhost admin]# systemctl restart rsyslog
3. 日志进程rsyslog
系统专职日志程序,处理大部分日志记录,操作系统有关的信息,如登录信息,程序启动关闭信息,错误信息。
任务一:rsyslog系统日志管理 关心的问题:哪类程序,产生什么的日志,放在什么地方
查看日志进程
[root@localhost admin]# ps aux | grep rsyslogd
root 1205 0.0 0.4 214456 4420 ? Ssl 11:35 0:00 /usr/sbin/rsyslogd -n
动态查看日志文件的尾部:tail -f /var/log/messages 开启两个终端窗口
查看各种日志 /var/log
4. rsyslog配置文件
[root@localhost log]# rpm -qc rsyslog #查看配置文件
/etc/logrotate.d/syslog #rsyslogd相关文件,定义级别(了解)
/etc/rsyslog.conf #rsyslogd的主配置文件(告诉rsyslog进程什么日志,应该存放在哪)
/etc/sysconfig/rsyslog #和日志办轮转(切割)相关

5. 日志轮转logrotate(重点)
任务二:将大量的日志,分割管理,删除旧日志
简介
记录程序运行时的各种信息,通过日志可以分析用户的行为,记录运行轨迹,查找程序问题,但磁盘空间有限,记录的信息再重要也只能记录最后一段时间发生的事。为了节省空间和整理方便,日志文件需要经常按时间或大小等维度分成多份,删除时间久远
工作原理
按照配置进行轮转,配置文件有主配置文件和子配置文件夹(自定义,便于管理)
主文件:/etc/ logrotate.conf (决定每个日志文件如何轮转)
子文件夹:/etc/logrotate.d/*
[root@localhost log]# vim /etc/logrotate.conf
=================全局设置======================
weekly //轮转的周期,一周轮转
rotate 4 //保留4份,当产生第五份的时候,自动删除最旧的一份
create //轮转后创建新文件
dateext //使用日期作为后缀
# compress //是否压缩
include /etc/logrotate.d //包含该目录下的子配置文件,程序运行,在读主 配置文件时,到子配置文件查看,读取
/var/log/wtmp { //对某日志文件设置轮转的方法,优先级最高
monthly //一个月轮转一次
minsize 1M //最小达到1M才轮转,monthly and minsize
create 0664 root utmp //轮转后创建文件并设置权限
rotate 1 //保留一份
}
/var/log/btmp {
missingok //丢失不提示
monthly //每月轮转一次
create 0600 root utmp //轮转后创建新文件,并设置权限
rotate 1 //保留一份
}
[root@localhost log]# vim /etc/logrotate.d/yum #子配置文件下的yum
/var/log/yum.log {
missingok
#notifempty
#maxsize 30k
#yearly
daily #自定义每天轮转一次
rotate 3 #自定义保留三份
create 0600 root root
}
#测试
[root@ftp-server log]# date #查看当下时间
2021年 07月 09日 星期五 23:20:49 CST
[root@ftp-server log]# date 07092322 #修改系统时间(月日时分)
2021年 07月 09日 星期五 23:22:00 CST
[root@ftp-server log]# logrotate /etc/logrotate.conf #手动轮转日志
[root@ftp-server log]# ls /var/log/yum.* #查看日志生成
/var/log/yum.log /var/log/yum.log-20210709
6. 日志安全
[root@ftp-server log]# vim /etc/logrotate.d/syslog
#设置messages轮转
/var/log/messages {
prerotate #设置轮转前的动作
chattr -a /var/log/messages
endscript #动作结束
daily
create 0777 root root
missingok
rotate 3
postrotate #轮转之后的动作
chattr +a /var/log/messages
endscript
}
[root@ftp-server log]# logrotate /etc/logrotate.conf #手动轮转测试配置文件无误。
若要设置其他文件轮转,格式如同messages。


第十章:计划任务/远程连接
一、计划任务
1. 原理示意图


2. 概述
概述:
任务调度就是指系统在某个时间执行的特点的命令或程序
分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份
基本语法:
crontab [选项]
常用选项:
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
3. 参数细节说明
-
五个占位符的说明

-
特殊符号的说明

-
特定时间执行任务案例

4. 快速入门操作题 -
要求
设置任务调度文件:/etc/crontab 设置个人任务调度,执行crontab -e命令 接着输出任务调度文件 如:*/1****ls -l /etc/>/tmp/to.txt 意思说:每小时的每分钟执行ls -1/etc/>tmp/to.txt命令 -
实现步骤
第一步:
crontab -e

第二步:*/1**** ls -l /etc/ > /tmp/to.txt

第三步:当保存退出后就生效了

第四步:在每一分钟都会自动的调用ls -l /etc/ > /tmp/to.txt
4. crond 相关的指令
conrtab-r 终止任务调度
conrtab-l 列出当前有哪些任务调度
service crond restart [重启任务调度]
二、远程管理
1. ssh服务
安装软件:
openssh-server 提供服务
openssh-clients 客户端
openssh
yum install openssh* -y (一般服务器自动就安装好了)
ssh 端口22
服务器端:
启动服务:systemctl start sshd
查看: lsof -i:22
(关闭防火墙: systemctl stop firewalld 和selinux: getenforce 0)
客户端:
远程登录管理:ssh -x 用户名@ip -p 端口
ssh ip
(如果远程登录账号没密码不能远程登录)
修改端口号:在/etc/ssh/sshd_config 的配置文件中找到 #Port=22 的注解,去掉注解,把Port改成你想要的端口。
远程拷贝
需要先安装客户端
scp 本机文件路径 目标文件路径 //把本机文件拷贝到目标文件
例如: scp /a.txt 目标ip地址:/tmp/
scp 目标文件路径 本机文件路径 //把目标文件拷贝的本机文件中
例如:scp 目标ip地址:/tmp/a.txt /tmp/
2. rz sz 命令
安装
root 账号登录后执行以下命令:
yum provides rz //给命令在那个软件包中
yum install -y 软件包 //安装rz
使用:
sz命令发送文件到本地: sz filename
rz命令本地上传文件到服务器: rz (执行该文件后,在弹出框中选择要上传的文件即可。)
第十章:网络管理
一、 网络接口名称规则
-
认识网卡;2. 找到网卡文件; 3. 学习修改文件; 4. 多台服务器互通
[root@localhost admin]# ls /etc/sysconfig/network-scripts/ #查看网卡文件 [root@localhost admin]# systemctl status NetworkManager #查看网络管理程序状态 [root@localhost admin]# systemctl status network #重启网络 [root@localhost admin]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" IPADDR=192.168.0.131 GATEWAY=192.168.0.2 NETMASK=255.255.255.0 DNS1=8.8.8.8 DEFROUTE="yes" IPV4_FAILURE_FATAL="no" NAME="ens33" UUID="536bfb15-8801-4f86-846d-10f3787747de" DEVICE="ens33" ONBOOT="yes" [root@localhost ~]# ip neigh #查路由,网关 [root@localhost ~]# ss -tnl #查端口服务
二、网络测试工具
使用ping命令
- (linux) -c 数字:表示发送多少个包
- (windows) -n数字:表示发送多少个表
- -t : 一直发送数据包
ping www.baidu.com -i 0.01 #ping 百度,间隔时间为0.01s
使用traceroute命令
traceroute www.baidu.com# 测试ping百度经过多少个网关traceroute -m 10 www.baidu.com#设置ping百度10个网关traceroute -n www.baidu.com#只显示ip地址
例如:
traceroute -p 6888 www.baidu.com#探测包使用基本UDP端口设置6888traceroute -w 3 www.baidu.com#对外探测包响应时间为3秒。
三、网络管理实战
OSI模型
指的是开放系统互联模型,由国际标准化组织(ISO) 指定
七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

OSI开放系统互联
应用层:提供应用程序间通信
表示层:处理数据格式,数据加密。
会话层:建立、维护和管理会话。
传输层:建立主机端到端的连接
网络层:寻地和路由选择。
数据链路层:提供介质访问、链路管理。
物理层:比特流传输。
五层模型
应用层:提供应有程序间通信
表示层:处理数据格式,数据加密。
会话层:建立、维护和管理会话。
传输层:建立主机端到端的连接。
网络层:寻址和路由选择
数据链路层:提供介质访问、链路管理
物理层:比特流传输。
五层模型:应用层(APDU【应用层协议数据单元】)、传输层(分段数据)、网络层(数据包)、数据链路层(数据帧)、物理层(比特流)
封装:数据要通过网络进行传输,在发送端要从一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,这个过程叫封装。

tcp协议的3次握手

tcp协议的4次捂手

ensp配置ipv6静态路由
#删除默认网关
ip r d default
#删除静态路由
ip r del 网段/24
#添加默认网关
ip r add default via 网关 dev 网卡名
#列出所有启动的untis(服务)
[root@ftp-server ~]# systemctl list-units
#列出所有启动文件
[root@ftp-server ~]# systemctl list-unit-files
第十一章:文件服务
一、FTP Server
1. FTP 介绍
文件传输协议:是TCP/IP协议组的协议之一,基于C/S模型,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FRP服务器端为参考。主动模式是服务器连接到客户端的端口,被动模式是客户端连接到服务器的端口。
控制端口 command 21/ftp
数据端口 data 20/ftp
FTP服务器端软件包括:Vsftpd、ProFTPD、PureFTPd、Server-U FRP、FileZilla Server 等软件,其中Unix/Linux使用较为广泛的FTP服务器软件为Vsftpd.
Vsftp服务器的登录类型
Vsftp提供了系统用户、匿名用户、和虚拟用户三种不同的登录方式。所有的虚拟用户会映射成一个系统用户,访问时的文件目录是为系统用户的家目录;匿名用户也是虚拟用户,映射的系统用户为ftp,详细信息可以通过man vsftpd.conf查看
2. Vsftp安装配置
1. 环境需求
- 服务端系统:
CentOS7.6软件:vsftpd - 客户端系统:
Windows10软件:xftp客户端
2. 安装epel源 (因为yum中的源可能不全)
yum -y install epel-release.noarch
3. 安装vsftpd及相关依赖
yum -y install vsftpd* pam* db4*
- vsftpd : ftp软件
- pam :认证模块
- DB4 :支持文件数据库
4. vsftpd 配置文件说明
| 配置文件 | 作用 |
|---|---|
/etc/vsftpd/vsftpd.conf | vsftpd的核心配置文件 |
/etc/vsftpd/ftpusers | 用于指定哪些用户不能访问FTP服务器 |
/etc/vsftpd/user_list | 指定允许使用vsftpd的用户列表文件 |
/etc/vsftpd/vsftpd_conf_migrate.sh | 是vsftpd操作的一些变量和设置脚本 |
/var/ftp/ | 默认情况下匿名用户的根目录 |
5. vsftpd 配置详解


6. vsftpd 修改配置前备份配置文件
7. vsftpd 配置匿名用户
- 编辑配置文件 (
/etc/vsftpd/vsftpd.conf)
write_enable=YES
anon_umask=022
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
- 常用的匿名FTP配置项
anon_umask=022 #匿名用户所上传文件的权限掩码
anonymous_enable=YES #是否允许匿名用户访问
anon_upload_enable=YES #是否允许匿名用户上传文件
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录
anon_other_write_enable=YES #是否允许匿名用户有其他写入权
anon_max_rate=0 #限制最大传输速率(字节/秒)0为无限制
8. 开启vsftp服务
systemctl start vsftpd
ps aux | grep vsftpd #查看
二、Ftp客户端 lftp
1. lftp介绍
lftp命令是一款优秀的文件客户端程序,它支持ftp、SETPFTPs等多文件传输协议。lftp支持tab自动补全,记不得命令双击tab键,就可以看到可能的选项了。
2. lftp语法
lftp(选项)(参数)
3. lftp选项
-f: 指定lftp指令要执行的脚本文件
-c:执行指定的命令后退出
–help:显示帮助信息
–version:显示指令的版本号
4. lftp参数
- 站点:要访问的站点的ip地址或者域名。
5. 实例
FTP Server默认配置
[root@ftp-server admin]# yum -y install vsftpd
[root@ftp-server admin]# touch /var/ftp/abc.txt
[root@ftp-server admin]# vim /var/ftp/abc.txt
[root@ftp-server admin]# systemctl start vsftpd
[root@ftp-server admin]# systemctl enable vsftpd
[root@ftp-server admin]# systemctl stop firewalld
有图形化的客户机访问ftp服务器

下载文件
无图形化的客户机访问ftp
[root@localhost admin]# yum -y install lftp
[root@localhost admin]# lftp 192.168.0.131
lftp 192.168.0.131:~> ls
-rw-r--r-- 1 0 0 12 Jul 07 00:41 abc.txt
drwxr-xr-x 2 0 0 6 Apr 01 2020 pub
lftp 192.168.0.131:/>
[root@localhost admin]# wget ftp://192.168.0.131/abc.txt #使用wget下载
[root@localhost admin]# ls
abc.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
abc 前面的代表/var/ftp/ ,为了安全,通常在ftp/下创建文件夹,如要下载到指定文件夹则
[root@localhost admin]# wget ftp://192.168.0.131/abc.txt -O /home/abc.txt
#使用-m可以把文件夹下载下来
[root@localhost admin]# wget -m ftp://192.168.0.131/pub
FTP Server启动上传功能
服务器
[root@ftp-server admin]# cp /etc/vsftpd/vsftpd.conf /tmp/vsftpd.conf
[root@ftp-server admin]# vim /etc/vsftpd/vsftpd.conf
配置文件详解
anonymous_enable=YES #允许匿名登录
anon_upload_enable=YES #允许匿名上传文件
anon_mkdir_write_enable=YES #允许匿名创建文件夹
---------------------------------------------------------------------
[root@ftp-server admin]# mkdir /var/ftp/upload #创建一个用户上传文件到ftp服务器的文件夹
[root@ftp-server admin]# chmod 777 /var/ftp/upload #给文件夹授权
[root@ftp-server admin]# systemctl restart vsftpd
客户机
[root@localhost home]# lftp 192.168.0.131
lftp 192.168.0.131:/> cd upload
lftp 192.168.0.131:/upload> put 5.txt #5.txt为home下的文件
lftp 192.168.0.131:/upload> ls
-rw------- 1 14 50 0 Jul 07 05:06 5.txt
二、NAS存储
1. NAS存储和SAN存储的区别
NAS介绍
- NAS网络连接存储(NAS)是连接到TCP/IP网络(通常是以太网)的文件级数据存储设备。它通常使用网络文件系统(NFS)或CIFS协议,但也可以使用其他选项,如HTTP。它一般是将本地的存储空间共享给其他主机使用,一般通过C/S架构实现通信。它实现的是文件级别的共享,计算机通常将共享的设别为一个文件系统,其文件服务器会管理锁以实现并发访问。常见的NAS有NFS和CIFS。
2. NFS 服务器和samba服务器介绍
3. 安装配置NFS服务器
-
添加hosts的ip解析
vim /etc/hosts [可选] 192.168.122.56 nfs.qfedu.com 192.168.122.85 client.qfedu.com -
安装NFS服务器
yum install -y nfs-utils -
创建NFS存储目录
mkdir /data -
配置NFS服务
- 编辑exports文件,添加从机
vim /etc/exports 192.168.122.0/24(rw,sync,no_root_squash)- 192.168.122.0/24 一个网段的主机可以挂载NFS服务器上的/data目录到自己的文件系统中
-
NFS定制参数说明
- ro:目录只读
- rw:这个选项允许NFS客户机进行读/写访问。缺省选项是只读的。
- secure:这个选项是缺省选项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项。
- async:这个选项可以改进性能,但是如果没有完全关闭NFS守护进程就重启了NFS服务器,这也可能会造成数据丢失。
-
设置NFS服务开机启动
-
先启动rpcbind服务
systemctl start rpcbind.service systemctl enable rpcbind.service 开机自启 -
启动NFS服务
systemctl start nfs-server.service systemctl enable nfs-server.service 开机自启
-
-
确定NFS服务器启动
exportfs -v- rpcinfo -p:检查NFS服务器是否挂载我们想共享的目录 /data
4. 挂载端安装NFS客户端
-
安装NFS软件包
yum -y install nfs-utills -
设置
rpcbind开机启动systemctl enable rpcbind.service -
启动`rpcbind``服务
systemctl start rpcbind.service- 注意:客户端不需要启动nfs服务
-
查看NFS服务端共享
- 检查NFS服务器端是否有目录共享:
showmount -e nfs 服务器IP/nfs服务器主机名
- 检查NFS服务器端是否有目录共享:
-
挂载使用
-
手动挂载
mkdir /data mount -t nfs `ip地址`:/data /data -
开机自动挂载
# vim /etc/fstab IP地址:/data /data nfs dafaults 0 0 # mount -a -
查看挂载
# df
-
三、NFS
网络文件系统,Linux/UNix系统之间共享文件的一种协议,支持多节点同时挂载以及并发写入。作用:提供文件共享服务,为web server配置集群中的后端存储。用于一台nfs服务器管理若干台web服务器的文件并发

服务器
#服务器安装nfs服务
[root@ftp-server home]# yum install -y nfs-utils
#创建一个发布资源的目录
[root@ftp-server home]# mkdir /webdata
[root@ftp-server home]# echo "nfs-test hello world" > /webdata/index.html
#配置文件
[root@ftp-server home]# vim /etc/exports
/webdata 192.168.0.0/24(rw) #允许访问nfs服务器的主机
[root@ftp-server home]# systemctl start nfs-server
[root@ftp-server home]# systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@ftp-server home]# exportfs -v #检查是否配置成功的命令
/webdata 192.168.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
#安装nfs客户端
[root@localhost home]# yum install -y nfs-utils httpd
#查询nfs服务
[root@localhost home]# showmount -e 192.168.0.131
Export list for 192.168.0.131:
/webdata 192.168.0.0/24
#将nfs服务器的目录挂载到客户端,192.168.0.131为服务器地址
[root@localhost home]# mount -t nfs 192.168.0.131:/webdata/ /var/www/html
[root@localhost home]# cat /var/www/html/index.html
nfs-test hello world
------------------------------------------------------------------------
#在服务器上更新文件
[root@ftp-server home]# touch /webdata/index1.html
[root@ftp-server home]# ls /webdata
index1.html index.html
#在客户机上自动跟新
[root@localhost home]# ls /var/www/html
index1.html index.html

第十二章: Web服务器
一、Web 服务器介绍
1. Web服务简介
-
目前最主流的三个Web服务器是
ApacheNginxIIS -
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
-
Web服务器也称WWW服务器,主要功能是提供网上信息浏览服务。Web服务器是可以向发出请求的浏览器提供文档的程序。
-
服务器是一种被动程序只能当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应

二、Apache和Nginx的介绍
1. Apache 介绍
Apache是web服务器软件之一Apache的特性:- 几乎可以运行在所有的计算机平台上。
- 支持最新的http/1.1协议。
- 简单而且强有力的基于文件的配置(http.conf)
- 支持通用网关接口(cgi)
- 支持虚拟主机
- 支持http认证
- 集成prel
- 集成的代理服务器
- 可以通过web浏览器监视服务器的状态,可以自定义日志。
- 支持服务器端包含命令(ssi)
- 支持安全socket层(ssl)
- 具有用户会话过程的跟踪能力
- 支持fastcgi
- 支持
java servlets
2. nginx 介绍
nginx是十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器。
3. Apache 和Nginx 对比
Nginx相对于Apache:- 高并发响应性能非常好。
- 反向代理性能非常好(可用于负载均衡)
- 内存和cpu占用率低
- 功能较Apache少
- 队php可使用cgi方式和fastcgi方式,没有模块编译加载方式。
4. Apache和Nginx总结
Apache拥有丰富的木块组件支持,稳定性强,BUG少,动态内容处理强。Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效。
三、Web 中间件
1. web中间件简介
2. 常见的web中间件
- JAVA中间件
- Tomcat
- weblogic
- Jboss
- Webshere
- Python中间件
- wsgi
- uwsgi
- uWSGI
- Php中间件
- php-fpm
- CGI
- FastCGI
四、Apache服务的搭建与配置
1. Apache服务的搭建
-
关闭
selinux和防火墙- 临时关闭
setenforce 0 systemctl stop firewalld- 修改
selinux的配置文件永久关闭vim /etc/selinux/config
SElinux status: disabled -
安装
epel源yum -y install epel-release.noarch -
yum安装Apache软件
yum -y install httpd* rpm -qa | grep httpd --查看安装的http包安装成功后,会产生下面两个文件
/etc/httpd/conf/httpd.conf #主配置文件 /var/www/html # 默认网站家目录 -
认识在配置文件里的主要参数
# vim /etc/httpd/conf/httpd.conf serverRoot "/etc/httpd" #存放配置文件的目录 Listen 80 #Apache服务监听端口 User apache #子进程的用户 Group apache #子进程的组 ServerAdmin root@localhost #设置管理员邮件地址 DocumentRoot "/var/www/html" #网址家目录 #设置DocumentRoot指定目录的属性 <Directory "/var/www/html"> #网站容器开始标识 Options Indexes FollowSymLinks #找不到主页时,以目录的方式呈现,并允许链接到网站 根目录以外 AllowOverride None #none不使用.htaccess控制,all允许 Require all granted #granted表示运行所有访问,denied表示拒绝所有访问 </Directory> #容器结束 DirectoryIndex index.html #定义主页文件,访问到网站目录时,如果有定义的主页文件,网站会自动访问 AddDefaultCharset UTF-8 #字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异。 -
启动Apache网站
systemctl start httpd.service -
查看httpd服务是否启动
lsof -i:80 -
访问验证httpd服务
-
启动成功后使用浏览器或者curl输入自己的IP地址会看到一个欢迎页面
curl 192.168.1.20 -
每次打开浏览器不是很方便,因此我们可以使用文本浏览器,方便测试
yum -y install elinks #安装elinks文本浏览器 elinks 192.168.5.20 #按ctrl+c 退出
-
Apache配置实例
建立网站主页,在网络根目录下建立一个主页文件
例一:
[root@..]# echo 'main page' > /var/www/html/index.html #往index.html添加内容 [root@..]# systemctl restart httpd.service #重启服务 [root@..]# firefox http://ip地址 #在浏览器进行测试,显示的信息为刚刚输入的内容f例二:将网站家目录修改成:/www目录
[root@..]# mkdir /www #创建/www目录 [root@..]# vim /ect/httpd/conf/httpd.conf 119 DocumentRoot "/www" #修改网站根目录为/www 131 <Directory "/www"> #把这个也对应的修改为/www [root@..]# systemctl restart httpd.service #重新启动apache服务 [root@..]# echo "这是新修改的网站家目录/www" > /www/index.html #往index.html添加内容 [root@..]# firefox http://ip地址 #访问网站,看到新网站根目录下的刚添加的信息例三:修改主页类型或者主页名
[root@..]# vim /etc/httpd/conf/httpd.conf 164 DirectoryIndex index.php #将index.html改成index.php [root@..]# systemctl reload httpd.service #重新加载服务或重启 [root@..]# echo 'php main page' > /www/index.php #这时我们创建一个index.php页面,再使用浏览器访问就能看到了 -
Apache常用命令(不能yum安装httpd,要用源码包安装才可以使用常用命令)
用Apache的常用命令之前要安装httpd的源码包。 下载源码包并解压,进入包执行 ./configure --prefix=/usr/local/apache2 && make && make install #命令是源码包的编译和安装 常用命令 /usr/local/apache2/bin/apachectl -M #查看常见的模块(包含动态和静态) /usr/local/apache2/bin/apachectl -l #查看加载的静态模块 /usr/local/apache2/bin/apachectl -t #检查配置文件有无语法错误 /usr/local/apache2/bin/apachectl graceful #加载配置文件,但不重启 /usr/local/apache2/bin/apachectl start/restart/stop #启动/重启/停止apache服务 -
Apache 配置用户认证
[root@..]# vi /usr/local/apache2/conf/httpd.conf #进入主配置文件把Virtual hosts 下面的一条注解#删了,才会主配置解析上面的配置文件 ... # Virtual hosts # Include conf/extra/httpd-vhosts.conf #把这行的#去掉[root@..]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <Directory /data/www/abc> #/data/www/dac为将要访问的页面的目录 AllowOverride AuthConfig AuthName "cct" AuthType Basic AuthUserFile /data/.htpasswd #指定存放用户名和密码的文件 require valid-user </Directory>- htpasswd 生成密码文件
[root@..]# htpasswd -c /data/.htpasswd cct #指定用户名为cct,输入自己设定的密码 [root@..]# /usr/local/apache2/bin/apachectl graceful #加载配置 -
Apache 配置默认虚拟主机
[root@..]# vi /usr/local/apache2/conf/httpd.conf #进入主配置文件配置可以读到配置默认虚拟主机的配置文件 ... <Directory/> AllowOverride none Require all denied ## 这是207行把denied改成granted </Directory> ... # Virtual hosts # Include conf/extra/httpd-vhosts.conf #把这行的#去掉[root@..]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/tmp/111" #该目录可以不存在 ServerName www.111.com #需要加本地解析, </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/www" ServerName www.test.com #需要加本地解析 ServerAlias www.aaa.com #需要加本地解析 </VirtualHost>- 将这段设定放在虚拟主机配置的最上面。除了已做过设置的域名(aaa、test)外,其余访问的域名均转到/tmp/111下。
- 注意再本地加域名解析后,再本地上验证
14. Apache配置rewrite规则
- Apache中rewrite规则代码均写在
[root@..]# vi /usr/local/apache2/conf/httpd.conf #进入主配置文件把Virtual hosts 下面的一条注解#删了,才会主配置解析上面的配置文件
...
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf #把这行的#去掉
-
域名301跳转
web服务可能会用到多个域名,域名有主次,输入次域名会自动跳转到主域名进行访问。设定为301永久跳转,302是暂时跳转。
[root@..]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <VirtualHost *:80> DocumentRoot "/data/www" <IfModule mod_rewrite.c> RewriteEngine on #打开rewrite功能 RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR] RewriteCond %{HTTP_HOST} ^www.bbb.com$ RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L] </IfModule> </VirtualHost>调用了rewrite模块,RewriteCond是跳转条件,RewriteRule是跳转规则。
-
禁止指定user_agent
RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR] #禁止curl和chrome浏览器访问 RewriteCond %{HTTP_USER_AGENT} ^.*chrome.*[NC] #NC 是不区分大小写的意思 RewrieRule .* - [F] #为禁止的意思 -
通过rewrite限制某个目录
RewriteCond %{REQUEST_URT} ^.*/tmp/.* [NC] #禁止访问tmp目录 RewriteRule .* - [F] -
rewrite规则
- R=301 强制外部重定向
- [F] 禁用URL,返回403HTTP状态码
- NC不区分大小写
- [OR] 或者
-
rewrite变量
%{HTTP_USER_AGENT} #表示:访问的user_agent %{HTTP_HOSH} #表示:当前访问的网址,只是指前缀部分,格式是www.xxx.com不包括“http://" 和 ”/“ %{REQUEST_URI} #表示:访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的”/“。 www.123.com/xiang/1.html #www.123.com表示HOST,xing/1.html表示URI
第十四章:Linux磁盘分区、挂载卸载、磁盘情况查询
一. 分区的基本知识
1. 分区的方式
1.1 mbr分区[传统的]

1.2 gtp分区[目前的]

使用MBR方式创建分区,可通过fdisk命令进行管理fdisk [选项][磁盘]
选项:
-l 详细显示磁盘及其信息
-s 显示磁盘分区容量(单位为block)
-b 设置扇区大小(扇区大小取值为512、1024、2048或4096,单位为MB)
管理磁盘
详细解析 CentOS 7 磁盘挂载
三部曲:分区(隔离)、格式化(放家具/打造柜子格)、挂载(加个门/目录,才能访问)
-
创建和查看磁盘
# fdisk /dev/sdb 创建(分区) # partprobe /dev/sdb 刷新 # fdisk -l /dev/sdb 查看 # lsblk -
创建挂载信息
[root@localhost admin]# mkfs.ext4 /dev/sdb1 #使用ext4格式,格式化sdb1的磁盘 [root@localhost admin]# mkdir /mnt/disk1 #创建一个挂载目录 [root@localhost admin]# mount -t ext4 /dev/sdb1 /mnt/disk1 #将磁盘挂载在目录上 [root@localhost admin]# df -hT #查看文件系统信息
补充:系统目录结构是统一的(根下面有/mnt目录,在mnt/disk1里写入数据,并不是使用sda的内存空间,而是使用sdb1的空间),实际的内存存储在硬盘上。磁盘一旦被挂载,数据写入到新挂载的磁盘,而不是sda的内存。
- MBR主引导记录是一个文件,共64个字节,每16个字节记录一个主分区,所以一块硬盘只有4个分区,如果想要超过4个分区,则需要一个主分区分出来成为扩展分区,扩展分区可以继续分为N个逻辑分区
交换分区管理Swap
作用:“提高”内存的容量,防止OOM
实际生产:大于4GB而小于16GB,最小需要4GB交换空间
大于16GB而小于64GB,最小需要8GB交换空间
大于64GB而小于256GB,最小需要16GB交换空间
2. windows和linux磁盘分区的区别
2.1 windows下的磁盘分区

2.2 linux下的磁盘分区

原理示意图

硬盘说明

硬盘说明示意图


二. 挂载的经典案例【给linux添加一块新硬盘】
1. 需求
给我们的linux系统增加一个新的硬盘,并且挂载到 /home/newdisk目录下

2. 步骤
第一步:给虚拟机添加硬盘
(1) 点击虚拟机;再点击下面的设置

(2) 点击硬盘;再点击添加

(3) 点击硬盘;再点击下一步

(4) 选择SCSI;点击下一步

(5) 选择创建新的虚拟机磁盘;再点击下一步

(6) 指定磁盘容量;选择将虚拟机磁盘拆分成多个文件;点击下一步;点击完成


(7) 点击确定保存

(8) 输入命令发现没有看到新建硬盘;这里重启一次

(9) 重启成功,再次登录进入系统

(10) 再次输入命令查看到硬盘(但是这里还没有分区)

第二步:分区
(1) 输入命令fdisk /dev/sdb
(2) 再输入m
(3)再输入n
(4)在输入p
(5)再输入1;回车;回车
(6)输入w点回车
(7) 再次输入命令lsblk -f 可以查看分区(但是没有其对应的id号和文件类型)-因为只是分了区没有格式化【只有格式化之后才能存储数据】
第三步:格式化
(1)输入命令回车,去格式化
mkfs -t ext4 /dev/sdb1
(2)再次输入命令回车,发现磁盘格式化成功了
lsblk -f
第四步:挂载
(1) 先创建一个目录 /home/newdisk (但是进去之后发现里面是空的,因为没有挂载)

(2) 挂载mount /dev/sdb1 /home/newdisk (这里有一个毛病,因为这是临时挂载,当你重启机器的时候设备和文件之间的挂载关系会断开)
mount /dev/sdb1 /home/newdisk

第五步:设置可以自动挂载【永久挂载】
(1) 编辑文件,输入命令vim /etc/fstab; 进入界面
vim /etc/fstab

(2) 按yyd拷贝一份

(3) 重新编辑,输入wq保存退出

(4) 使编辑后可以永久挂载,为了使之生效输入mount -a 命令回车;再次重启
mount -a

三. 如何卸载断开
1 进入终端;查看;执行umount /dev/sdb1 命令(发现不能卸载–在同一个目录相互冲突)
umount /dev/sdb1
四. 磁盘情况查询
1. 查看系统整体磁盘使用情况(查看百分比)
基本语法 df -h

卸载一个在次查看

2 查看指定目录的磁盘的占用情况
基本语法:
du -h /目录
默认情况:默认为当前目录
参数:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
查询/opt目录的磁盘占用情况,深度为1
输入du -ach --max-depth=1 /opt

3. 磁盘情况——工作实用指令
第一个:统计/home文件下文件的个数
ls -l /home | grep "^-" | wc -l

第二个:统计/home文件下目录的个数
ls -l /home | grep "^d" | wc -l

第三个:统计/home文件下文件的个数,包括子文件里
ls -lR /home | grep "^r" |wc -l

第四个:统计文件夹下目录的个数,包括子文件夹里的
ls -lR /home | grep "^d" |wc -l

第五个:以树状显示目录结构
(1)先按照tree;中间一直确定(提示输入:y)
yum install tree

(2) 输入tree命令
tree

setenforce 0
systemctl stop firewalld
1万+

被折叠的 条评论
为什么被折叠?



