linux

  • linux已关闭评论
  • 26 次浏览
  • A+
所属分类:linux技术
摘要

以centos7为主linux中将硬盘、分区等设备均表示为文件元数据 : 创建者、创建日期、大小等,称为索引节点

以centos7为主

linux初始化

centos安装

linux

linux

安装位置

linux

linux

40G分配内存 / 		30G /boot 	200M swap	4G /tmp	5935M 

linux

linux

linux

软件安装

linux

linux

linux

创建账户

linux

linux

linux

linux

磁盘分区表示方法

linux中将硬盘、分区等设备均表示为文件

linux

硬盘与标准分区结构

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 3systemctl isolate multi-user.target实现的效果一样

目录结构

linux

目录 说明
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

    linux

    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命令分类

  1. 内部命令
  • 继承与shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
  • 属于shell的一部分
  • 没有单独对应的系统文件
  • 自动载入内存,可以直接使用
  1. 外部命令
  • 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命令与程序关系

  1. 文件位置

    1. 系统命令

      一般在/bin和/sbin目录中,或为shell内部指令

    2. 应用程序

      通常在/usr/bin和/usr/sbin目录中

  2. 主要用途

    1. 系统命令

      完成对系统的基本管理工作,例如IP配置工具

    2. 应用程序

      完成相对独立的其他辅助任务,例如网页浏览器

  3. 适用环境

    1. 系统命令

      一般只在字符操作界面中运行

    2. 应用程序

      根据实际需要,有些程序可在图形界面中运行

  4. 运行格式

    1. 系统命令

      一般包括命令字、命令选项和命令参数

    2. 应用程序

      通常没有固定的执行格式

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
  1. 由Red Hat公司提出,被众多linux发行版所采用
  2. 建立同意的数据库文件
  3. 详细记录软件包的安装、卸载等变化信息
  4. 自动分析软件包依赖关系
  • 一般命名格式

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

从源代码编译安装程序

编译安装过程

  1. 解包

    tar -zxvf 软件包 想要解压的路径

  2. 配置

    cd 解压的路径

    ./configure --prefix=安装路径[/usr/local/]

  3. 翻译

    make命令

  4. 安装

    make install

linux账户与权限

管理用户和组账号

用户和组

  • 用户账号
    1. 超级用户
    2. 普通用户
    3. 程序用户
  • 组账号
    1. 基本组[私有组]
    2. 附加组[公共组]
  • UID和GID
    1. UID[用户标识符]
    2. GID[组标识符]

用户管理

保存用户名称、属主目录、登陆shell等基本信息的文件位置/etc/passwd,没一行对应一个用户的账号记录

linux

linux

保存用户密码/etc/shadow,每一行对应一个用户的密码[文件中的每一行内容包含九个用:隔开的配置字段]

linux

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命令含义相同

  • 给用户搬家
  1. 使用usermod搬家

    usermod -d /test/test1 test1

  2. 使用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: 

linux

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 音乐 

linux

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服务器]

设置网络

  1. 临时配置 - 使用命令调增网络参数

    • 简单、快速,可直接修改运行中的网络参数
    • 一般只适合在调试网络的过程中使用
    • 系统重启以后,所做的修改将会失效
  2. 永久配置 - 通过配置文件修改网络参数

    • 修改各项网络参数的配置文件

    • 适合对服务器设置固定参数时使用

    • 需要重载网络服务或者重启以后才会生效

临时配置

网络配置

  1. 设置网络接口的IP地址、子网掩码

ifconfig 接口名 ip地址 [netmask 子网掩码]

ifconfig 网络接口 ip地址[/掩码长度]

  1. 禁用或者重新激活网卡

ifconfig 网络接口 up

ifconfig 网络接口 down

  1. 设置虚拟网络接口

ifocnfig 接口名:序号 ip地址

ifconfig ens1:1 10.1.1.1

设置路由

  1. 添加到指定网段的路由记录

route add -net 网段地址 gw ip地址

  1. 删除到指定网段的路由记录

route del -net 网段地址

  1. 删除路由表中的默认网关记录

route del default gw ip地址

  1. 向路由表中添加默认网关记录

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原理

linux

DHCP主要文件

主配置文件 : /etc/dhcp/dhcp.conf

执行程序 : /user/sbin/dhcpd/usr/sbin/dhcrelay

