- A+
- Systemd单元类型
- 运行级别
- ntsysv工具
- systemctl工具
- pwd
- cd
- ls
- du
- mkdir
- touch
- ln
- cp
- rm
- mv
- which
- find
- cat
- more
- less
- head
- tail
- wc
- grep
- xargs
- gzip
- bzip2
- gunzip
- bunzip2
- tar
- 三种工作模式
- 输入模式
- 命令模式
- 末行模式
- useradd
- passwd
- usermod
- userdel
- groupadd
- gpasswd
- groupdel
- id
- groups
- finger
- w、who、users
- chmod
- chown
- lsattr
- chattr
- ifconfig
- hostname
- route
- netstat
- ping
- traceroute
- nslookup
- 网络配置
- 设置路由
- 修改主机名
- 网络配置
- 修改主机名
- DNS配置
- hosts配置
- 作用
- 类型
- 查询流程
- 安装文件
- 配置文件
- 安装
- OpenSSH服务端
- OpenSSH客户端
- 密钥对验证的SSH体系
- 概述
- 访问策略
- 配置选项
- 全局配置项
- 共享目录配置项
- 辅助配置内容
- 用户访问的samba
- 设置用户访问授权
- 确定用户访问权限
- 访问地址限制
- window
- linux
- 指定软件仓库
- 服务器安装源
- 网络安装源
- 全局配置项
- 匿名FTP配置项
- 本地用户FTP配置项
- 匿名访问FTP服务
- 用户验证的FTP服务
- Apache简介
- 安装httpd服务器
- web站点部署
- 脚本构成
- 交互式硬件设备
- 重定向操作
- 管道操作符
- 变量的作用
- 变量的类型
以centos7为主
linux初始化
centos安装
安装位置
40G分配内存 / 30G /boot 200M swap 4G /tmp 5935M
软件安装
创建账户
磁盘分区表示方法
linux中将硬盘、分区等设备均表示为文件
硬盘与标准分区结构
常见的文件类型
- centos7默认使用的文件系统类型
- XFS,日志文件系统
- SWAP,交换文件系统
- linux支持的其他文件系统类型
- EXT3、EXT4
- FAT16、FAT32、NTFS
- XFS、JFS
- ……
inode节点与块
元数据 : 创建者、创建日期、大小等,称为索引节点
数据块 : 由多个扇区组成,常见4KB一块,存放文件数据和目录数据
inode区域 : 存储元数据的区域,文件字节数、权限、归属、时间错、连接、数据块位置
inode bitmap : inode使用情况,比如空闲的inode
block bitmap : 块的使用情况,比如空闲inode与空闲块等信息
linux系统引导过程
开机自检[BIOS] => MBR引导 => GRUB菜单 => 加载内核[kernel] => init进程初始化
init进程
由linux内核加载运行/sbin/init程序
是系统中的第一个进程
PID[进程标记]号永远为1
Systemd进程
代替init进程,成为主流
程序位于/usr/lib/systemd/systemd
Systemd的优势
- 向下兼容
- 更快的启动熟读,集中化命令管理,更合理的命令结构
Systemd单元类型
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器[用于实现类似cron的调度任务] |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scpoe | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
运行级别
对应的Systemd目标
运行级别 | Systemd的target | 说明 |
---|---|---|
0 | target | 关机状态,使用该级别时将会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别[默认等同于3] |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主句运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别[默认等同于3] |
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作系统 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
init 3
和systemctl isolate multi-user.target
实现的效果一样
目录结构
目录 | 说明 |
---|---|
bin | 存放的是所有用户都可以执行的命令文件 |
dev | 存放的是设备[硬盘、光盘、摄像头、鼠标等] |
home | 普通用户的家目录 |
lib64 | 库文件所存的目录 |
mnt | 移动存储设备的挂载目录 |
proc | 存放内存所执行的文件,能查看,不能修改 |
run | 自动运行的程序 |
srv | 一些服务 |
tmp | 临时文件 |
var | 日志文件 |
boot | 引导程序 |
etc | 配置文件 |
lib | 库文件所存的目录 |
media | 媒体文件 |
opt | 存放的重要文件和proc差不多 |
root | 管理员用户专用的家目录 |
sbin | 和bin相对应,但只有管理员可以执行 |
sys | 系统 |
usr | 第三方安装软件 |
shell
linux系统中运行的一种特殊程序
在用户和内核之间充当翻译官
用户登录linux系统时,自动加载一个shell程序
bash是linux系统中默认使用的shell程序[文件位于/bin/bash]
linux基础配置
关闭防火墙
-
临时关闭
setenforce 0
-
永久关闭
vim /etc/selinux/config
systemctl stop firewalld
iptables -F
系统服务控制
systemctl 控制类型 服务名称
控制类型
- stop : 关闭
- start : 开启
- restart : 重启
- reload : 重新加载
- status : 查看状态
运行级别切换
查看运行级别
runlevel
systemctl
runlevel只能查看切换运行级别与当前运行级别
systemctl时能查看默认的运行级别
临时切换运行级别
init
systemctl
init的命令参数是运行界别所对应的数字
systemctl的命令参数是具体的target
优化启动项
系统服务管理工具
ntsysv工具
提供一个交互式、可视化窗口,可以在字符终端运行,便于集中管理多个服务
systemctl工具
不提供交互式、可视化窗口,管理单个服务效率更高
- 查看系统服务的启动状态
systemctl is-enabled 服务名称
- 设置系统服务的启动状态
systemctl enable/disable 服务名称
linux命令介绍
linux命令分类
- 内部命令
- 继承与shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
- 属于shell的一部分
- 没有单独对应的系统文件
- 自动载入内存,可以直接使用
- 外部命令
- linux系统中能够完成特定功能的脚本文件或二进制程序
- 属于shell解释器程序之外的命令
- 每个外部命令对应了系统中的一个文件
- 必须只带其对应的文件位置,由shell加载后才能执行
linux命令格式
命令字 [选项] [参数]
帮助信息
help
--help
man / info
别名信息
- 设置别名
alias 命令别名='命令'
alias ll='ls -l --color=auto'
- 删除别名
unalias 命令别名
unalias ll
linux基础命令
目录和文件操作
查看及切换目录
pwd
- 显示用户当前所在的工作目录位置、
cd
- 将用户的工作目录切换到其他位置
指令 | 描述 |
---|---|
cd ./ | 切换当前目录[不做变化] |
cd ../ | 切换到上一级目录 |
cd ~ | 切换到宿主目录 |
cd - | 切换到上一次执行cd的目录 |
ls
指令 | 描述 |
---|---|
ls -l | 以长格式显示 |
ls -h | 显示文件大小等信息 |
ls -a | 查看当前目录下的隐藏文件 |
ls -A | 显示出了"."和".."开头的文件 |
ls -d | 查看目录本身的信息 |
ls *.txt | 查看以.txt结尾的文件【*匹配文件名中的任意多个字符】 |
ls ?.txt | 查看单个字符开头,.txt结尾的文件【?匹配文件名中的一个字符】 |
du
- 统计指定目录[或文件]所占用的磁盘空间的大小
指令 | 描述 |
---|---|
du -a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
du -h | 显示出目录或文件的大小[K、M],默认的大小单位时字节[KB] |
du -s | 只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小 |
创建目录和文件
mkdir
- 创建新的空目录
指令 | 描述 |
---|---|
mkdir -p | 一次创建多层目录[mkdir -p a/b/c/d] |
创建多层,多个目录时,需要注意绝对路径和相对路径
touch
- 创建新的空文件[更新文件的时间标记]
ln
- 为文件或目录创建连接文件[和windows的快捷方式类似]
软链接 | 硬链接 | |
---|---|---|
删除原始文件后 | 失效 | 仍旧可以使用 |
使用范围 | 适用于文件或目录 | 只能用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在一个文件系统[linux分区]内 |
- 软链接
ln -s 源文件或目录 链接文件或目标位置
ln -s /bin/bzip2 /bin/wx/
- 硬链接
ln /bin/bzip2 /bin/wx/
复制删除移动目录
cp
- 将需要复制的文件或目录[源]重建一份,并保存为新的文件或目录,复制后可赋予新名称
指令 | 描述 |
---|---|
cp -f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
cp -i | 覆盖目标同名文件或目录时提醒用户确认 |
cp -p | 复制时保持源文件的权限、属主以及时间标记等属性不变 |
cp -r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
rm
- 删除指定的文件或目录
指令 | 描述 |
---|---|
rm -i | |
rm -rf | 默认全部同意递归删除文件或目录 |
mv
- 将指定的文件或目录转移位置
- 如果目标位置与源位置相同,则相当于执行重命名操作
mv 123 1234 // 这是重命名
mv /root/123.txt /home/mpy // 这是移动
查找目录和文件
which
-
查找可执行命令的在哪里
-
搜索范围由环境变量PATH决定[echo $PATH]
which 命令或程序名
which -a 命令或程序
which ls
which cd
find
-
基于某些条件查找一些文件
-
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
查找类型 | 关键字 | 描述 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用"*"及"?"通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找 一般使用"+"、"-"号设置超过或小于指定的大小作为查找条件 常用的容量单位包括kB[注意k是小写]、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找 问价类型包括普通文件[f]、目录[d]、链接文件[l]、块设备文件[b]、字符设备文件[c]等 块设备是指成块读取数据的设备[硬盘、内存等] 字符设备是指按单个字符读取数据的设备[键盘、鼠标等] |
逻辑运算符 | 描述 |
---|---|
-a | 表示且and |
-o | 表示或or |
find 查找范围 -name 查找的文件名
find / -name 123.txt
find / -size +1024k -a -name log.txt
文件管理
查看和检索文件
cat
- 显示出文件的内容
指令 | 描述 |
---|---|
cat -n | 显示内容行号 |
cat -b | 显示内容行号,但是不现实空行 |
more
- 全屏分页显示文件内容
- 按enter向下逐行滚动
- 按空格向下翻一屏
- 按q退出
less
- 和more一样,但扩展功能更多
- page up向上翻页,page down向下翻页
- 按 / 查找内容,n下一个内容,N上一个内容
- 其他功能和more类似
head
- 查看文件的头几行[默认10行]
指令 | 描述 |
---|---|
head -n | n代表指定的行数 |
head -10 /etc/1.txt // 查看1.txt的前10行
tail
- 查看文件结尾的少部分内容[默认10行]
指令 | 描述 |
---|---|
tail -n | n代表指定的行数 |
tail -f | 动态监测文件末行内容 |
tail -10 /etc/1.txt // 查看1.txt的最后10行
wc
- 统计文件中单词数量等信息
指令 | 说明 |
---|---|
wc -l | 统计行数 |
wc -w | 统计单词个数 |
wc -c | 统计字节数 |
grep
- 在文件中查找并显示包含指定字符串的行
参数 | 描述 |
---|---|
-i | 查找时会忽略大小写 |
-v | 反转查找,输出与查找条件不相符的行 |
查找条件设置
- 要查找的字符串要用引号包裹
^
表示开头,$
表示结构,^$
表示空行
xargs
find / -name hosts | xargs -I {} 命令 {}
将恰面查找的结果放大后面执行,xargs会把执行结果保存到{},之后在通过后面的指令对{}中的内容进行处理
find / -name hosts | xargs -I {} cp {} / // 通过find查找hosts,之后把hosts复制到根目录下
备份和恢复文档
gzip
- 压缩文件
gzip 1.txt // 直接生成1.txt.gz
bzip2
- 压缩文件
bzip2 1.txt // 直接生成1.txt.bz2
gunzip
- 解压文件[等同于 gzip -d]
gunzip 1.txt.gz // 解压文件
bunzip2
- 解压文件[等同于bzip2 -d]
bunzip2 1.txt.bz2 // 解压文件
tar
- 制作归档文件、释放归档文件
参数 | 描述 |
---|---|
-c | 创建.tar格式的包文件 |
-x | 解开.tar格式的包文件 |
-v | 输出详细信息 |
-f | 表示使用归档文件 |
-p | 打包时保留原始文件及目录的权限 |
-t | 列表查看包内的文件 |
-C | 捷豹时指定释放的目标文件夹 |
-z | 调用gzip程序进行压缩或解压 |
-j | 调用bzip2程序进行压缩或解压 |
tar -zcvf 文件或目录 // 压缩文件
tar -zxvf .tar文件 // 解压文件
vi使用
三种工作模式
命令模式 --输入a、i、o--> 进入输入模式 --按esc-->命令模式 --输入:
-->进入末行模式
输入模式
a
: 当前光标的下一行位置插入i
: 当前光标位置插入o
: 下一行的首位置插入
命令模式
光标操作
操作 | 描述 |
---|---|
:set nu | 显示行号 |
:set nonu | 不显示行号 |
#G | 跳转到第几行[#代表行号] |
G | 跳转到文件的行尾 |
gg | 跳转到文件的行首 |
删除操作
操作 | 描述 |
---|---|
x或Del | 删除光标处的单个字符 |
dd | 删除当前光标所在行 |
#dd | 删除从光标处开始的#行内容 |
d^ | 删除当前光标之前到行首的所有字符 |
d$ | 删除当前光标之后到行尾的所有字符 |
复制操作
操作 | 描述 |
---|---|
yy | 复当前整行的内容到剪贴板 |
#yy | 复制从光标处开始复制#行内容[从光标处开始往下数#行,一起复制] |
粘贴操作
操作 | 描述 |
---|---|
P | 将缓冲区中的内容粘贴到光标位置处之后 |
p | 粘贴到光标位置处之前 |
文件内容查找
操作 | 描述 |
---|---|
/word | 从上而下在文件中查找字符串word |
?word | 从下而上在文件中查找字符串word |
n | 定位下一个匹配到的字符串 |
N | 定位上一个匹配到的字符串 |
撤销编辑
操作 | 描述 |
---|---|
u | 按一次取消最近的操作,支持多次重复按u恢复到原来的状态 |
U | 取消对当前行所做的所有编辑 |
ZZ | 保存当前文件内容并退出 |
末行模式
:
: 进入末行模式
保存退出
操作 | 描述 |
---|---|
:w | 保存修改的内容 |
:w /root/newfile | 另存为其他内容 |
:q | 未修改退出 |
:q! | 放弃对文件的修改直接退出 |
:wq | 保存并退出 |
编辑其他文件
操作 | 描述 |
---|---|
:e 其他文件的绝对路径 | 从编辑当前文件切换到编辑其他文件 |
:r 其他文件的绝对路径 | 在当前文件中读取其他文件的内容 |
:sp 其他文件的绝对路径 | 分屏编辑多个文件 |
ctl+w后按上或下 | 分屏编辑后切换编辑对象 |
查找替换
操作 | 描述 |
---|---|
?/old/new | 将当前行找到的第一个old字符串替换为new字符串 |
?/old/new/g | 将当前行找到的所有old字符串全部替换new字符串 |
:#,#s/old/new/g | 在行号"#到#"范围内查找old字符串,全部替换为new字符串 |
:%s/old/new/g | 将整个文件中的old字符串全部替换为new字符串 |
?/old/new/c | 对每个替换动作进行提示确认 |
linux软件安装
linux应用程序基础
linux命令与程序关系
-
文件位置
-
系统命令
一般在/bin和/sbin目录中,或为shell内部指令
-
应用程序
通常在/usr/bin和/usr/sbin目录中
-
-
主要用途
-
系统命令
完成对系统的基本管理工作,例如IP配置工具
-
应用程序
完成相对独立的其他辅助任务,例如网页浏览器
-
-
适用环境
-
系统命令
一般只在字符操作界面中运行
-
应用程序
根据实际需要,有些程序可在图形界面中运行
-
-
运行格式
-
系统命令
一般包括命令字、命令选项和命令参数
-
应用程序
通常没有固定的执行格式
-
linux目录结构
文件类型 | 保存目录 |
---|---|
普通执行程序文件 | /usr/bin |
服务器执行程序文件和管理程序文件 | /usr/sbin |
应用程序配置文件 | /etc |
日志文件 | /var/log |
应用程序文档文件 | /usr/share/doc |
应用程序手册页文件 | /usr/share/man |
软件包的封装类型
封装类型 | 说明 |
---|---|
rpm软件包 | 扩展名为.rpm |
deb软件包 | 扩展名为.deb |
源代码软件包 | 一般为.tar.gz 、.tar.bz2 等格式 |
附带安装程序的软件包 | 在压缩包内提供install.sh、setup等安装程序或以.bin 格式的单个执行文件 |
绿色免安装的软件包 | 在压缩包内提供已经编译号的执行程序文件,解压后打开文件夹可直接使用 |
使用RPM包管理工具
RPM概念
- RPM Pakcage Manager
- 由Red Hat公司提出,被众多linux发行版所采用
- 建立同意的数据库文件
- 详细记录软件包的安装、卸载等变化信息
- 自动分析软件包依赖关系
- 一般命名格式
rpm管理命令
main rpm
- 查询、验证RPM软件包信息
- 维护RPM数据库信息
- 安装、升级、卸载RPM软件包
查询已安装的RPM软件包信息
参数 | 描述 |
---|---|
-qa | 查看系统中已安装的所有RPM软件包列表 |
-qi | 查看指定软件的详细信息 |
-ql | 查询指定软件包所安装的目录、文件列表 |
-qc | 仅显示指定软件包安装的配置文件 |
-qd | 仅显示指定软件包安装的文档文件 |
-qf | 查看程序是由哪个软件包提供的[可以配合which命令] |
查询未安装的RPM软件包信息
参数 | 描述 |
---|---|
-qpi | 查看.rpm安装包文件查看该软件的详细信息 |
-qpl | 查看.rpm安装包内所包含的目录、文件列表 |
-qpc | 查看.rpm安装包内所包含的配置文件列表 |
-qpd | 查看.rpm安装包内包含的文档文件列表 |
安装和卸载RPM软件包
参数 | 描述 |
---|---|
-i | 安装一个新的rpm软件包 |
-U | 升级某个rpm软件,若原本未装,则进行安装 |
-F | 更新某个rpm软件,若原本未装,则放弃安装 |
-e | 卸载指定的RPM软件 |
其他选项
参数 | 描述 |
---|---|
-h | 以# 形式显示安装进度建立统一的数据库文件 |
-v | 显示安装过程中的详细信息 |
--nodeps | 忽略依赖关系,但可能导致软件异常 |
重建RPM数据库
指令 |
---|
rpm --rebuilddb |
rpm -initdb |
导入验证公钥
指令 |
---|
rpm --import /media/cdrom/RPM-GPG-KEY-redhat-release |
从源代码编译安装程序
编译安装过程
-
解包
tar -zxvf 软件包 想要解压的路径
-
配置
cd 解压的路径
./configure --prefix=安装路径[/usr/local/]
-
翻译
make命令
-
安装
make install
linux账户与权限
管理用户和组账号
用户和组
- 用户账号
- 超级用户
- 普通用户
- 程序用户
- 组账号
- 基本组[私有组]
- 附加组[公共组]
- UID和GID
- UID[用户标识符]
- GID[组标识符]
用户管理
保存用户名称、属主目录、登陆shell等基本信息的文件位置/etc/passwd
,没一行对应一个用户的账号记录
保存用户密码/etc/shadow
,每一行对应一个用户的密码[文件中的每一行内容包含九个用:
隔开的配置字段]
useradd
- 添加用户
参数 | 描述 |
---|---|
-u | 指定UID标记号 |
-d | 指定宿主目录,不指定默认/home/用户名 |
-e | 指定账号失效时间 |
-g | 指定用户的基本组名[UID号] |
-G | 指定用户的附加组名[GID号] |
-M | 不为用户建立并初始化宿主目录 |
-s | 指定用户的登陆shell |
文件来源
- 新建用户账号时,从
/etc/skel
目录中复制而来[也就是如果想要给每个用户初始化文件时,可以往这里添加]
主要的用户初始配置文件
.bash_profile : 用户每次登录时执行
.bashrc : 每次进入新的bash环境时执行
.bash_logout : 用户每次退出登录时执行
passwd
- 修改密码
参数 | 描述 |
---|---|
-d | 清空用户的密码,使之无需密码即可登陆 |
-l | 锁定用户账号 |
-S | 查看用户状态 |
-u | 解锁用户账号 |
usermod
- 修改账号属性
参数 | 描述 |
---|---|
-l | 更改用户账号登陆状态 |
-L | 锁定用户状态 |
-U | 解锁用户状态 |
-u、-d、-e、-g、-G、-s与useradd命令含义相同
- 给用户搬家
-
使用usermod搬家
usermod -d /test/test1 test1
-
使用mv搬家
mv /home/test1 /test/
userdel
- 删除用户账号
参数 | 描述 |
---|---|
-r | 表示连宿主的家目录一起删掉 |
组账号管理
保存组账号基本信息/etc/group
保存组账号的密码信息/etc/gshadow
tail -5 /etc/group
[root@localhost ~]# tail -5 /etc/group docker:x:982: admin:x:1001: wazuh:x:981:wazuh test1:x:1002: test2:x:1003:
groupadd
- 单独添加组账号
参数 | 描述 |
---|---|
-g | 指定组的GID |
gpasswd
- 设置组账号的密码[极少用]、添加删除组用户
参数 | 描述 |
---|---|
-a | 向组添加一个用户 |
-d | 从组内删除一个用户 |
-M | 刷新组成员列表,以逗号分隔 |
groupdel
- 删除组后,组成员除权限外,不受影响
组账号查询
id
- 查询用户标识
groups
- 查询用户所属组
finger
- 查询用户账号的详细信息
w、who、users
- 查询已登陆到主机的用户信息
管理目录和文件属性
目录和文件属性
访问权限
- 读取[r] : 允许查看文件内容、显示目录列表
- 写入[w] : 允许修改文件内容,允许在目录中新建、移动、删除文件或者子目录
- 可执行[x] : 允许运行程序、切换目录
归属[所有权]
- 属主 : 拥有该文件或者目录的用户账号
- 属组 : 拥有该文件或者目录的组账号
[root@localhost mpy]# ll drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 下载 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 公共 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 图片 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 文档 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 桌面 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 模板 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 视频 drwxr-xr-x. 2 mpy mpy 6 Dec 31 2021 音乐
chmod
- 修改文件、目录权限
参数 | 描述 |
---|---|
-R | 递归修改目录下所有文件目录权限 |
u/g/o/a | 分别对应属主、属组、其他、所有用户 |
+/-/= | 分别是添加、删除、刷新权限 |
r/w/x | 分别对应读[4]、写[2]、执行[1] |
chmod u+x /root/install.log
chmod ug-r /root/install.log
chmod ug=wr /root/install.log
chmod 744 /root/install.log
chown
- 修改所有者
参数 | 描述 |
---|---|
-R | 递归修改目录下所有文件目录归属 |
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
文件底层属性
- 权限控制之上的对象底层属性
lsattr
- 查看底层权限属性[-代表次控制位没有附加任何底层属性]
[root@localhost mpy]# lsattr /etc/passwd ---------------- /etc/passwd
chattr
- 修改底层权限属性
参数 | 描述 |
---|---|
+/-/= | 和chmod一样的用法 |
i | 全锁 |
a | 修改锁 |
i : 全锁
- 目录 : 可修改已有子对象,不可建立删除子对象
- 文件 : 不可删除、改名、追加、修改
chattr +i /etc/passwd
chattr +i /etc/shadow
之后想要添加或者修改数据都无法执行,有权限也无法执行
a : 修改锁
- 目录 : 可以建立修改子对象,不可以删除子对象
- 文件 : 可以追加内容,不可以修改删除[多用于日志]
chattr +a /var/log/messages
之后只能追加数据,无法删除和修改
附加权限SET位
SET位权限[可以让普通用户执行文件时得到最高权限]
- 为可执行的文件设置,权限字符为's'
- 其他用户执行该文件时,将拥有属主或属组权限
SET位权限类型
- Suid : 对属主用户增加SET位权限
- Sgid : 对属组内的用户增加SET位权限
[root@localhost ~]# chmod u+s /sbin/ifconfig [root@localhost ~]# ll /sbin/ifconfig -rwsr-xr-x. 1 root root 81976 Aug 8 2019 /sbin/ifconfig
粘滞位
让多个用户在同一个设置了开放权限的目录中可以修改属于自己的文件
在root权限下设置
chmod o+t /demo
- 创建账号共享目录
[root@localhost /]# mkdir demo [root@localhost /]# chmod 777 demo
- 切换用户创建目录
[root@localhost /]# su test1 bash-4.2$ cd /demo/ bash-4.2$ mkdir test1 bash-4.2$ exit [root@localhost /]# su test2 [test2@localhost /]$ cd /demo [test2@localhost demo]$ mkdir test2 [test2@localhost demo]$ ls test1 test2
- 切换目录删除文件或目录
[root@localhost /]# su test1 bash-4.2$ ls 1.txt boot dev home lib64 mnt proc run srv test usr bin demo etc lib media opt root sbin sys tmp var bash-4.2$ cd demo/ bash-4.2$ ls test1 test2 bash-4.2$ rm -rf test2 bash-4.2$ ls test1 [root@localhost /]# su test2 [test2@localhost /]$ cd demo/ [test2@localhost demo]$ mkdir test2 [test2@localhost demo]$ exit
- 设置粘滞位
[root@localhost /]# chmod o+t /demo/ [root@localhost /]# ll drwxrwxrwt 4 root root 32 Sep 30 02:30 demo
- 无法删除
[root@localhost /]# su test1 bash-4.2$ cd /demo bash-4.2$ rm -rf test2 rm: cannot remove ‘test2’: Operation not permitted bash-4.2$ ls test1 test2 bash-4.2$ exit exit [root@localhost /]# su test2 [test2@localhost /]$ cd /demo [test2@localhost demo]$ rm -rf test1 rm: cannot remove ‘test1’: Operation not permitted
linux网络配置
查看网络
查看网络设置
ifconfig
- 查看所有网络接口信息
ifconfig
ifconfig 网络接口
ifconfig ens33
hostname
- 查看主机名
hostname
route
- 查看或设置路由
route [-n]
netstat
- 查看系统网络连接状态、路由表、接口信息等
参数 | 描述 |
---|---|
-a | 显示所有 |
-n | 以数字形式显示 |
-p | 代端口 |
-t | tcp协议 |
-u | udp协议 |
-r | 路由信息 |
netstat -anpt // 显示tcp端口
netstat -anpu // 显示udp端口
测试网络连接
ping
- 测试网络连通性
ping [选项] 目标主机
traceroute
- 测试从当前主机到目的的主机之间经过的网络节点[路由跟踪]
traceroute 目标主机地址
nslookup
- 测试DNS域名解析
nslookup 目标主机地址 [DNS服务器]
设置网络
-
临时配置 - 使用命令调增网络参数
- 简单、快速,可直接修改运行中的网络参数
- 一般只适合在调试网络的过程中使用
- 系统重启以后,所做的修改将会失效
-
永久配置 - 通过配置文件修改网络参数
-
修改各项网络参数的配置文件
-
适合对服务器设置固定参数时使用
-
需要重载网络服务或者重启以后才会生效
-
临时配置
网络配置
- 设置网络接口的IP地址、子网掩码
ifconfig 接口名 ip地址 [netmask 子网掩码]
ifconfig 网络接口 ip地址[/掩码长度]
- 禁用或者重新激活网卡
ifconfig 网络接口 up
ifconfig 网络接口 down
- 设置虚拟网络接口
ifocnfig 接口名:序号 ip地址
ifconfig ens1:1 10.1.1.1
设置路由
- 添加到指定网段的路由记录
route add -net 网段地址 gw ip地址
- 删除到指定网段的路由记录
route del -net 网段地址
- 删除路由表中的默认网关记录
route del default gw ip地址
- 向路由表中添加默认网关记录
route add default gw ip地址
route add default gw 192.168.1.1
route add -net 0.0.0.0 gw 192.168.1.1
修改主机名
hostname 主机名
hostname mpy
bash // 刷新bash后生效,重启后失效
永久配置
网络配置
网络接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens33
[第一块以太网卡的配置文件]
vim /etc/sysconfig/network-scripts/ifcfg-ens33 // 修改配置 BOOTPROTO=dhcp // 换成static静态获取 UUID=c10e5d41-4157-4f3b-b6a0-41e58843f972 // 前面加上'#' ONBOOT=no // 改成yes // 加上配置信息 IPADDR=ip地址 NETMASK=255.255.255.0 GATEWAY=网关地址 DNS1=DNS地址[8.8.8.8] DNS2=DNS地址[114.114.114.114] // 重启服务 systemctl restart network
修改主机名
主机名配置文件/etc/hostname
[root@mpy ~]# cat /etc/hostname mpy.localhost
DNS配置
DNS配置文件/etc/resolv.conf
[root@mpy ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 114.114.114.114
hosts配置
hosts[本地主机映射文件]配置文件在/etc/hosts
- 保存主机名与IP地址的映射记录
[root@mpy ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 默认情况下,系统首先从hosts文件查找解析记录
- hosts文件只对当前的主机有效
- hosts文件可以减少DNS查询过程,从而加快访问速度
DHCP服务
为大量客户机自动分配地址,提供集中管理减轻管理和维护成本、提高网络配置效率
包括网卡IP地址、子网掩码、对应的网络地址、广播地址、默认网关、DNS服务器
DHCP原理
DHCP主要文件
主配置文件 : /etc/dhcp/dhcp.conf
执行程序 : /user/sbin/dhcpd
、/usr/sbin/dhcrelay
执行参数配置 : /etc/sysconfig/dhcpd
- dhcpd.conf构成[全局配置参数、网段声明、配置选项、配置参数、主机声明]
- 全局设置,作用于整个DHCP服务器
ddns-update-style none;
default-lease-time 21600;
max-lease-time 43200;
option domain-name "domain.org"
option domain-name-servers 202.106.0.20
- Subnet网段声明,作用于整个子网段
range参数 : 设置用于分配ip地址池
option subnet-mask参数 : 设置客户机的子网掩码
option routes参数 : 设置客户机默认网关
subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option subnet-mask 255.255.255.0; option routes 192.168.1.1; }
- host主机声明,静态分配
- hardware ethernet参数 : 指定对应主机的MAC地址
- fixed-address参数 : 指定为该主机保留的IP地址
host prtsvr{ hardware ethernet 00:0c:29:7a:c3:27; fixed-address 192.168.1.101; }
安装DHCP服务
- 确保镜像文件可以使用
- 可以重新挂载路径
mount | grep CentOS
umount /dev/sr0
mount /dev/sr0 /media/
- 找到dhcp软件
cd /media/Packages
ls | grep dhcp
- 安装软件
rpm -ivh dhcp-4.2.5-68.el7.centos.x86_64.rpm
配置DHCP服务器
- 修改配置文件
vim /etc/dhcp/dhcpd.conf
- 在末行模式下导入样板文件
:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
- 在52行进行修改
subnet 192.168.226.0 netmask 255.255.255.0 { // 声明网段 range 192.168.226.200 192.168.226.211; // 地址池 option domain-name-servers 114.114.114.114,8.8.8.8; // DNS option domain-name "internal.example.org"; option routers 192.168.226.254; // 默认网关 option broadcast-address 192.168.226.255; // 网段广播 default-lease-time 600; max-lease-time 7200; }
- 开启DHCP服务
systemctl start dhcpd
搭建DHCP环境
- centos7网络配置
- windows测试机器
- 查看新网卡
[root@localhost mpy]# ip a sh 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:7a:c6:28 brd ff:ff:ff:ff:ff:ff inet 192.168.50.131/24 brd 192.168.50.255 scope global noprefixroute dynamic ens33 valid_lft 1723sec preferred_lft 1723sec inet6 fe80::610:331e:d510:b244/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:7a:c6:32 brd ff:ff:ff:ff:ff:ff inet6 fe80::690a:d735:4240:f806/64 scope link noprefixroute valid_lft forever preferred_lft forever
- 配置新网卡
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
cd /etc/sysconfig/network-scripts
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens36" #UUID="c10e5d41-4157-4f3b-b6a0-41e58843f972" DEVICE="ens36" ONBOOT="yes" ZONE=public IPADDR="192.168.12.5" NETMASK="255.255.255.0" GATEWAY="192.168.12.1"
- 启动新网卡[ens36]
ifup ens36
- 配置DHCP配置文件
- 这里的IP信息和上面网卡的信息要对应
subnet 192.168.12.0 netmask 255.255.255.0 { range 192.168.12.100 192.168.12.150; option domain-name-servers 114.114.114.114,8.8.8.8; option domain-name "internal.example.org"; option routers 192.168.12.1; option broadcast-address 192.168.12.255; default-lease-time 600; max-lease-time 7200; }
- windows机器重新获取ip
ipconfig /flushdns
ipconfig /renew
DNS服务
作用和类型
作用
- 正向解析 : 根据主机名称[域名]查找对应的IP地址
- 反向解析 : 根据IP地址查找对应的主机域名
类型
- 缓存域名服务器
- 也称为高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
- 主域名服务器
- 特定DNS区域的官方服务器,具有唯一性
- 负责维护该区域内所有域名->IP地址的映射记录
- 从域名服务器
- 也称为辅助域名服务器
- 其维护的域名->IP地址记录来源于主域名服务器
查询流程
hosts --> 缓存 --> 首选DNS --> 迭代查询[根域名->顶级域名->二级域名……]--> 返回结果
安装文件和配置文件
安装文件
bind-9.9.4-61.el7.x86_64.rpm : 安装文件
bind-utils-9.9.4-61.el7.x86_64.rpm : 工具包
bind-libs-9.9.4-61.el7.x86_64.rpm : 运行库
bind-chroot-9.9.4-61.el7.x86_64.rpm : 伪装目录
配置文件
- 全局TTL配置及SOA记录
- $TTL[Time To Live生存时间]记录
- SOA[Start Of Authority授权信息开始]记录
- 分号';'开始的部分表示注释信息
- 正向域名解析记录
- NS域名服务器[Name Server]记录【指该域名区域中,有哪些服务器负责解析这个域名】
- MX邮件交换[Mail Exchange]记录【】
- A地址[Address]记录,只用在正向解析区域中
- CNAME别名[Canonical Name]记录
- 反向域名解析记录
- PTR指针[Point]记录,只用在反向解析区域中
- 记录的第一列指定IP地址中的主机地址部分即可
搭建DNS服务器
- 两台centos7服务器,主DNS192.168.12.5,从DNS192.168.12.104
安装
配置两个正向解析[chaitin.com | alibaba.com]和一个反向解析[192.168.50.131 -> bj.pdns.com]
- 在光盘中找到软件
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
- 复制文件修改权限
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var/
cp -rp /var/named/dynamic/ /var/named/chroot/var/named/
chown -R :named /var/named/chroot/var/named/
chown -R named /var/named/chroot/var/named/data/
chown -R named /var/named/chroot/var/named/slaves/
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 修改配置文件
vim /var/named/chroot/etc/named.conf // 主配置文件
vim /var/named/chroot/etc/named.rfc1912.zones // 声明DNS区域的文件
- 生成对应域名的数据文件
cd /var/named/chroot/var/named/
[root@localhost etc]# cd /var/named/chroot/var/named/ [root@localhost named]# ls data dynamic my.external.zone.db my.internal.zone.db named.ca named.empty named.localhost named.loopback slaves
- 复制正向解析模版[named.localhost]
cp -p named.localhost chaitin.com.zone
cp -p named.localhost alibaba.com.zone
- 复制反向解析模版[named.loopback]
cp -p named.loopback 50.168.192.in.zone
vim chaitin.com.zone
- 正向配置
- 反向配置
- 运行named
systemctl start named
- 复制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 运行named-chroot
systemctl start named-chroot
- 解决报错
[root@localhost named]# systemctl start named-chroot.service Job for named-chroot.service failed because the control process exited with error code. See "systemctl status named-chroot.service" and "journalctl -xe" for details. [root@localhost named]# systemctl status named-chroot.service ● named-chroot.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named-chroot.service; disabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2022-10-06 06:30:30 PDT; 7s ago Process: 83547 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} -t /var/named/chroot $OPTIONS (code=exited, status=1/FAILURE) Process: 83544 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -t /var/named/chroot -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Oct 06 06:30:30 localhost named[83549]: couldn't add command channel 127.0.0.1#953: address in use Oct 06 06:30:30 localhost named[83549]: couldn't add command channel ::1#953: address in use Oct 06 06:30:30 localhost named[83549]: isc_stdio_open 'data/named.run' failed: permission denied Oct 06 06:30:30 localhost named[83549]: configuring logging: permission denied Oct 06 06:30:30 localhost named[83549]: loading configuration: permission denied Oct 06 06:30:30 localhost named[83549]: exiting (due to fatal error) Oct 06 06:30:30 localhost systemd[1]: named-chroot.service: control process exited, code=exited status=1 Oct 06 06:30:30 localhost systemd[1]: Failed to start Berkeley Internet Name Domain (DNS). Oct 06 06:30:30 localhost systemd[1]: Unit named-chroot.service entered failed state. Oct 06 06:30:30 localhost systemd[1]: named-chroot.service failed. [root@localhost named]# systemctl start named-chroot Job for named-chroot.service failed because the control process exited with error code. See "systemctl status named-chroot.service" and "journalctl -xe" for details. [root@localhost named]# journalctl -xe -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit named-chroot-setup.service has begun shutting down. Oct 06 06:31:52 localhost polkitd[601]: Unregistered Authentication Agent for unix-process:83757:1812767 (system bus name Oct 06 06:31:52 localhost systemd[1]: Stopped Set-up/destroy chroot environment for named (DNS). -- Subject: Unit named-chroot-setup.service has finished shutting down -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit named-chroot-setup.service has finished shutting down. Oct 06 06:31:52 localhost dbus[581]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd' Oct 06 06:31:53 localhost setroubleshoot[83811]: SELinux is preventing /usr/sbin/named from append access on the file nam Oct 06 06:31:53 localhost python[83811]: SELinux is preventing /usr/sbin/named from append access on the file named.run. ***** Plugin catchall_boolean (89.3 confidence) suggests ****************** If you want to allow named to write master zones Then you must tell SELinux about this by enabling the 'named_write_master_zones' Do setsebool -P named_write_master_zones 1 ***** Plugin catchall (11.6 confidence) suggests ************************** If you believe that named should be allowed append access on the named.run file Then you should report this as a bug. You can generate a local policy module to allow this access. Do allow this access for now by executing: # ausearch -c 'named' --raw | audit2allow -M my-named # semodule -i my-named.pp [root@localhost named]# ausearch -c 'named' --raw | audit2allow -M my-named ******************** IMPORTANT *********************** To make this policy package active, execute: semodule -i my-named.pp [root@localhost named]# semodule -i my-named.pp
根据提示运行下面两行代码
ausearch -c 'named' --raw | audit2allow -M my-named
semodule -i my-named.pp
- 设置windows机器IP
- 关闭centos防火墙
systemctl stop firewalld
iptables -F
- windows机器进行测试
C:UsersAdministrator>nslookup 默认服务器: bj.pdns.com Address: 192.168.12.5 > www.alibaba.com 服务器: bj.pdns.com Address: 192.168.12.5 DNS request timed out. timeout was 2 seconds. DNS request timed out. timeout was 2 seconds. 名称: www.alibaba.com Address: 129.168.226.141 > www.chaitin.com 服务器: bj.pdns.com Address: 192.168.12.5 DNS request timed out. timeout was 2 seconds. DNS request timed out. timeout was 2 seconds. 名称: www.chaitin.com Address: 192.168.226.141
搭建从域名服务器
- 区域传送
- 在光盘中找到软件
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
- 复制文件修改权限
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var/
cp -rp /var/named/dynamic/ /var/named/chroot/var/named/
chown -R :named /var/named/chroot/var/named/
chown -R named /var/named/chroot/var/named/data/
chown -R named:named /var/named/chroot/var/named/slaves/
chmod -R 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 修改配置文件
- 在客户端配置
vim /var/named/chroot/etc/named.conf // 主配置文件
vim /var/named/chroot/etc/named.rfc1912.zones
zone "alibaba.com" IN { type slave; file "slaves/alibaba.com.zone d"; masters { 192.168.12.5; }; };
- 在服务器段配置
vim /var/named/chroot/etc/named.rfc192.zones
zone "alibaba.com" IN { type master; file "alibaba.com.zone"; allow-update { 192.168.12.101; }; // 这里改成客户端的IP ;
- 客户机设置DNS
vim /etc/resolv.conf
nameserver 192.168.12.5
- 确保可以ping通
- 异常处理
dumping master file: slaves/tmp-dt1dKHtvrc: open: permission denied
- 权限不够
chown -R named:named /var/named/chroot/var/named/slaves/
- 启动服务[遇到异常,和上面的DNS报错处理方法一样]
systemctl start named-chroot
vim /var/named/chroot/var/named/slaves/alibaba.com.zone
远程访问及控制
SSH远程管理
OpenSSH服务端
ssh协议
- 为客户机提供安全的shell环境,用于远程管理
- 默认端口 : TCP 22
OpenSSH
- 服务名称 : sshd
- 服务端主程序 : /usr/sbin/sshd
- 服务端配置文件 : /etc/ssh/sshd_config
服务监听选项
- 端口号、协议版本、监听IP地址
- 禁止反向解析
用户登陆控制
- 禁止root用户、空密码用户
- 登陆时间、重试次数
- AllowUsers、DenyUsers
默认的链接命令
- ssh [远程安全登陆]
ssh user@host -p 22
- scp [远程安全复制]
scp user@host:file1 file2 // 把服务器的文件拷贝到本地,file1表示服务器文件路径,file2表示本机文件存放路径
scp file1 user@host:file2 // 把本地文件拷贝到服务器中,file1表示本机文件存放路径,file2表示服务器文件路径
OpenSSH客户端
- xhell
- mobaxterm
密钥对验证的SSH体系
实现过程
- 创建密钥对
Linux使用ssh-keygen
命令
可用的加密算法 : RSA或DSA
-
密钥文件 : id_rsa
-
公钥文件 : id_rsa.pub
- 上传公钥文件id_rsa.pub
任何方式均可[共享、FTP、Email、SCP……]或者命令导入ssh-copy-id -i 本地公钥文件位置 user@host
- 导入公钥信息
将公钥文本添加至目标用户的公钥库或者命令导入ssh-copy-id -i 本地公钥文件位置 user@host
公钥文件 : ~/.ssh/authorized_keys
ssh-copy-id -i ~/.ssh/id_rsa.pub lisi@192.168.16.21
- 使用密钥对验证方式
验证用户 : 服务端的用户lisi
验证密码 : 客户端的用户zhangsan的私钥短语
vim /etc/ssh/sshd_config
将PubkeyAuthentication yes前面的注释去掉,将公钥认证开启
将PasswordAuthentication yes改成no,将密码认证关掉
TCP Wrappers
linux中的一个外挂程序
概述
保护机制的实现
- 通过tcpd主程序对其他服务程序进行包装
- 由其他服务程序调用libwrap.so.*链接库
访问策略
- 访问控制策略的配置文件
/etc/hosts.allow
/etc/hosts.deny
- 设置访问控制策略
- 策略格式【服务列表:客户机地址列表】
- 服务列表【多个服务以逗号分隔,ALL表示所有服务】
- 客户机地址列表
- 多个地址以逗号分隔,ALL表示所有地址
- 允许使用通配符?和*
- 网段地址,如192.168.1.或者192.168.1.0/255.255.255.0
- 区域地址,如.benet.com
vim /etc/hosts.allow sshd:192.168.12.100 vim /etc/hosts.deny sshd:all
linux文件传输服务
SAMBA服务
-
SMB协议
服务消息块
-
CIFS协议
通用互联网文件系统
-
Samba协议
smbd : 提供对服务器中文件、打印资源的共享访问[TCP139、445]
nmdb : 提供基于NetBIOS主机名的解析[UDP137、138]
配置目录
/etc/samba
/etc/samba/smb.conf
配置文件检查工具
- testparm
配置信息
配置选项
/etc/samba/smb.conf
- [global] : 全局设置
- [homes] : 用户目录共享设置
- [printers] : 打印机共享设置
- [myshare] : 自定义名称的共享目录设置
全局配置项
- workgroup : 所在工作组名称
- server string : 服务器描述信息
- security : 安全级别,可用值[shell、user、server、domain]
- log file : 日志文件位置,"%m"变量表示客户机地址
- passwd backend : 设置共享账户文件的类型
共享目录配置项
- comment : 对共享目录的注释、说明信息
- path : 共享目录在服务器中对应的实际路径
- browseable : 该共享目录在网上邻居中是否可见
- guestok : 是否允许所有人访问,等效于"public"
- writable : 是否可写,与read only的作用相反
- read only : 是否可读
- write list : 是否可写
- valid users : 允许哪些用户或组可读【valid users=admin,@manager // admin表示用户,@manager表示manager组】
- directory mask : 默认上传目录权限[0666]
- create mask : 默认上传文件权限[0777]
辅助配置内容
-
注释行 : 以#开头的行
-
配置样例行 : 以;开头的行
-
结合grep命令可以提取有效配置行
cat /etc/samba/smb.conf.example | grep -v "^#" smb.conf | grep -v "^;" | grep -v ^$
用户访问的samba
- 建立samba用户数据库文件
/var/lib/samba/private/passdb.tdb
- 设置上传目录及权限
mkdir -m 777 /upload
vim /etc/samba/smb.conf
directory mask = 0755 // 默认上传目录权限
create mask = 0644 // 默认上传文件权限
[upload]
comment=upload
path=/upload
public=yes
read only=yes // 所有人可以读
write list=admin // admin用户可写
- 共享账号映射[别名]
vim /etc/samba/smbusers
添加以下信息
zhangsan = zs
root = administrator
- 启用别名
vim /etc/samba/smb.conf
在[global]中添加或修改
username map = /etc/samba/smbusers
- 重启服务
systemctl restart smb nmb
设置用户访问授权
- 新建共享目录与共享用户
- 修改smb.conf配置文件,添加名为tools的共享目录
- 重新加载smb.conf文件、或重启smb服务
确定用户访问权限
- 设置目录权限
- 设置上传文件和目录的默认权限
访问地址限制
- 一般用在全局配置[global]部分
- hosts allow配置项 : 仅允许特定的客户机
- hosts deny 配置项 : 仅拒绝特定的客户机
- 客户机地址表示形式
- 以空格分隔多个地址
- 主机名或IP地址,例如 : 192.168.12.101或者prtsvr
- 网络地址,例如 : 173.17.或者173.17.0.0/255/255/0/0
vim /etc/samba/smb.conf
[global]
hosts allow = 192.168.4. 173.17.
搭建文件共享服务器
https://odinxu.com/post/windows-access-centos-samba/
- 重新挂载镜像文件
mount | grep CentOS
umount /dev/sr0
mount /dev/sr0 /media/
cd /media/Packages
- 安装主程序
rpm -ivh samba-4.7.1-6.el7.x86_64.rpm
或者 yum install -y samba【缺少依赖时使用】
- 建立samba用户数据库文件
useradd zhangsan
pdbedit -a -u zhangsan // 将系统用户添加为samba用户
pdbedit -L // 查看samba用户
pdbedit -vL // 查看所有的samba用户
-
关闭防火墙、SELINUX
systemctl stop firewalld
setenforce 0
-
windows的cmd输入
\192.168.12.5
输入账号密码登陆
访问共享文件夹
window
cmd下输入\samba服务器IP
linux
smbclient
命令,查看及登陆使用共享
smbclient -U 用户名 -L IP地址
smbclient -U 用户名 //IP地址/目录
- 挂载共享文件
mkdir /media/smbdir
mount -t cifs -o username=用户名 //IP地址/目录 /media/smbdir
mount -t cifs -o username=zs //192.168.12.5/zhangsan /media/smbdir
-
要使用有权限的账户root,不然可能会报错
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
案例
share目录 | manager目录 | ||
---|---|---|---|
管理员 | admin | 读写 | 读写 |
经理 | manager组 | 只读 | 只读 |
用户 | zhangsan | 只读 | 无 |
创建共享目录 : share、manager
mkdir share
mkdir manager
创建访问用户 : admin、zhangsan、jingli1、jingli2
useradd admin、zhangsan、jingli1、jingli2
pdbedit -u -a admin、zhangsan、jingli1、jingli2
创建访问组 : manager
groupadd -g 1500 manager
权限需求1 : share可以被所有人访问下载,但是只有admin可以上传
chmod 777 /share/ /manager/
权限需求2 : manager只有属于manager组的用户和admin可以访问下载,其他无权[admin还可以上传]
- 修改所有人可以读,admin用户可读可写
vim /etc/samba/amb.config [tongzhi] comment=yuangongxinxi path=/share public=yes read only=yes // 所有人可以读 write list=admin // admin用户可写 [manager] comment=manager path=/manager public=yes read only=yes // 所有人可读 write list=admin // admin用户可写
- 修改其他用户[zhangsan]无法读取manager目录
vim /etc/samba/amb.config [manager] comment=manager path=/manager public=no read only=yes // 所有人可读 valid users=admin,@manager // admin表示用户,@manager表示manager组 write list=admin // admin用户可写
YUM服务
部署YUM软件仓
指定软件仓库
- 使用本地【基于光盘】
/etc/yum.repos.d/*
- 重新挂载光盘
umount /dev/sr0
mount /dev/sr0 /media
- 移动源文件
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
- 指定源
vim /etc/yum.repos.d/test.repo
[local-yum]
name = local-yum
baseurl = file:///media/
enabled=1
gpgcheck=0
- 清除yum缓存,重新生成
yum clean all
yum list
- 安装软件
yum install -y 软件
yum install -y vsftpd
服务器安装源
-
服务器端设置[1. 修改挂载点,将目录设置为ftp共享目录 2. 直接将挂载点设置为默认的/var/ftp/]
-
重新挂载光盘
umount /dev/sr0
mount /dev/sr0 /media/
-
设置好ftp服务[允许匿名访问,修改他的默认共享路径为/media]
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES // 开启匿名访问
local_enable=NO // 关闭本地用户
write_enable=YES // 开放服务器写的权限
anon_umask=022
anon_upload_enable=YES // 允许匿名上传
anon_mkdir_write_enable=YES // 允许匿名用户创建目录
anon_other_write_enable=YES // 开放其他写入权
anon_root=/media // 设置共享路径
dirmessage_enable=YES
-
-
客户端设置
-
保存原来的源
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
-
新建源
vim yum-ftp.repo
[yum-ftp]
name=yum-ftp
baseurl=ftp://IP地址
enable=1
gpgcheck=0
-
清除原来的源缓存
yum clean all
-
更新源
yum list
-
网络安装源
FTP服务
FTP概述
控制连接 : TCP21,用于发送FTP命令信息
数据连接 : TCP20,用于上传、下载数据
-
数据连接的建立类型
- 主动模式 : 服务端从20端口主动向客户端发起连接
- 被动模式 : 服务端在指定范围内某个端口被动等待客户连接
-
FTP传输模式
- 文本模式 : ASCII模式,以文本序列传输数据
- 二进制模式 : Binary模式,以二进制序列传输数据
-
FTP类型
- 匿名用户、本地用户、虚拟用户
-
常见的FTP服务器程序
- IIS、Serv-U
- wu-ftpd、Proftpd
- vsfftp[Very Secure FTP Daemon]
-
常见的FTP客户端程序
- ftp命令
- CuteFTP、FlashFXP、LeapFTP、Filezila
- gftp、kuftp
vsftp概述
主程序 : /usr/sbin/vsftpd
服务名 : vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers
: 黑名单,出现的用户禁止登陆/etc/vsftpd/user_list
: 用户列表
主配置文件
/etc/vsftpd/vsftpd.conf
全局配置项
listen=YES : 是否独立运行的方式监听服务
listen_address=192.168.12.1 : 设置监听的IP地址
listen_port : 设置监听FTP服务的端口
write_enable=YES : 是否启用写入权限
download_enable=YES : 是否允许下载文件
userlist_enable=YES : 是否启用user_list列表文件
userlist_deny=YES : 是否禁用user_list中的用户
max_clients=0 : 限制并发客户端连接属
max_per_ip=0 : 限制同一IP地址的并发连接数
匿名FTP配置项
anonymous_enable=YES : 启用匿名访问
anon_umask=022 : 匿名用户上传文件的权限掩码
- 文件默认是666,这里的022表示的是反码[666-022=644的权限]
- 目录默认是777[777-022=755的权限]
anon_root=/var/ftp : 匿名用户的FTP根目录
anon_upload_enable=YES : 允许上传文件
anon_mkdir_write_enable=YES : 允许创建目录
anon_other_write_enable=YES : 开放其他写入权
anon_max_rate=0 : 限制最大传输速率[字节/秒]
本地用户FTP配置项
local_enable=YES : 是否启用本地系统用户
local_umask=022 : 本地用户上传文件的权限掩码
chroot_local_user=YES : 是否将用户禁锢在主目录
local_max_rate=0 : 限制最大传输速率[字节/秒]
-
vsftp支持tcp_wrappers的访问控制
- tcp_wrappers=YES
vim /etc/hosts.allow vsftpd:192.168.12.100 vim /etc/hosts.deny vsftpd:all
基于系统服务的FTP
匿名访问FTP服务
-
准备匿名FTP访问的目录[使匿名FTP对该目录有写入权限]
chown ftp /var/ftp/pub/
-
开放匿名用户配置并启动vsftpd服务
vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES // 开启匿名访问 local_enable=NO // 关闭本地用户 write_enable=YES // 开放服务器写的权限 anon_umask=022 anon_upload_enable=YES // 允许匿名上传 anon_mkdir_write_enable=YES // 允许匿名用户创建目录 anon_other_write_enable=YES // 开放其他写入权 dirmessage_enable=YES
-
测试匿名FTP服务器
输入
ftp://IP地址
用户验证的FTP服务
-
基本的本地用户验证[存在密码的用户才可以登陆]
- 选择存在密码的账号或者
passwd 用户名
设置密码即可
- 选择存在密码的账号或者
-
使用user_list用户列表文件
vim /etc/vsftpd/user_list
// 添加允许登陆的用户
zhangsan // 系统用户
ftp // ftp匿名用户
anonymous // windows匿名用户
vim /etc/vsftpd/vsftpd.conf
设置userlist_enable=YES
设置userlist_deny=NO
linux网站服务
Apache
Apache服务基础
Apache简介
主要特点
- 开放源代码、跨平台应用
- 支持多种网页编程语言
- 模块化设计、运行稳定、良好的安全性
软件版本
1.X
- 目前最高版本是1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新的功能
2.X
- 具有更多的功能特性
- 与1.X相比,配置管理风格存在较大差异
主要目录和文件
服务目录 : /usr/local/httpd
主配置文件 : /usr/local/httpd/conf/httpd.conf
网页目录 : /usr/local/httpd/htdocs/
服务脚本 : /usr/local/httpd/bin/apachectl
执行程序 : /usr/local/httpd/bin/httpd
访问日志 : /usr/local/httpd/log/access_log
错误日志 : /usr/local/httpd/log/error_log
安装httpd服务器
- 安装文件[httpd-2.4.54]
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
- 如果缺什么环境直接yum安装
yum install -y apr*
yum install -y pcre*
- 编译
make && make install
- 启动服务
/usr/local/httpd/bin/apachectl start
netstat -anpt | grep 80
- 修改配置文件
vim /usr/local/httpd/conf/httpd.conf
找到ServerName,将注释去掉
- 设置系统服务启动
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
启动方法为 : service restart httpd
http服务器基础
-
虚拟web主机
在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机
-
http支持的虚拟主机
- 基于域名的虚拟主机
- 基于IP地址的虚拟主机
- 基于端口的虚拟主机
web站点部署
- 创建测试站点
mkdir -p /var/www/html
mkdir /var/www/html/mpya /var/www/html/mpyb
- 创建测试网页
vim /var/www/html/mpya/index.html
<h1>mpya</h1>
vim /var/www/html/mpyb/index.html
<h1>mpya</h1>
- 修改虚拟主机文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpya"
ServerName www.mpya.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/mpya.com-error_log"
CustomLog "logs/mpya-access_log" common<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpyb"
ServerName www.mpyb.com
ErrorLog "logs/mpyb-error_log"
CustomLog "logs/mpyb-access_log" common
- 配置DNS
vim /var/named/chroot/etc/named.rfc1912.zones
zone "mpya.com" IN {
type master;
file "mpya.com.zone";
allow-update { none; };
};
zone "mpyb.com" IN {
type master;
file "mpyb.com.zone";
allow-update { none; };
};
cd /var/named/chroot/var/named
cp -p alibaba.com.zone mpya.com.zone
cp -p alibaba.com.zone mpyb.com.zone
vim mpya.com.zone
$TTL 1D
@ IN SOA mpya.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpya.com.
ns1 IN A 192.168.12.5
www IN A 192.168.12.5
vim mpyb.com.zone
$TTL 1D
@ IN SOA mpyb.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpyb.com.
ns1 IN A 192.168.12.5
www IN A 192.168.12.5
systemctl restart named-chroot
- 修改主配置文件,开启vhosts的模块
vim /usr/local/httpd/conf/httpd.conf
将注释去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]
- 重启服务
/usr/local/httpd/bin/apachectl restart
- 给目录添加授权
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html">
require all granted
- 重启服务
/usr/local/httpd/conf/extra/httpd-vhosts.conf
- 访问站点[修改DNS为192.168.12.5]
awstats
tar -zxvf awstats-7.3.tar.gz
cp -r awstats-7.3 /usr/local/awstats
cd /usr/local/awstats
chmod +x awstats_*
配置 : awstats_configure.pl
刷新 : awstats_updateall.pl
- 使用配置文件
./awstats_configure.pl
第一个问的是apache配置路径
/usr/local/httpd/conf/httpd.conf
,之后一直y第二个问的是要监视的站点名
www.mpya.com
,之后回车即可
这只是监视了一个站点,还有一个mpyb.com,同样的操作
- 查看生成的配置文件
ls /etc/awstats
- 更改日志配置文件
ls /usr/local/httpd/logs
vim /etc/awstats/awstats.www.mpya.com.conf
LogFile="/usr/local/httpd/logs/mpya-access_log"
vim /etc/awstats/awstats.www.mpyb.com.conf
LogFile="/usr/local/httpd/logs/mpyb-access_log"
- 创建awstats使用的数据库目录
mkdir /var/lib/awstats
- 刷新数据
./awstats_updateall.pl now
- 测试访问
- 给权限
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None Order allow,deny Allow from all </Directory>
上面的配置[因为版本是2.x语法改变,但是这里没改]改成
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None require all granted </Directory>
- 开启CGI
vim /usr/local/httpd/conf/httpd.conf
LoadModule cgid_module modules/mod_cgid.so
前面的注释去掉
- 安装perl
yum install -y perl*
- 重启访问
/usr/local/httpd/bin/apachectl restart
-
限制访问源IP
- 白名单写法
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None require ip 192.168.12.100 // 改成访问IP或者网段192.168.12 </Directory>
- 黑名单写法
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> require all granted require not ip 192.168.12.100 </RequireAll> </Directory>
- 用户认证访问
/usr/local/httpd/bin/htpasswd -c /usr/local/httpd/.mpyapwd zhangsan // 第一次添加需要添加-c参数
/usr/local/httpd/bin/htpasswd /usr/local/httpd/.mpyapwd lisi
vim /usr/local/httpd/conf/httpd.conf
<Directory "/usr/local/awstats/wwwroot"> Options None AllowOverride None <RequireAll> require all granted AuthName "welcome" AuthType Basic AuthUserFile /usr/local/httpd/.mpyapwd require valid-user </RequireAll> </Directory>
-
局部认证[A网站正常访问,B网站需要授权]
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html"> <Require> require all granted </Require> </Directory> <Directory "/var/www/html/mpyb"> <Require> require all granted AuthName "Welcome" AuthType Basic AuthUserFile /usr/local/httpd/.mpyapwd require valid-user </Require> </Directory>
Nginx
Tomcat
squid代理服务器
开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
刷新配置
sysctl -p
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-nuderscore --enable-gnuregex
[root@localhost ~]# tar zxvf squid-3.4.6.tar.gz -C /opt ###解压软件包 [root@localhost ~]#cd /opt/ [root@opt~]#cd squid-3.4.6/ [root@opt~]#yum -y install gcc gcc-c++ make ##下载编译器 [root@squid squid-3.4.6]# ./configure --prefix=/usr/local/squid ###安装目录 --sysconfdir=/etc ###配置位置存在目录 --enable-arp-acl ###启用acl访问控制列表 --enable-linux-netfilter ###内核过滤 --enable-linux-tproxy ###支持透明代理 --enable-async-io=100 ###io的优化 --enable-err-language="Simplify_Chinese" ##支持语言,报错提示简体中文 --enable-underscore ##url支持下划线 --enable-poll ###一个函数 字符设备驱动函数 --enable-gnuregex ##支持正则表达式
编译
make
make install
创建用户
useradd -M -s/sbin/nologin squid
给权限
chown -R squid:squid /usr/local/squid
chmod -R 777 /usr/local/squid/var/
启动服务
/usr/local/squid/sbin/squid
配置
vim /etc/squid.conf
reply_body_max_size 10 MB
http_access allow all
重启服务
killall -9 squid
/usr/local/squid/sbin/squid
设置透明代理
vim /etc/squid.conf
http_port 192.168.12.1:3128 transparent // 修改为内网IP
killall -9 squid
/usr/local/squid/sbin/sqiud
systemctl start firewalld
iptables -F
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
// 往nat表中的PREROUTING链中添加从ens33网卡来的源IP地址为192.168.12.0网段的并且目标端口是80要重定向端口到3128
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
shell脚本
脚本基础语法
基础语法
shell的作用 -- 命令解释器,介于系统内核和用户之间,负责解释命令行
脚本构成
- 脚本声明[#!/bin/bash]
- 注释信息[#注释信息]
- 可执行语句
#!/bin/bash #查看电脑网络信息 echo -e ' 33[32m IP 33[0m' sleep 1 ifconfig | grep inet | grep -v inet6 | awk '{print $2}' echo -e ' 33[31m NETMASK 33[0m' sleep 1 ifconfig | grep inet | grep -v inet6 | awk '{print $4}' echo -e ' 33[31m GATEWAY 33[0m' sleep 1 route -n | grep UG | awk '{print $2}'
交互式硬件设备
- 标准输入 : 从该设备接受用户输入的数据
- 标准输出 : 通过该设备向用户输出数据
- 标准错误 : 通过该设备报告执行出错信息
类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 "<" | 键盘 |
标准输出 | /dev/stdout | 1 ">" | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
重定向操作
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | >
>> |
将输出结果保存到指定的文件[覆盖原有内容]
将输出结果追加到指定的文件 |
标准错误输出 | 2>
2>> |
将错误信息保存到指定的文件[覆盖原有内容]
将错误信息追加到指定的文件中 |
混合输出 | &>
&>> |
将标准输出、标准错误的内容保存到同一个文件中[覆盖原有内容]
将标准输出、标准错误的内容追加到同一个文件中 |
管道操作符
"|" : 将左侧的命令输出结果,作为右侧命令的处理对象
shell变量
变量的作用
为灵活管理linux系统提供特定参数,由两层意思
- 变量名 : 使用固定的名称,由系统预设或用户定义
- 变量值 : 能够根据用户设置、系统环境的变化而变化
变量的类型
- 自定义变量 : 由用户自定义、使用和修改
- 环境变量 : 由系统维护,用于设置工作环境
- 位置变量 : 通过命令行给脚本程序传递参数
- 预定义变量 : Bash中内置的一类变量,不能直接修改
计划任务
脚本分语法
脚本循环语法
正则表达式
网络
路由
- 路由
跨越从源主机到目标主机的一个互联网络来转发数据包的过程
能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备-路由器
- 路由表
路由器中维护的路由条目的集合
路由器根据路由表做路径选择
- 直连网段
配置IP地址,端口UP,形成直连路由
- 非直连网段
需要静态路由或动态路由,将网段添加到路由表中
实验
DNS/DHCP/SAMBA/FTP
DHCP和DNS服务器IP地址为192.168.18.5,负责为客户机分配IP地址信息,并且为FTP服务器192.168.18.6进行域名ftp.mpy.com进行地址解析,SAMBA和FTP服务器地址IP为192.168.18.6,/share目录为公有共享目录,独立挂载到lvm卷,进行配置额设置list可以上传10个文件,zhangsan用户只读,lisi用户读写,将用户家目录挂载到lvm卷,进行配额,用户最多上传10个文件
DHCP和DNS服务器
实现IP地址分发和域名解析
- 重新挂载光盘
umount /dev/sr0
mount /dev/sr0 /media
- 关闭防火墙、SELINUX
systemctl stop firewalld
setenforec 0
iptables -F
- 修改IP
vim /etc/sysconfig/network-scripts/ifcfg-xxx
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.18.5
NETMASK=255.255.255.0
GATEWAY=192.168.18.1
DNS=192.168.18.5
- 设置yum本地仓库
mkdir /root/yum.bak
mv /etc/yum.repos/* /root/yum.bak
- 更新yum
yum clean all
yum list
- 安装DHCP
yum install -y dhcp
- 配置DHCP主文件
vim /etc/dhcp/dhcpd.conf
:sp /usr/share/doc/dhcp4.xxxxx/dhcpxxxxxx
找到样板
9yy
复制后,ctl+w+下箭头
调到配置目录中,按p
复制subnet 192.168.18.0 netmask 255.255.255.0 {
range 192.168.18.10 192.168.18.30;
option domain-name-servers 192.168.18.5;
option domain-name "internal.example.org";
option routers 192.168.18.1;
option broadcast-address 192.168.18.255;
default-lease-time 600;
max-lease-time 7200;
}host fantasia {
hardware ethernet 00:0c:29:7e:b0:9e;
fixed-address 192.168.18.6;
}
- 安装DNS服务
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
- 配置服务
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var
cp -rp /var/named/dynamic /var/named/chroot/var/named
chown -R :named /var/naemd/chroot/var/named/
chown -R named /var/named/chroot/var/named/data
chown -R named /var/named/chroot/var/named/slaves
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 配置文件
vim /var/named/chroot/etc/named.conf
// 两个换成any
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
vim /var/named/chroot/etc/named.rfc1912.zones
// 正向解析
zone "mpy.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};// 反向解析
zone "18.168.192.in-addr.arpa" IN {
type master;
file "18.168.192.in.zone";
allow-update { none; };
};
- 新建文件
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpy.com.zone
cp -p /var/named/chroot/var/named/named.loopback /var/named/chroot/var/named/18.168.192.in.zone
vim mpy.com.zone
$TTL 1D
@ IN SOA mpy.com. mpy.qq.com. (
2022101020 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpy.com.
ns1 IN A 192.168.18.5
ftp IN A 192.168.18.6
vim 8.168.192.in.zone
TL 1D
@ IN SOA mdns.com. mpy.qq.com. (
2022101001 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mdns.com.
ns1 IN A 192.168.18.5
5 IN PTR mpy.mdns.com.
- 运行named
systemctl start named
- 复制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 运行named-chroot
systemctl start named-chroot
制作lvm卷
在文件服务器上添加硬盘制作lvm卷,挂载到目录,设置配额
- 制作lvm卷,挂载目录
新增两块硬盘
fdisk -l
pvcreate /dev/sdb
vgcreate ctvg /dev/sdb
lvcreate -l 100 -n sharelv ctvg
lvcreate -l 100 -n homelv ctvg
pvcreate /dev/sdc
vgextend ctvg /dev/sdc
lvextend -L +200M /dev/ctvg/homelv
resize2fs /dev/ctvg/homelv
mkfs.ext4 /dev/ctvg/sharelv
mkfs.ext4 /dev/ctvg/homelv
mkdir /share
mount /dev/ctvg/sharelv /share
mount /dev/ctvg/homelv /home
- 设置配额
mount -o remount,usrquota,grpquota /dev/ctvg/sharelv /share
mount -o remount,usrquota,grpquota /dev/ctvg/homelv /home
mount | tail -2
vim /etc/fstab
// 添加以下信息
/dev/ctvg/sharelv/ /share defaults,usrquota,grpquota 0 0
/dev/ctvg/homelv/ /home defaults,usrquota,grpquota 0 0
quotacheck -augvc
- 新建用户
useradd zhangsan
passwd zhangsan
useradd lisi
passwd lisi
- 增加用户
edquota -u zhangsan
Disk quotas for user zhangsan (uid 1001): Filesystem blocks soft hard inodes soft hard /dev/mapper/ctvg-homelv 0 0 0 0 0 10 /dev/mapper/ctvg-sharelv 0 0 0 0 0 10
edquota -p zhangsan lisi
edquota -u lisi
quotaon -ugv /share/
samba和vsftp
根据需求设置访问权限
- 挂载镜像文件
umount /dev/sr0
mount /dev/sr0 /media
- 配置yum源
mkdir /root/yum.bak
mv /etc/yum.repos.d/* /root/yum.bak
vim /etc/yum.repos.d/test.repo
[test]
name=test
baseurl=file:///media
enable=1
gpgcheck=0
- 安装samba
yum install -y samba
- 增加用户
pdbedit -a -u zhangsan
pdbedit -a -u lisi
- 配置文件
vim /etc/samba/smb.conf
[share]
path=/share
public=yes
read only=yes
write list=lisi
chmod 777 /share
chmod o+t /share
systemctl start smb
systemctl start nmb
DNS/Suid/Web
主机[192.168.12.10]访问服务器[202.10.1.10]会经过中间代理服务器[192.168.12.1和202.10.1.1],日志记录从192.168.12.10访问变成202.10.1.1访问
DNS环境、Web环境
202.10.1.10
- 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR="202.10.1.10" NETMASK="255.255.255.0" GATEWAY="202.10.1.1"
- 安装DNS服务
rpm -ivh bind-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-chroot-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-utils-9.9.4-61.el7.x86_64.rpm
rpm -ivh bind-libs-9.9.4-61.el7.x86_64.rpm
- 配置服务
cp -rp /etc/named.* /var/named/chroot/etc/
cp -rp /usr/share/doc/bind-9.9.4/sample/var/* /var/named/chroot/var
cp -rp /var/named/dynamic /var/named/chroot/var/named
chown -R :named /var/naemd/chroot/var/named/
chown -R named /var/named/chroot/var/named/data
chown -R named /var/named/chroot/var/named/slaves
chmod 644 /var/named/chroot/var/named/named.*
chown -R 770 /var/named/chroot/var/named/data/
chown -R 770 /var/named/chroot/var/named/slaves/
- 配置文件
vim /var/named/chroot/etc/named.conf
// 两个换成any
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
vim /var/named/chroot/etc/named.rfc1912.zones
// 正向解析
zone "mpya.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};zone "mpya.com" IN {
type master;
file "mpy.com.zone";
allow-update { none; };
};// 反向解析
zone "1.10.202.in-addr.arpa" IN {
type master;
file "1.10.202.in.zone";
allow-update { none; };
};
- 新建文件
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpya.com.zone
cp -p /var/named/chroot/var/named/named.localhost /var/named/chroot/var/named/mpyb.com.zone
cp -p /var/named/chroot/var/named/named.loopback /var/named/chroot/var/named/1.10.202.in.zone
vim mpya.com.zone
$TTL 1D
@ IN SOA mpya.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpya.com.
ns1 IN A 202.10.1.10
www IN A 202.10.1.10
vim mpyb.com.zone
$TTL 1D
@ IN SOA mpyb.com. xiaozheng.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.mpyb.com.
ns1 IN A 202.10.1.10
www IN A 202.10.1.10
vim 1.10.202.in.zone
$TTL 1D
@ IN SOA pdns.com. xiaozhang.163.com. (
2022100601 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns1.pdns.com.
ns1 IN A 202.10.1.10
10 IN PTR bj.pdns.com.
- 运行named
systemctl start named
- 复制named.run
find / -name named.run
cp -p /var/named/data/named.run /var/named/chroot/var/named/data/
- 运行named-chroot
systemctl start named-chroot
- 配置httpd-2.4.54
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
- 如果缺什么环境直接yum安装
yum install -y apr*
yum install -y pcre*
- 编译
make && make install
- 启动服务
/usr/local/httpd/bin/apachectl start
netstat -anpt | grep 80
- 修改配置文件
vim /usr/local/httpd/conf/httpd.conf
找到ServerName,将注释去掉
- 设置系统服务启动
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
启动方法为 : service restart httpd
- 创建测试站点
mkdir -p /var/www/html
mkdir /var/www/html/mpya /var/www/html/mpyb
- 创建测试网页
vim /var/www/html/mpya/index.html
<h1>mpya</h1>
vim /var/www/html/mpyb/index.html
<h1>mpya</h1>
- 修改虚拟主机文件
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpya"
ServerName www.mpya.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/mpya.com-error_log"
CustomLog "logs/mpya-access_log" common<VirtualHost 192.168.12.5:80>
DocumentRoot "/var/www/html/mpyb"
ServerName www.mpyb.com
ErrorLog "logs/mpyb-error_log"
CustomLog "logs/mpyb-access_log" common
- 修改主配置文件,开启vhosts的模块
vim /usr/local/httpd/conf/httpd.conf
将注释去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]
- 重启服务
/usr/local/httpd/bin/apachectl restart
- 给目录添加授权
vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<Directory "/var/www/html">
require all granted
- 重启服务
/usr/local/httpd/conf/extra/httpd-vhosts.conf
- 访问站点[修改DNS为202.10.1.10]
安装squid
192.168.12.1 / 202.10.1.1
- 设置两块网卡
- 配置IP
- 安装squid
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-nuderscore --enable-gnuregex
- 编译
make
make install
- 创建用户
useradd -M -s/sbin/nologin squid
- 给权限
chown -R squid:squid /usr/local/squid
chmod -R 777 /usr/local/squid/var/
- 启动服务
/usr/local/squid/sbin/squid
- 配置
vim /etc/squid.conf
reply_body_max_size 10 MB
http_access allow all
- 重启服务
killall -9 squid
/usr/local/squid/sbin/squid
- 设置透明代理
vim /etc/squid.conf
http_port 192.168.12.1:3128 transparent // 修改为内网IP
killall -9 squid
/usr/local/squid/sbin/sqiud
- 设置防火墙
systemctl start firewalld
iptables -F
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
// 往nat表中的PREROUTING链中添加从ens33网卡来的源IP地址为192.168.12.0网段的并且目标端口是80要重定向端口到3128
iptables -t nat -I PREROUTING -i eno33 -s 192.168.12.0/24 -p tcp --dport 443 -j REDIRECT --to-ports 3128
跨网段ping通
开启路由转发功能[192.168.12.1 / 202.10.1.1]
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
客户端设置
- 在能ping通的情况下修改DNS为202.10.1.10
- 在不设置透明代理的情况下[192.168.12.1 / 202.10.1.1修改/etc/squid.conf 中的http_port为3128]去访问两个网站
是客户端直接去访问
- 设置代理或透明代理