第一个被输入的数据绝对是命令或者是可执行文件
[Tab]接在一串命令的第一个命令后面------“命令补全”
[Tab]接在一串命令的第二个命令后面------"文件补齐"
[Crtl]-c 停下来
[Ctrl]-d 相当于exit
文本编辑器nano
关机方法:shutdown -h now shutdown会依据目前启动的服务逐次关闭关闭
poweroff -f
init 0
ls-al
第一列代表这个文件的类型和权限
若是[d]则是目录,若是[-]则是文件
接下来三组“rwx”组合,第一组为文件所有者的权限,第二组为同用户组的权限,第三组为其他非本用户组的权限
第二列表示有多少文件名连接到此节点
第三列表示这个文件的所有者帐号
第四列表示这个文件所属用户组
第五列表示这个文件的容量大小(B)
第六列表示这个文件创建文件日期或最近修改时间
第七列文件名,如果文件名前多一个“.”表示隐藏文件
改变文件属性和权限
chgrp:改变文件所属用户组
-R 递归持续更改连同子目录下的所有文件
chown:改变文件所有者
-R 递归持续更改连同子目录下的所有文件
chmod:改变文件权限
chmod [-R] xyz 文件或目录
cd(change directory)
文件默认权限(0022)
umask:指定目前用户在新建文件或目录时候的权限默认值
umask的分数指的是该默认值需要减掉的权限
/(root,根目录),与开机系统有关, root所在分区应该越小越好,下面应该有以下子目录
/bin(放置在单用户维护模式下还能被操作的命令)
/boot(放置开机会使用到的文件)
/dev(任何设备与接口设备都以文件形式存放到目录当中)
/etc(系统中主要的配置文件)
/etc/init.d
/etc/xinetd.d
/etc/X11
/home(系统默认的用户主文件夹)
~代表这个用户的主文件夹
/lib(放置在开机时会用到的函数库)
/media(下面放置就是可删除的设备)
/mnt(暂时挂在某些额外的设备)
/opt(第三方软件放置的目录)
/root(系统管理员的主文件夹)
/sbin(开机过程中所需要的,包括开机、修复、还原系统所需要的命令)
/srv(网络服务启动后,这些服务所需要取用的数据目录)
/tmp(暂时放置文件的地方)
--------/etc 配置文件、/bin重要执行文件、/dev所需要的设备文件、/lib执行文件所需的函数库与内核所需的模块、/sbin重要系统执行文件
/usr(UNIX software resource),与软件安装、执行有关,建议子目录有以下内容
/usr/X11R6 X版本第一版第六次析出
/usr/bin 是否与开机过程有关 绝大部分命令都在这里
/usr/include 放置程序语言的头文件和包含文件
/usr/lib 各种应用软件的函数库,目标文件,不被一般用户惯用的执行文件或脚本
/usr/local 本机自行安装的软件建议下载到此目录下便于管理
/usr/sbin 非系统正常运行所需要的系统命令
/usr/share 放置共享文件的地方(常见有man,doc,zoneinfo子目录)
/usr/src 源码放置位置
/var,与系统操作过程有关
.表示当前目录,也可用./来表示
..代表上一层目录,也可用../来表示
-代表前一个工作目录
~代表当前用户身份所在的住文件夹
根目录上一层与根目录自己是同一个目录
查看内核版本 uname -r
cd:切换目录(Change Directory)
pwd:显示当前目录(Print Working Directory) -P:显示出当前路径,-L:显示出连接路径
mkdir:新建新目录
rmdir:删除空的目录 -p上层为空則一并删除
执行文件路径变量 $PATH
echo显示,打印出
ls
-a 全部文件连同隐藏文件一起列出来
-d 仅列出目录本身而不是列出目录内的文件数据
-l 列出长数据串,包含文件属性与权限等数据
-h 可读形式去表示
cp
-a 相当于-pdr的意思
-i 若目标文件已经存在,在覆盖时会先询问操作的进行
-p 连同文件的属性一起复制过去
-r 递归持续复制
-s 软连接
-l 硬连接
-u 有差异才复制
-d 源文件为连接文件的属性,复制连接文件属性而非文件本身
注意:如果源文件有两个以上,最后一个目的文件一定是目录才行
rm
-i 互动模式,删除前进行询问
-r 递归删除
遇到要删除 -aaa- 这类的文件,可以用rm -- -aaa-命令
touch 创建一个空文件或修改文件时间
ctime 状态更新时间
mtime 内容更改时间
atime 读取时间
mv
-i 询问模式
-u 如果比较新,才会更新
注意:如果源文件有两个以上,最后一个目的文件一定是目录才行
basename获得最后的文件名
dirname取得目录名
cat 由第一行显示文件内容(Concatenate)
-A 断行用$显示 TAB键以^I显示 列出一些看不出来的特殊字符
-n 写出行号
tac 从最后一行开始显示
nl 显示时输出行号
-b a 是否空行都列出行号
-b t 有空行怎不列出行号
-n ln 行号靠左显示
-n rn 行号靠右显示
-n rz 行号靠右显示且补零
-w 控制0的个数默认6个
more 一页页地显示文件内容
Enter 向下翻行
空格键 向下翻页
[Ctrl]+b 往回翻页
q 离开
less 往前翻页
/字符串 向下查询字符串
?字符串 向上查询字符串
n 查找下一个
N 查找上一个
head 只看头几行
-n 后面接数字表示显示几行的意思,默认前十行,后面接负数,表示列出前面的行数而不包括后面的
tail 只看后几行
-f 可以一直检测文件加入的数据都会显示到屏幕上,知道按下[Ctrl]-c才会离开tail的检测
od 二进制进行文件读取
-t 后面接各种类型输出
注意:如果源文件有两个以上,最后一个目的文件一定是目录才行
chattr(文件隐藏属性)
-a 文件只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性
-i 让一个文件“不能被删除,改名,设置连接也无法写入或添加数据”
lsattr(显示文件隐藏属性)
-a 将隐藏文件的属性也显示出来
-d 仅列出目录的自身属性
-R 递归查询
SetUID(4)
SUID权限仅对二进制程序有效
执行者对于该程序需要具有X的可执行权限
本权限仅在执行该程序的过程中有效
执行者将具有改程序的所有者权限
SetGID(2)
SGID对二进制程序有用
程序执行者对于改程序来说,具备X的权限
执行者在执行过程中会获得该程序用户组的支持
Sticky Bit(1)
只针对目录有效
当用户对于此目录具有w,x权限,即具有写入的权限时
当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件
我们在执行7666是由于没有x这个可执行的标志,所以S,T变成大写,代表为空
file(查看文件类型)
which(寻找“执行文件”)
找不到cd命令,因为cd是bash内置命令,which是默认查找PATH内所规范的目录
whereis(在数据库中寻找特定文件)
-b 只找二进制
-m 只找说明文件
-s 只找源文件
-u 除上述三样以外的特殊文件
find(在硬盘中寻找特定文件)
-mtime n:n为数字,在n天前的一天之内被更改过的文件
-mtime +n:在n天前(不包括本身)被更新过的的文件名
-mtime -n:在n天前(包括本身)被更新过的文件名
-newer file:列出比file还要新的文件名
-name filename:查找文件名为filename的文件名
-perm mode:查找文件权限刚好等于mode的文件
-perm -mode:查找文件权限必须全部包括mode的文件
-perm +mode:查找文件权限包含任一mode的文件
-exec command:后面可以再接其他命令来处理查找到的结果
find / -perm +7000 -exec ls -l {} \;
{}代表由find找到的内容,直到\;结束,因为;在bash环境内有特殊意义,因此用反斜杠进行转义
Ext2转向Ext3:可利用性,数据完整性,速度,易于转换
查看linux所支持的文件系统
ls -l /lib/modules/$(uname -r)/kernel/fs
查看系统目前已加载到内存中支持的文件系统
cat /proc/filesystems
系统指定的测试挂载文件系统类型
cat /etc/filesystems
df(列出文件系统的整体磁盘使用量)
使用-a参数的时候,系统会出现/proc挂载点,因为挂载在内存中,所以没有占用磁盘空间
-i 不用硬盘容量。而以inode的数量来显示
-a 列出所有文件系统,包括系统特有的文件系统
-h 用GB,MB,KB等格式自行显示
du(评估文件系统的磁盘使用量)
-s 列出总量而不列出每个个别目录占用的容量
-m 以M为单位
-b 以kb为单位
ln
-s 如果不加任何参数就是hard link,加了就是symbolic link
-f 如果目标文件存在,就主动将目标文件直接删除后再创建
不能跨文件系统,不能连接到目录
当新建一个目录的时候,新目录连接数为2,上层目录连接数加1
磁盘分区
fdisk /dev/sda
d 删除一个分区
n 新增一个分区
p 在屏幕上显示分区表
q 不储存离开fdisk程序
w 将刚才的操作写入分区表
fdisk 没有办法处理大于2TB以上磁盘分区
mke2fs(Ext2/Ext3共用程序)
-b 可以设置每个block的大小,1024,2048,4096三种
-i 给予一个inode的容量
-L 后面接卷标名称
-j 格式化Ext3文件系统
fsck(file system check)
用来检验文件系统是否出错
badblocks
-s 在屏幕上列出进度
-v 在屏幕上看到进度
用来检查硬盘或软盘扇区有没有坏轨的命令
umount(将设备文件卸载)
硬盘参数修改
mknod 设备文件名
b:设置设备名称成为一个外部存储设备文件
c:设置设备名称成为一个外部输入设备文件
p:设置设备名称成为一个FIFO文件
开机自动挂载/etc/fstab及/etc/mtab
根目录必须挂载
其他挂载点必须为已新建的目录可任意指定
所有挂载点在同一时间,只能挂载一次
所有分区在同一时间,只能挂载一次
创建大型文件
dd if="input file" of ="output file" bs="block size" count="number"
if 可以是设备
of 可以是设备
bs 规划一个block的大小默认是512bytes
count 多少个bs
输入文件
将一堆零写入后面接的文件中
可以用来备份,还原的话就反向操作即可
格式化
mkfs -t ext3 /home/loopdev
挂载
mount -o loop
针对服务器或者工作站这类常年上线的系统,swap主要功能是当物理内存不够时,将某些在内存中所占的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用
dump是一个用来作为备份的命令,可以备份文件系统或者单一目录
备份若针对文件系统,可进行0-9进行差异备份,其中level 0为完整备份
0代表不要做备份
1代表要每天进行dump操作
2代表其他不定日期的dump备份操作
-S 列出备份数据需要多少空间才能备份完毕
-u dump的时间记录到/etc/dumpdates文件中
-v 将dump文件过程显示出来
-j 用bzip2进行压缩
-W 列出在/etc/fstab里面dump设置的分区是否有备份过
fsck检验扇区
0不要检验
1最早检验(只有根目录设为1)
2稍后检验
superblock的大小为1024bytes
superblock前面需要保留1024bytes下来,让引导装载程序可以安装
引导装载程序安装到该文件系统最全面的1024bytes内的区域就是boot sector
parted [设备] [命令(参数)]
新增分区:mkpart [primary|logical|extended] [ext3/vfat]
分区表:print
删除分区:rm[partition]
superblock:记录此文件系统的整体信息
inode:记录文件的属性
block:记录文件的内容
journal日志文件系统会多出一块记录区,记载文件系统的主要活动,加快系统恢复时间
mkfs磁盘格式化
压缩
*.Z compress程序压缩的文件
*.gz gzip程序压缩的文件
*.bz2 bzip2程序压缩的文件
*.tar tar程序打包的数据,并没有压缩过
*.tar.gz tar程序打包的文件,其中经过gzip压缩
*.tar.bz2 tar程序打包的文件,其中经过bzip2压缩
compress [-rcv] 文件或目录
-r:可以连同目录下的文件也同时给予压缩
-c 将压缩数据输出成为输出到屏幕
-v 显示出压缩后文件信息以及压缩过程中的文件变化
uncompress 文件.Z
在默认的情况中,被compress压缩的源文件会不见,压缩文件会被创建起来 -c可以保存源文件
compress无法解开*.gz的文件
gzip [-cdtv#] 文件名
-c 将压缩的数据输出到屏幕中,通过数据重定向处理
-d 解压缩
-t 检验压缩文件的一致性
-v 显示出源文件与压缩文件的压缩比
-# 压缩等级,最后默认是6
zcat 文件名.gz 可以读取纯文本被压缩后的压缩文件,可以解压compress压缩文件
bzip2 [-cdkzv#] 文件名
-c 将压缩过程产生的数据输出到屏幕上
-d 解压缩
-k 保留源文件
-z 压缩
-v 显示压缩比的信息
-# 计算压缩比的参数 -1最快 -9最佳
bzcat 文件名.bz2 读取压缩文件的内容
tar
可以将多个目录或文件打包成一个大文件,通过gzip/bzip2的支持将文件进行压缩
压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
将-f filename与其他参数独立出来,会比较不容易产生问题
-p 保留绝对路径
-P 保留备份数据原本的权限或属性
-j 通过bzip2进行压缩,filename建议写成*.tar.bz2
-z 通过gzip进行压缩,filename建议写成*.tar.gz
-v 在压缩或解压缩过程中将正在处理的文件名显示出来
-c 新建打包文件,搭配-v来查看过程中被打包的文件名
-t 查看打包文件内容含有那些文件名
-x 解打包或解压缩的功能 搭配-C在特定目录解开
解开特定文件
tar -jxv -f 打包文件.tar,bz2 待解开的文件
--exclude=file 打包某目录,但不含该目录下某些文件
打包文件称为tarfile
打包压缩文件称为tarball
/etc 配置文件
/home 用户主文件夹
/var/spool/mail 所有帐号的邮件信箱
/var/spool/cron 所有帐号的工作调度配置
/root 系统管理员主文件夹
需重点备份
restore -t [-f dumpfile] 查看dump文件
restore -C [-f dumpfile] 比较dump与实际文件
restore -i [-f dumpfile] 进入互动模式
restore -r [-f dumpfile] 还原整个文件系统
进行分区操作
fdisk -l /dev/sda
查看磁柱
fdisk /dev/sda
查看using default value
将上数+磁柱数-1得出lastcylinder值
partprobe
不需要格式化,直接进行复制
dd if=/dev/sda1 of=/dev/sda2
mount /dev/sda2 /mnt 挂载起来
cpio 可以备份任何东西 但是cpio不会主动找文件来备份,需要配合find文件找到文件名
cpio -ovcB > 文件或者设备 备份
cpio -ivcdu < 文件或者设备 还原
cpio -ivct < 文件或者设备 查看
-o 数据copy到文件或设备上
-i 数据自文件或设备复制到系统中
-u 新文件覆盖旧文件
-c 以porttable format方式储存
系统里面已经包含有一个使用cpio新建的文件在/boot/initrd
通过file看看文件属性
通过将文件增加扩展名,然后予以解压
再使用cpio解开文件
所以UNIX Like系统都会内置vi文本编辑器,其他文本编辑器不一定会存在
软件的编辑接口都会主动调用vi
vim程序编辑器
一般模式
编辑模式
命令行模式
一般模式跟编辑模式与命令行模式是可以来回切换,但编辑模式与命令行模式不可相互切换
1.使用vi进入一般模式
2.按下i进入编辑模式
在vi里面,tab键所得到的结果与空格所得到的结果是不一样的
3.按下esc回到一般模式
4.在一般模式中输入:wq保存然后离开
按键控制
Ctrl+f 向下翻页
Ctrl+b 向上翻页
0 移动到该行的首字符处
$ 移动到该行的末字符处
G移动到文件的最后一行 gg==1G
/word 向下寻找名称为word的字符串
?word 向上寻找名称为word的字符串
n 重复前一个查找的操作
N 反向进行前一个查找操作
:n1,n2s/要替换的单词/替换目标的单词/g
:1,$s/word1/word2/g 全文替换
:1,$s/word1/word2/gc 全文替换加确认
x 向后删除一个字符
X 向前删除一个字符 X==Backspace
ndd 删除光标所在的向下n行
nyy 复制光标所在的向下n行
p 将以复制的数据在光标下一行粘贴
P 粘贴在光标上一行,光标所在行会放到最底
u 还原前一个操作
Ctrl+r 重做上一个操作(后悔吃后悔药)
. 重复前一个操作
一般模式切换到编辑模式
进入插入模式
i(从目前光标所在处插入)
I(从目前行中首个非空格符处开始插入)
a(从目前光标的下一个字符处开始插入)
A(从光标所在行的最后一个字符开始插入)
o(从目标光标所在处的下一行开始插入)
O(从目标光标所在处的上一行开始插入)
进入替换模式
r(只替换 光标所在的字符一次)
R(一直替换光标所在 的文字,知道按下Esc按键)
一般模式切换到命令行模式
:w 将编辑数据写入硬盘文件中
:q 离开vi
:wq 保存后离开
:w 另存文件
:r[filename] 将文件内容加入光标所在行后面
:set nu 显示行号
:set nonu 取消行号
:! command 暂时离开vi模式
ctrl+z vim会被丢到后台去执行
.swp暂存文件
暂存盘
open read-only 打开此文件成为只读文件
edit anyway 用正常方式打开文件,并不载入暂存文件的内容
recover 加载暂存文件的内容,就会之前为保存的文件
delete it 删除暂存文件
quit 离开vim
abort 忽略编辑行为
vim 具有颜色功能,支持许多程序语法(syntax)
alias vi="vim"
块选择(Visual Block)
v字符选择,会将光标经过的地方反白选择
V行选择,会将光标经过的地方发白选择
Ctrl+v 块选择,可以用长方形的方式选择数据
y 将反白的地方复制起来
d 将反白的地方删除
多文件编辑
vi file1 file2
:n 编辑下一个文件
:N编辑上一个文件
:files 列出目前这个vim的打开的所有文件
多窗口功能
:sp [filename] 打开一个新窗口有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同步显示
Ctrl+w+j/k 上下切换页面
Ctrl+w+q 结束离开窗口
vim环境参数
:set nu/nonu 设置与取消行号
:set hlsearch/nohlsearch 高亮查找
:set autoindent/noautoindent 自动缩排
vim环境设置可以写入~/.vimrc文件中
Linux仅有LF($)这个断行符号,DOS中使用(^M$)
使用unix2dos或dos2unix转换一下断行的格式
shell的功能只是提供用户操作系统的一个接口,我们可以调用命令行的模式来操作这些应用程序
shell:命令行都一样
远程管理命令行界面比较快
bash==Bourne Again SHell
命令记忆能力,当成功注销系统后,命令记忆会记录到.bash_history
命令与档案保存功能 [Tab]
命令别名设定 [alias]
查询指令是否为bash shell内建命令 type
type [-tpa] name
-t name底下的字眼意义
file 外部指令
alias 命令别名设定
builtin 内部指令
-p name为外部指令才显示完整文档名
-a 会由PATH路径中,将所有name的指令都列出
变量的显示echo
变量设置的规则
1.变量与变量内容以一个等号来连接
2.等号两边不能直接接空格符
3.变量名称只能是英文和数字,但数字不能在开头
4.变量内容有空格可以用双引号或单引号结合起来
双引号内有特殊字符保持原本属性
单引号内有特殊字符则仅为一般字符
5.转义字符‘\’ 将特殊符号变成一般的字符
6变量为了增加变量内容,可用“$变量名称”或${变量}累加内容
7.变量需要在其他子进程执行,需要以export来使变量变成环境变量
8.取消变量的方法为使用“unset变量名称”
echo $?(关于上一个执行命令的回传码)
影响显示结果的语系变量(locale)
环境变量=全局变量
自定义变量=局部变量
read 读取来自键盘的变量
-p 后面可以接提示符
-t 后面接等待的秒数
declare
-a 将后面变量定义成数组类型
-i 将后面变量定义为整形数字
-x 将后面变成环境变量
-r 将变量设置成为readonly类型
-p 可以单独列出变量的类型
bash环境中数值运算默认最多仅能达到整形类型
建议直接以${数组}方式来读取
ulimit 与文件系统及程序的限制关系
-a 可列出所有的限制额度
-f 这个shell可以创建最大文件容量单位为kb
管控ulimit限值,可以用pam
从前到后删除
#:替换文字的最短的那个 echo ${path#/*:}
##:替换文字的最长的那个 echo ${path##/*}
从后到前删除
%:替换文字的最短的那个 echo ${path%/*:}
%%:替换文字的最短的那个 echo ${path%%/*:}
替换
/ :替换一次文字 echo ${path/sbin/SBIN}
//:替换所有文字 echo ${path//sbin/SBIN}
在大括号内没有冒号:的 差别很大,加了冒号被此时的变量未被设置或者已被设置为空字符串时,都能够用后面的内容来替换和设置
守护进程
crond 计划任务
dhcpd DHCP
httpd 网站服务
lpd 打印服务器
named DNS
nfs 文件共享服务
smb 文件共享与打印服务(samba)
syslog 系统日志
gpm 鼠标进程
cd - 回到上层目录
cd ~ 回到根目录
wc 查看行数,单词数以及字节号 -l -w -c
^ 表示以此为开头的
变量!$或(键盘按键)代表上一条命令的参数
export 命令用于将局部变量改变成全局变量
接受用户的参数
$0 当前执行shell脚本程序名
$1 参数的位置变量
$# 一共的参数个数
$* 所有位置变量的值
$? 判断上一条命令是否成功执行 0为成功,非零为失败
bash解析器字符拓展
\ 转义后面单个字符
‘’ 转义所有的字符
“ ” 变量依然生效
· · 执行命令语句
整数值比较 -eq -ne -gt -lt -le -ge
字符串比较 -z = !=
& 是一个描述符,如果1或2前不加&,会被当成一个普通文件。
1>&2 意思是把标准输出重定向到标准错误.
2>&1 意思是把标准错误输出重定向到标准输出。
&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中
一般用at命令创建计划任务有交互式与非交互式两种方法,先来看看交换式的方法,(输完成后敲击Ctrl+d来保存退出):
查看 at -l
删除 atrm
crontab -e 定期
普通文件即实际保存数据的地方,其并不具备删除自身的权限:
r:可读取文件的实际内容
w:可编辑/新增/修改该文件的实际内容
x:可被执行
目录文件即保存有目录结构和文件权限:
r:可读取目录结构和权限
w:可更改目录结构列表、新建/删除/重命名/转移子文件/目录。
x:表示用户可进入到该目录中
SUID:让执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
SGID:让执行者临时拥有属组的权限 在该目录中创建的文件自动继承此目录的用户组(只可以对目录设置)
SBIT:只能管理自己的数据而不能删除他人的文件,仅对目录有效,也可以叫做特殊权限位之粘滞位
chattr命令用于设置文件的隐藏权限
lsattr命令用于显示文件的隐藏权限
su 命令用于变更使用者的身份(切换登陆者),格式为:su - 用户名
若需要将环境变量改变为新用户的,请加参数 -
sudo 命令用于给普通用户提供额外权利来完成原本超级用户才能完成的任务 sudo [参数] 命令名称
sudo的特色功能
1.限制用户执行指定的命令
2.记录用户执行的每一条命令
3.配置文件(/etc/sudoers)提供集中的管理用户、权限与主机等参数
4.验证过密码后五分钟内无需再让用户验证密码
df 命令用于查看挂载点信息与磁盘使用量,格式为:"df [选项][文件]"
du 命令用于查看磁盘的使用量,格式为:"du[选项][文件]"
磁盘冗余阵列
防止硬盘物理损坏以及增加存储设备的吞吐量
RAID0:需要至少两块(含)硬盘,可以有效提高硬盘的性能和吞吐量,但没有数据冗余和错误修复能力
RAID1:需要至少两块(含)硬盘,可以有效提高数据资料的安全性和可修复性,但成本却提高了
RAID5:需要至少三块(含)硬盘,兼顾存储性能,数据安全和储存成本
RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高
mdadm 命令用于管理系统软件RAID硬盘阵列
物理卷(PV)整个硬盘设备或使用fdisk命令建立的硬盘分区
卷组(VG)由一个或多个物理卷(PV)组成的整体
逻辑卷(LV)从卷组处切割出的空间用来创建文件系统,大小由PE的个数决定默认为4MB的基本块
(扫描,建立,显示,删除,扩展) 逻辑卷管理器
IPTABLES 用于创建数据过滤与NAT规则
在iptables命令中设置数据过滤或处理数据包的策略叫做规则,将多个规则合成一个链
iptables命令中常见的控制类型:
accept:允许通过
log:记录日志信息,然后传给下一条规则继续匹配
reject:拒绝通过,必要时会给出提示
drop:直接丢弃,不给出任何回应
规则链则依据处理数据包的位置不同而进行分类:
prerouting:在进行路由选择前处理数据包
input:处理入站的数据包
output:处理出站的数据包
forward:处理转发的数据包
postrouting:在进行路由选择后处理数据包
iptables中的规则表是用于容纳规则链,规则表默认是允许状态,那么规则链就是设置被禁止的规则
raw表:确定是否对该数据包进行状态跟踪
mangle表:为数据包设置标记
nat表:修改数据包中的源、目标IP地址或端口
filter表:确定是否放行该数据包(过滤)
没有指定规则表则默认指filter表
不指定规则链则指表内所有的规则链
在规则链中匹配规则时会依次检查,匹配即停止,若没匹配项则按链的默认状态处理
iptables防火墙会按照顺序匹配规则,请一定保证允许规则在拒绝规则的上面
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eno1677736 -j SNAT --to-source 111.168.211.212
动态伪装
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
DNAT
iptables -t nat -A PREROUTING -i eno 16777736 -d 61.240.168.149 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.16
端口转发功能可以将本来到某端口的数据包转发到其他端口
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.15.128
流量均衡
iptables -A PREROUTING -i eth0 -p tcp--dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.15.128:80
firewalld 服务有两份规则策略配置记录:runtime permanent
rhel 打开关闭防火墙
systemctl stop firewalld.service
firewall-cmd --panic-on 启动后会禁止所有的网络连接,一切服务的请求也会被拒绝,当心,请慎用
firewalld 服务的富规则用于对服务,端口,协议进行更详细的配置,规则的优先级最高
firewall-cmd --permanent --zone=public --add-rice-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
将默认的运行级别修改为“多用户,无图形模式”:
[root@linuxprobe ~]# ln -sf/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
将默认的运行级别修改为“图形化模式”:
[root@linuxprobe ~]# ln -sf/lib/systemd/system/graphical.target /etc/systemd/system/default.target
Linux系统进程总共有五种不同的状态
R 运行
S 中断
D 不可中断
Z 僵死
T 停止
ps 命令用于查看系统中的进程状态
ps-aux 显示所有的进程 用户以及其他详细信息 显示没有控制终端的进程
top 命令用于监视进程的活动与系统负载
pidof 命令用于查询某个特定程序的进程PID值
kill 命令用于终止某个特定PID号码的进程 kill -9 4674
-9 强制终止,查看全部 kill -l
killall 命令用于终止某个特定名称的所有进程
jobs 命令可以查看到所有在后台运行着的进程
bg 命令将后台的程序继续执行
fg 命令将后台的进程在调回前台,程序依然在运行
nmtui 可视化工具
nmcli 配置网络
nmcli connection add con-name company type ethernet ifname eno16777736
nmcli connection add con-name house ifname eno16777736 autoconnect no type ethernet
查看端口状态(netstat--ss)
ss命令用于查看本机的端口连接状态
ss -ntl 查看监听状态中的套接字
ss -s 查看进程名和PID号码
安全密钥验证,可以让ssh服务基于密钥进行安全验证可无需密码验证
在本地主机中生成密钥对,并将公钥传送到远程主机中
ssh-keygen
将生成好的公钥密钥传送至远程主机
ssh-copy-id 192.168.77.129
远程传输命令
scp [参数] 本地文件 远程帐户@远程IP地址:远程目录
-v 显示详细的连接进度
-P指定远程主机的sshd端口号
-r 传送文件夹时请加此参数
-6 使用ipv6协议
scp [参数] 远程用户@远程IP地址:远程文件 本地目录
将screen会话甚至为暂时断开(detach),那么会话窗口中的程序依然会执行,随后将会话重新连接(attach),那么即可重新控制会话窗口中运行的程序
screen -ls
screen -S samtao
screen -d -r samtao
windows web服务程序是IIS 只能在windows系统中使用
linux nginx低系统资源,占用内存少,并发能力强
apache 稳定性,安全性
tomcat 用于开发调试jsp代码,通常认为tomcat是apache的拓展程序
主机空间 (虚拟主机,VPS,ECS,独立服务器)
Apache服务程序的配置文件
vim /etc/httpd/conf/httpd.conf
Apche 服务程序的配置文件内容分位三种类型:“注释行信息”,“全局配置”,“区域配置”
SELinux属于MAC强制访问控制--让系统中的各个服务进程都受到约束,仅能访问到所需要的文件
模式一: enforcing – 安全策略强制启用模式,将会拦截服务的不合法请求。
模式二: permissive – 遇到服务越权访问只会发出警告而不强制拦截。
模式三: disabled – 对于越权的行为不警告,也不拦截。
selinux 域:对进程资源进行限制 查看方式ps -Z
selinux 安全上下文:对系统资源进行限制 查看方式 ls -Z
开启SELinux允许策略
用semanage命令查询与修改SELinux的安全上下文
restorecon命令用于恢复SELinux文件安全上下文
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot (tab不出来)
restroecon -Rv /home/wwwroot
开启个人用户主页功能
SELinux 默认就不允许Apache服务个人用户主页这项功能
getsebool 命令用于查询所有SELinux规则的布尔值,格式为:“getsebool -a”
SELinux 策略布尔值 0 为 禁止 1 为允许
setsebool 命令用于修改SELinux策略内各项规则的布尔值,格式为: “setsebool -P 布尔值=on|off”
FTP 占用两个端口号
21端口 命令控制,用于接受用户端执行的FTP命令
20端口 数据传输,用于上传,下载文件数据
PAM 可插拔认证模块
一组安全机制的模块插件,让系统管理员可以轻易调整服务程序的认证方式 应用程序层,应用接口层,鉴别模块层
FTP,协议仅能做到传输文件却不能直接修改对方主机的资料数据,NFS开源文件共享程序,远程主机数据挂载到本地目录的服务
samba服务程序是一款基于SMB协议并由服务端和客户端组成的开源文件共享软件
邮件应用协议
简单邮件传输协议 SMTP 用来发送或中转发出的电子邮件,tcp 25端口
第三版邮局协议 POP3 用于将服务器上把邮件存储到本地主机,tco 110端口
第四版互联网信息访问协议 IMAP4 用于在本地主机上访问邮件,tcp 143端口
反垃圾与反病毒模块
邮件加密
邮件监控审核
稳定性
squid 适合安装在内存大,硬盘转速快的服务器上
正向代理:用于企业的局域网内
标准正向代理:将网站数据缓存在服务器本地,提高数据资源被再次访问时候的效率
透明正向代理:用户不需要指定代理服务器的IP地址与端口号
反向代理:回应用回对原始网站服务器静态页面请求,搭建网站架构,缓存网站的静态数据