执行参数配置 : /etc/sysconfig/dhcpd

  • dhcpd.conf构成[全局配置参数、网段声明、配置选项、配置参数、主机声明]
  1. 全局设置,作用于整个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

  1. 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; } 
  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服务

  1. 确保镜像文件可以使用

linux

  1. 可以重新挂载路径

mount | grep CentOS

umount /dev/sr0

mount /dev/sr0 /media/

  1. 找到dhcp软件

cd /media/Packages

ls | grep dhcp

  1. 安装软件

rpm -ivh dhcp-4.2.5-68.el7.centos.x86_64.rpm

配置DHCP服务器

  1. 修改配置文件

vim /etc/dhcp/dhcpd.conf

  1. 在末行模式下导入样板文件

:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example

  1. 在52行进行修改

linux

linux

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; } 
  1. 开启DHCP服务

systemctl start dhcpd

搭建DHCP环境

  1. centos7网络配置

linux

linux

  1. windows测试机器

linux

  1. 查看新网卡
[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 
  1. 配置新网卡

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" 
  1. 启动新网卡[ens36]

ifup ens36

  1. 配置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; } 
  1. windows机器重新获取ip

ipconfig /flushdns

ipconfig /renew

DNS服务

作用和类型

作用

  1. 正向解析 : 根据主机名称[域名]查找对应的IP地址
  2. 反向解析 : 根据IP地址查找对应的主机域名

类型

  1. 缓存域名服务器
    • 也称为高速缓存服务器
    • 通过向其他域名服务器查询获得域名->IP地址记录
    • 将域名查询结果缓存到本地,提高重复查询时的速度
  2. 主域名服务器
    • 特定DNS区域的官方服务器,具有唯一性
    • 负责维护该区域内所有域名->IP地址的映射记录
  3. 从域名服务器
    • 也称为辅助域名服务器
    • 其维护的域名->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 : 伪装目录

配置文件

  1. 全局TTL配置及SOA记录
    • $TTL[Time To Live生存时间]记录
    • SOA[Start Of Authority授权信息开始]记录
    • 分号';'开始的部分表示注释信息
  2. 正向域名解析记录
    • NS域名服务器[Name Server]记录【指该域名区域中,有哪些服务器负责解析这个域名】
    • MX邮件交换[Mail Exchange]记录【】
    • A地址[Address]记录,只用在正向解析区域中
    • CNAME别名[Canonical Name]记录
  3. 反向域名解析记录
    • PTR指针[Point]记录,只用在反向解析区域中
    • 记录的第一列指定IP地址中的主机地址部分即可

搭建DNS服务器

  • 两台centos7服务器,主DNS192.168.12.5,从DNS192.168.12.104

安装

配置两个正向解析[chaitin.com | alibaba.com]和一个反向解析[192.168.50.131 -> bj.pdns.com]

  1. 在光盘中找到软件

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

  1. 复制文件修改权限

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/

  1. 修改配置文件

vim /var/named/chroot/etc/named.conf // 主配置文件

linux

vim /var/named/chroot/etc/named.rfc1912.zones // 声明DNS区域的文件

linux

linux

  1. 生成对应域名的数据文件

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

linux

linux

  • 正向配置

linux

  • 反向配置

linux

  1. 运行named

systemctl start named

  1. 复制named.run

find / -name named.run

cp -p /var/named/data/named.run /var/named/chroot/var/named/data/

  1. 运行named-chroot

systemctl start named-chroot

  1. 解决报错
[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

  1. 设置windows机器IP

linux

  1. 关闭centos防火墙

systemctl stop firewalld

iptables -F

  1. 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 

搭建从域名服务器

  • 区域传送
  1. 在光盘中找到软件

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

  1. 复制文件修改权限

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/

  1. 修改配置文件
  • 在客户端配置

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  ; 
  1. 客户机设置DNS

vim /etc/resolv.conf

nameserver 192.168.12.5

  1. 确保可以ping通
  2. 异常处理

dumping master file: slaves/tmp-dt1dKHtvrc: open: permission denied

  • 权限不够

chown -R named:named /var/named/chroot/var/named/slaves/

  1. 启动服务[遇到异常,和上面的DNS报错处理方法一样]

systemctl start named-chroot

vim /var/named/chroot/var/named/slaves/alibaba.com.zone

linux

远程访问及控制

SSH远程管理

OpenSSH服务端

ssh协议

  • 为客户机提供安全的shell环境,用于远程管理
  • 默认端口 : TCP 22

OpenSSH

  • 服务名称 : sshd
  • 服务端主程序 : /usr/sbin/sshd
  • 服务端配置文件 : /etc/ssh/sshd_config

服务监听选项

  • 端口号、协议版本、监听IP地址
  • 禁止反向解析

用户登陆控制

  • 禁止root用户、空密码用户
  • 登陆时间、重试次数
  • AllowUsers、DenyUsers

默认的链接命令

  1. ssh [远程安全登陆]

ssh user@host -p 22

  1. scp [远程安全复制]

scp user@host:file1 file2 // 把服务器的文件拷贝到本地,file1表示服务器文件路径,file2表示本机文件存放路径

scp file1 user@host:file2 // 把本地文件拷贝到服务器中,file1表示本机文件存放路径,file2表示服务器文件路径

OpenSSH客户端

  • xhell
  • mobaxterm

密钥对验证的SSH体系

实现过程

  1. 创建密钥对

Linux使用ssh-keygen命令

可用的加密算法 : RSA或DSA

  • 密钥文件 : id_rsa

  • 公钥文件 : id_rsa.pub

  1. 上传公钥文件id_rsa.pub

任何方式均可[共享、FTP、Email、SCP……]或者命令导入ssh-copy-id -i 本地公钥文件位置 user@host

  1. 导入公钥信息

将公钥文本添加至目标用户的公钥库或者命令导入ssh-copy-id -i 本地公钥文件位置 user@host

公钥文件 : ~/.ssh/authorized_keys

ssh-copy-id -i ~/.ssh/id_rsa.pub lisi@192.168.16.21 
  1. 使用密钥对验证方式

验证用户 : 服务端的用户lisi

验证密码 : 客户端的用户zhangsan的私钥短语

vim /etc/ssh/sshd_config

将PubkeyAuthentication yes前面的注释去掉,将公钥认证开启

将PasswordAuthentication yes改成no,将密码认证关掉

TCP Wrappers

linux中的一个外挂程序

概述

保护机制的实现

  1. 通过tcpd主程序对其他服务程序进行包装
  2. 由其他服务程序调用libwrap.so.*链接库

访问策略

  1. 访问控制策略的配置文件

/etc/hosts.allow

/etc/hosts.deny

  1. 设置访问控制策略
    1. 策略格式【服务列表:客户机地址列表】
    2. 服务列表【多个服务以逗号分隔,ALL表示所有服务】
    3. 客户机地址列表
      1. 多个地址以逗号分隔,ALL表示所有地址
      2. 允许使用通配符?和*
      3. 网段地址,如192.168.1.或者192.168.1.0/255.255.255.0
      4. 区域地址,如.benet.com
vim /etc/hosts.allow sshd:192.168.12.100  vim /etc/hosts.deny sshd:all 

linux文件传输服务

SAMBA服务

  1. SMB协议

    服务消息块

  2. CIFS协议

    通用互联网文件系统

  3. 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

  1. 建立samba用户数据库文件

/var/lib/samba/private/passdb.tdb

  1. 设置上传目录及权限

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用户可写

  1. 共享账号映射[别名]

vim /etc/samba/smbusers

添加以下信息

zhangsan = zs

root = administrator

  1. 启用别名

vim /etc/samba/smb.conf

在[global]中添加或修改

username map = /etc/samba/smbusers

  1. 重启服务

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/

  1. 重新挂载镜像文件

mount | grep CentOS

umount /dev/sr0

mount /dev/sr0 /media/

cd /media/Packages

  1. 安装主程序

rpm -ivh samba-4.7.1-6.el7.x86_64.rpm

或者 yum install -y samba【缺少依赖时使用】

  1. 建立samba用户数据库文件

useradd zhangsan

pdbedit -a -u zhangsan // 将系统用户添加为samba用户

pdbedit -L // 查看samba用户

pdbedit -vL // 查看所有的samba用户

  1. 关闭防火墙、SELINUX

    systemctl stop firewalld

    setenforce 0

  2. 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还可以上传]

  1. 修改所有人可以读,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用户可写 
  1. 修改其他用户[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/*

  1. 重新挂载光盘

umount /dev/sr0

mount /dev/sr0 /media

  1. 移动源文件

mkdir /root/yum.bak

mv /etc/yum.repos.d/* /root/yum.bak

  1. 指定源

vim /etc/yum.repos.d/test.repo

[local-yum]
name = local-yum
baseurl = file:///media/
enabled=1
gpgcheck=0

  1. 清除yum缓存,重新生成

yum clean all

yum list

  1. 安装软件

yum install -y 软件

yum install -y vsftpd

服务器安装源

  • 服务器端设置[1. 修改挂载点,将目录设置为ftp共享目录 2. 直接将挂载点设置为默认的/var/ftp/]

    1. 重新挂载光盘

      umount /dev/sr0

      mount /dev/sr0 /media/

    2. 设置好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

    3. ftp://IP地址可以访问后即可

  • 客户端设置

    1. 保存原来的源

      mkdir /root/yum.bak

      mv /etc/yum.repos.d/* /root/yum.bak

    2. 新建源

      vim yum-ftp.repo

      [yum-ftp]

      name=yum-ftp

      baseurl=ftp://IP地址

      enable=1

      gpgcheck=0

    3. 清除原来的源缓存

      yum clean all

    4. 更新源

      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服务

  1. 准备匿名FTP访问的目录[使匿名FTP对该目录有写入权限]

    chown ftp /var/ftp/pub/ 
  2. 开放匿名用户配置并启动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 
  3. 测试匿名FTP服务器

    输入ftp://IP地址

用户验证的FTP服务

  1. 基本的本地用户验证[存在密码的用户才可以登陆]

    linux

    • 选择存在密码的账号或者passwd 用户名设置密码即可

    linux

  2. 使用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服务器

  1. 安装文件[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

  1. 启动服务

/usr/local/httpd/bin/apachectl start

netstat -anpt | grep 80

  1. 修改配置文件

vim /usr/local/httpd/conf/httpd.conf

找到ServerName,将注释去掉

  1. 设置系统服务启动

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

启动方法为 : service restart httpd

http服务器基础

  1. 虚拟web主机

    在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机

  2. http支持的虚拟主机

    1. 基于域名的虚拟主机
    2. 基于IP地址的虚拟主机
    3. 基于端口的虚拟主机

web站点部署

  1. 创建测试站点

mkdir -p /var/www/html

mkdir /var/www/html/mpya /var/www/html/mpyb

  1. 创建测试网页

vim /var/www/html/mpya/index.html

<h1>mpya</h1> 

vim /var/www/html/mpyb/index.html

<h1>mpya</h1> 
  1. 修改虚拟主机文件

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

  1. 配置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

  1. 修改主配置文件,开启vhosts的模块

vim /usr/local/httpd/conf/httpd.conf

将注释去掉即可[搜索vhosts] [Include conf/extra/httpd-vhosts.conf]

  1. 重启服务

/usr/local/httpd/bin/apachectl restart

  1. 给目录添加授权

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/var/www/html">

require all granted

  1. 重启服务

/usr/local/httpd/conf/extra/httpd-vhosts.conf

  1. 访问站点[修改DNS为192.168.12.5]

linux

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

  • 测试访问

http://www.mpya.com/awstats/awstats.pl?config=www.mpya.com

  • 给权限

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

http://www.mpya.com/awstats/awstats.pl?config=www.mpya.com

  • 限制访问源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中内置的一类变量,不能直接修改

计划任务

脚本分语法

脚本循环语法

正则表达式

网络

路由

  1. 路由

跨越从源主机到目标主机的一个互联网络来转发数据包的过程

能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备-路由器

  1. 路由表

路由器中维护的路由条目的集合

路由器根据路由表做路径选择

  1. 直连网段

配置IP地址,端口UP,形成直连路由

  1. 非直连网段

需要静态路由或动态路由,将网段添加到路由表中

实验

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

  • 设置两块网卡

linux

  • 配置IP

linux

  • 安装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

linux

  • 在不设置透明代理的情况下[192.168.12.1 / 202.10.1.1修改/etc/squid.conf 中的http_port为3128]去访问两个网站

linux

linux

是客户端直接去访问

  • 设置代理或透明代理

linux

  • 版权声明:本站原创文章,于2022年10月17日22:25:53,由 发表,共 45099 字。
  • 转载请注明:linux - 张拓的天空