Linux备忘

最后更新2021年9月

常见linux命令


2.1——Shell

  • Shell (也称壳程序或终端)是用户与内核的交互窗口

  • Bash具有以下优点

    • 方便的调取过往执行的命令

    • Tab补全命令快捷键

    • 具有强大的批处理脚本

    • 具有实用的环境变量功能


2.2——man

  • Linux中包含非常多的命令和数不胜数与命令进行组合的参数,如果想查看某个命令使用技巧或参数就可以使用man命令

man [command]

  • 常用按键 ——

  • 上下翻页 Page Up / Page Down

  • 搜索 / 从上至下搜索 ? 从下至上搜索

  • N 定位上一个关键词 n 定位下一个关键词

  • g 前往首页 G 前往尾 q 退出帮助文档 man手册固然强大,但是对于新手使用来并不友好,手册本身是英文具有阅读门槛,即使是中文在不熟悉命令的情况下也很难读懂其意义。所以新手不用过于纠结看不懂man手册,在后续对常见命令有了解之后,man手册可以在忘记某些命令使用方法时作为很好的补充


2.3——常用系统工作命令echo date reboot poweroff wget ps top pidof kill killall

echo ::echo命令用于输出字符串或输出变量提取的值:: echo linuxjgzmx , echo $PATH

date ::date命令用于显示和设置系统时间或日期:: date “+%j”::可以显示今天是今年中的第几天::

reboot::reboot命令用于重启系统,由于涉及到硬件资源的管理权限,默认只能由root管理员使用::

poweroff::poweroff用于关闭操作系统,默认也只能由root管理员使用::

wget ::用于在终端中下载网络文件:: 常用参数 - P 下载到指定目录 -p 下载页面的所有资源包括图片视频 -r 递归下载 -c 断点续传 -b后台下载

ps::ps命令用于查看系统中进程的状态::常用参数 -a 显示所有进程 -u用户及其他信息 -x显示没有终端的进程

在linux系统中有五种常见的进程状态

  • R (运行) 正在运行的进程
  • S(暂停)处于休眠状态的进程,在接收到指定信号后脱离该状态

  • D(不可中断)进程不响应系统的异步信号,使用kill也无法杀死

  • Z(僵死)进程已经终止,但是进程描述符依然存在

  • T (停止)收到停止信号后 停止工作 进程状态 ⁃ ::USER PID %CPU %MEN VSZ RSS TTY STAT START TIME COMMAND :: ::所有者 进程ID号 cpu占用% 内存占用% 虚拟内存占用% 占用固定的内存量 所在终端 进程状态 被启动时间 使用CPU时间 命令名称与参数::

top::top命令监视活动进程和系统负载::

top主要参数

  • load average:0.01,0.17,0.19 代表系统负载的平均值,值越小负载越低

  • tasks 进程状态

  • %CPU(s) 代表占用资源百分比

  • KIB men 内存使用情况

pidof ::pidof用于查看指定程序的pid值:: pidof sshd

kill ::kill命令用于终止某个指定pid的进程:: kill 2165

killall ::用于终止指定某个服务名称带有的的全部进程::


_2.4 ——系统状态检测命令 ifconfig uname uptime free who last history sosreport _

ifconfig::用于查看网卡配置和网络状态等信息:: ifconfig [网卡名称] [参数] 主要查看信息

inet IP地址 RX TX 收包 发包的个数和累积流量

uname ::查看系统内核与版本信息:: 常用 uname -a 也可以查看 /etc/redhat-release

uptime ::查看启用终端数量和系统负载情况:: 对应一分钟 5分钟 15分钟

free::查看内存使用情况:: 通常与-h配合使用 主要参数 used 已经使用内存数 free 完全空闲内存数 available:真正剩余的可被程序应用的内存数

who::用于查看登陆系统的用户终端信息0.0 表示本地终端连接 Tty表示用户直接连接到电脑 pts表示远程登录 system boot 表示有启动或者重启操作:: 常用参数 who -m 只显示当前用户 -r 显示当前运行级别 -a显示全部信息 who -q 可以统计有多少人在线

last::用于记录所有登录系统的记录,文件记录在/var/log/wtmp/:: 常用组合 last -10 显示最新10条记录

::root pts/1 49.7.19.195 Sat Mar 6 17:21 still logged in :: ::用户名 终端 ip地址 月 周 日 时 结束时间:: ::显示内核信息可能是系统操作 still logged in 表示未结束 down表示直到正常关机结束 crash表示强制关机结束 ::

history::用于查看历史命令 默认保存1000条:: history -c清空历史命令记录 历史命令保存到 ~/.bash.history

sosreport::用于收集系统配置及架构信息并输出文档::


2.5——工作目录切换命令 pwd cd ls

pwd::显示当前工作目录::

cd ::用于切换工作目录::常用组合 cd_切换到上次所处目录 cd..切换上一级目录 cd ~ 切换到家目录 cd ~ username 切换到其他用户家目录

ls::用于显示目录中的文件信息::常用组合 ls -a 显示隐藏文件(隐藏文件以(.)开头) ls -l 查看文件详细信息并 ls-ld查看目录属性 ls-lh 换算文件单位除1000


_2.6——文本文件编辑命令 cat more head taill tr wc stat cut diff _

cat::用于查看页数较少的纯文本文件::cat-n显示行号

more::用于查看页数较多的纯文本文件可以翻页:

head::用于显示纯文本文档的前多少行::head -n 10 显示文档前10行

tail::用于显示文档的末行:: tail -n10 显示文档末尾10行 ::tail -f 可以实时显示一个文件::

tr::用于替换文本文件中的字符:: 格式为 tr [test] [root] 将文本中的test 全部替换成 root

wc::用于统计指定文本的行数或字数,字节数::wc -l 行数 -w 字数 -c字节数 ::统计字数时字符中间没有空格就按一个字数计算:

stat::用于查看文件的具体存储信息和时间信息::

cut::以“列”的形式提取字符::cut test1.txt -f1 -d: -f表示提取第一列 -d指定分隔符

diff::用于比较多个文本文件的差异::diff --brief 用于快速比较两个文件是否不同 -c 显示详细不同


_2.7——文件目录管理命令 touch mkdir cp mv rm dd file

touch::用于创建空白文件或者修改文件时间::-a 修改读取时间 -m 修改 变动时间 -d 同时修改atime 与 mtime, ctime无法修改

mkdir::用于创建空文件夹:: mkdir -p 可以创建嵌套文件夹

cp::用于复制文件或者目录:: 常用参数 -p 保留原始文件属性 -d 若复制对象为链接文件则保留链接文件属性 -r递归复制 -i若文件存在提醒是否覆盖 -a 相当于-pdr

mv::用于剪切文件或者重新命名::

rm::用于删除文件或者目录:: -r递归 -f 强制

dd::用于按照指定大小和个数的数据块来复制文件::dd if=/dev/zero of=100M_file count=1 bs=80M if表示输入文件 of表示输出文件 count 表示bs数量 bs表示块大小

file::用于查看文件的类型:: 常见参数 -i 显示文件MIME类型 -b输出时不显示文件名


_2.8——打包压缩与搜索命令 tar grep find _

tar ::对文件进行打包压缩或解压:: 常用参数 tar -czvf test.gz /etc -c 创建压缩文件 -z 以Gzip压缩解压格式 -v显示进程 -f 指定名称

tar -xzvf test.gz -C /test/etc -x 解压文件 -C 指定目录(目录需要存在)

grep::用于在文本中进行关键词搜索:: 常用参数 -i 忽略大小写 -n 显示行号 -v取反

find::用于按照指定调节查找文件::常用参数

  • find常用参数:

    • -name 匹配名称 >find /bin/ -name "systemd*"

    • -size 匹配大小 > find ./ -size 10M

    • -user 匹配所有者 > find ./ -user test

    • -group 匹配所有组 > find ./ -group test

    • -amin -n +n 匹配读取过文件的时间 n多少分钟之内

    • -mtime -n +n 匹配修改文件内容的时间 -n多少天之内 +n 多少天以前

    • -atime -n +n 匹配访问文件内容的时间 -n多少天之内 +n 多少天以前

    • -ctime -n +n 匹配修改文件权限的时间 -n多少天之内 +n 多少天以前

    • -newer f1 !f2 匹配比文件f1新 比f2旧

    • --type b/d/c/p/l/f 匹配文件类型 依次表示块设备、目录、字符设备、管道、链接文件、文本文件

    • -perm 匹配权限(mode 为完全匹配,-mode 为包含即可

  • 在学习本章时,大部分命令都是通俗易懂比较容易上手,但是涉及到较深层次的使用和原理是文章没有做详细的解释,也是因为定位是入门学习书籍,但即使是入门书籍对于没有计算机原理的理解和系统组成方面的认知很多事情仍然是一知半解,所以底层架构决定上层建筑是有道理的,推荐没有系统学习过计算机学科的朋友在阅读本书前阅读一些基础的计算机内容会在学习中更容易理解一些理论

管道符,重定向与环境变量

本章的学习重点:

  • 重定向技术的五种模式

  • 管道符命令的使用

  • 常见的通配符和转义符 本章阅前思考:

  • 五种重定向模式

  • 文件描述符有什么作用


3.1输入输出重定向 输入重定向是把文件导入到命令中,而输出重定向是把原本要输出到屏幕的文本保存到文件中

  • 标准输入(文件描述符为0)

    • 命令 < 文件::将文件作为命令的标准输入::

    • 命令 << 分界线 ::从标准输入中读入,遇到分界线停止::

    • 命令 < 文件1> 文件2 ::将文件1作为命令的标准输入并将标准输出到文件2::

  • 标准输出(文件描述符为1)

    • 命令 > 文件 ::将标准输出重定向到一个文件中(覆盖)::

    • 命令 > > 文件::将标准输出重定向追加到一个文件中::

  • 错误输出重定向(文件描述符为2)

    • 命令 2> 文件::将错误输出重定向到一个文件中(覆盖)::

    • 命令 2>> 文件::将错误输出重定向追加到一个文件中::

  • 命令 &> 文件 ::将标准输出和标准错误输出重定向到一个文件中::


3.2管道命令符 把前一个命令要输出的到屏幕的标准正确输出当作最后一个命令的标准输入,不同于重定向的是管道符是把前者的输出当作命令的输入而不是当作文本保存

如echo “123456” | passwd --stdin test 通过管道符把命令赋值给test用户

3.3命令通配符 常见的通用匹配信息符号

  • )代表零个或多个字符 ::ls -l /dev/sd::

  • (?)代表单个字符 ::ls -l /dev/sd?::

  • ([ ])[0-9] [123] ::ls -l /dev/sda[0-9] ls -l /dev/sda[123] ::


3.4常用的转义字符

  • 反斜杠(\):::使斜杠后的变量变为普通的字符::

  • 单引号(' '): ::转义其中所有的变量为普通字符::

  • 双引号("")::保留其中的变量,不做转义处理::

  • 反引号(``)::把其中的命令执行后返回结果 ::echo "ifconfig"


3.5重要的环境变量

在linux系统中变量名称一般都是大写的,我们可以通过变量直接提取对应的变量值,系统中的环境变量是用来记录系统运行环境参数的值

常见的环境变量

  • HOME *用户的主目录

  • SHELL *用户正在使用SHELL解释器名称

  • HISTSIZE 输出的历史命令记录条数

  • HISTFILESIZE 保存的历史命令记录条数

  • MAIL *邮件保存路径

  • LANG 系统语言,语系名称

  • RANDOM*生成一个随机数字

  • PS1 Bahs解释器的提示符

  • PATH *定义解释器搜索用户执行命令的路径

  • EDITOR *用户默认的文本处理器 export 变量名 可以将其提升为全局变量 本章总结 本章内容不多主要是重定向和管道符的使用,也比较好理解。本章多记忆即可

vim编辑器与shell命令脚本

本章的学习重点:

  • vim编辑器用法

  • shell脚本基础

  • 流程控制语句 本章阅前思考:

  • 暂无


4.1Vim编辑器

  • _Vim编辑器的三种模式

    • 命令行模式

      • 命令行模式下按 a i o可以进入到文本编辑模式 a:在光标后插入 ,i:在光标处插入,o:在光标下一行插入

      • 命令行常用命令

        • dd 剪切(删除)光标所在行 ,5dd 剪切(删除)从光标处开始向下五行

        • yy 复制光标所在行 ,5yy复制从光标处开始向下五行

          • n/N n 显示搜索命令定位到的下一个字符串,N显示搜索命令定位到的上一个字符串
        • u 撤销上一步操作

        • p 粘贴数据到光标后

        • 10 x删除光标后的10个字符

    • 文本编辑模式

      • Ctrl y 复制光标所处位置上一行同位置的字符

      • Ctrl u 删除到行首

      • home 光标跳到行首

      • end 光标跳到行尾部

    • 末行模式

      • :w 保存

      • :q 退出

      • :wq / X 保存并退出

      • :set nu 显示行号

      • :set nonu 不显示行号

      • :s/one/two 将光标所在行的第一个one替换成two ::光标必须在要替换的那一行::

      • : s/one/two/g 将光标所在行的所有one替换成two

      • : %s/one/two/g 将全文的one 替换成two

      • :/字符串 搜索字符串从上至下

      • :?字符串 搜索字符串从下至上

      • : w 路径 文件名称 将文件另存为

      • : !引入外部命令 例如 :! ls -a /dev/sd* 在外部执行此命令 在按任意键返回文本编辑


4.2编写Shell脚本

  • Shell脚本简介

  • shell脚本的三部分 声明,注释,命令

  • Shell的两种工作方式

    • 交互式:用户每输入一条命令就立即执行

    • 批处理:由用户事先编写好一个完整的Shell脚本,Shell在一次性执行

  • 接收用户参数

  • Shell脚本内设了接受脚本的参数

    • $0 代表脚本的文件名称

    • $# 代表总共有几个参数

    • $* 代表所有对应参数的值

    • $? 代表上一次命令执行的的返回值

    • 12 $3 代表第一个 第二个 和第三个变量

  • 0 脚本名称1接收的第一个参数 $2接收的第二个参数

  • # 总共接收参数的个数*每个接收的参数对应的值

脚本如下:

!/bin/bash

测试脚本,接受用户参数

echo "0" echo "脚本一共有#个参数,分别是*" echo "第一个参数是1,第五个参数是$3" 执行如下: [root@Hubi_Dora test]# bash test.sh zhangsan lisi wangerma test.sh 脚本一共有3个参数,分别是zhangsan lisi wangerma 第一个参数是zhangsan,第三个参数是wangerma

  • 判断用户参数

  • 按照测试对象来划分,条件测试语句可以分为4种

  • 测试语句格式[ 条件表达式 ]::条件表达式两边必须有空格如 [ -d /test/test1 ]::

  • 文件测试语句

    • 文件测试常用参数

      • -d 测试文件是否为目录类型

      • -e 测试文件是否存在

      • -f 测试文件是否为一般文件

      • -r -w -x 测试文件是否有 -r 读取 -w 写入 -x执行权限

      • ::[ -d /test/test1 ]::

      • ::echo $?::值为零时代表目录存在,非零则代表不存在

  • 逻辑测试语句

    • “与” :&& 表示前面命令执行成功后才会执行后面的命令 如::[ -e /dev/cdrom ] && echo "yes"::

    • “或” :|| 表示前面命令执行失败后才会执行后面的命令 如::[ -e /dev/cdrom ] || mkdir /dev/cdrom::

    • “非” :! 把条件测试中的判断结果取反,如果判断为正确则变成错误,实例如下

[root@Hubi_Dora test]# [ -e /dev/cdrom ] && echo "yes" yes [root@Hubi_Dora test]# [ -e /dev/cdrom ] || echo "yes" [root@Hubi_Dora test]# [ ! -e /dev/cdrom ] || echo "yes" yes -e 判断是否有 /dev/cdrom 判断这个文件是否存在,在逻辑语句是“&&”的情况下前面命令执行成功则会输出 yes 如果逻辑语句是“||”的情况下前面语句执行成功则不输出yes 。而在取反的情况下本来执行成功的语句被取反变成不成功 所以输出了yes

  • 整数值比较语句

  • 整数值比较运算符仅是对数字的比较,不能把数字与字符串等内容进行一起操作,也不能使用大于号,小于号,等号等数学运算符号进行比较,必须使用规范的整数比较运算符来进行操作,常见的整数运算符如下

    • -eq 是否等于

    • -ne 是否不等于

    • -gt 是否大于

    • -lt 是否小于

    • -ge 是否大于等于

    • -le 是否小于等于

[root@Hubi_Dora test]# FREEMEM=free -m | grep "Mem" | awk '{print $4}' [root@Hubi_Dora test]# echo FREEMEM_ 13236 [root@Hubi_Dora test]# [freeMem -lt 10240 ] && echo "too small"_ 通过free -m 查看剩余内存 在用 grep 和 awk 截取到剩余内存的数值 通过 -lt 比较10240 查看是否内存小于10G 如果小于10G则输出too small

  • 字符串比较语句

  • 字符串比较语句通常用于测试字符串是否为空值,或两个字符串是否相同,常用来判断某个变量是否为空值,常见运算字符如下

    • = 比较字符串是否相同

    • != 比较字符串是否不同

    • -z 用于比较字符串是否为空

[root@Hubi_Dora test]# [ SHELL = '/bin/bash' ] ::运算符中间要有空格:: [root@Hubi_Dora test]# echo? 0


4.3流程控制语句 简单的管道符和重定向可以快捷的组合命令,但是距离编写shell脚本还差很远

  • if条件测试语句

  • if条件测试语句可以让脚本根据具体的情况执行相关的命令,脚本可以更具灵活性,if的关键词如下

if 条件测试语句1 then 命令序列1 elif 条件测试语句2 then 命令序列2 else 命令序列3 fi

  • for条件循环语句

  • for条件循环语句允许一次性读取多个信息,然后逐一对信息进行操作,适合有范围的数据处理,for关键词如下

for 变量名 in 取值列表 do 命令序列 done

  • while条件循环语句

  • while条件循环语句与for条件循环的差异主要在于while通过条件测试的真假来决定循环是否执行,如果条件为真就一直循环,遇到假结束

while 条件测试操作 do 命令序列 done

  • case条件测试语句

  • case条件测试语句更适合测试条件较多的脚本

case 变量值 in 模式1) 命令序列1 ;; 模式2) 命令序列2 *) 默认序列 esac


4.4计划任务服务程序

  • 计划任务服务分为一次性和长期性,一次性可以使用at命令如下

    • at 后加时间 >输入命令 Ctrl+D结束任务编写

    • at -l 可以列出计划任务

    • atrm 后跟 任务序号可以删除任务

  • 长期计划任务可以使用crond服务,命令为crontab

    • 格式为 ::分 时 日 月 周 命令::

    • 字段说明

      • 分 取值为0~59

      • 时 取值为0~23

      • 日 取值为1~31

      • 月 取值为1~12

      • 周 取值为0~7

    • 常用符号

    • (,) 7,8,9 和的意思 7点8点9点

    • (/) */2 间隔时间 每两小时

    • (-) 7-8 到的意思表示连续时间段7点到8点

  • 计划任务中的分字段不能为空或者*号,必须有数值可以是0

用户身份与文件权限

用户身份与能力 ——useradd groupadd usermod passwd userdel

  • 在rhel7系统中用户身份有以下这些

    • 管理员UID为零:系统管理员用户

    • 系统用户UID为0-999:负责执行一些默认服务的系统用户

    • 普通用户UID从1000开始:由管理员创建的用于日常工作的用户 useradd:命令用户创建新用户,格式为useradd [选项] 用户名

  • 使用useradd创建用户时,默认的用户家目录会被存放在/home目录中。默认的shell解释器为/bin/bash,并且会默认创建一个创建一个同名的基本组,每个用户只能有一个基本组但可以有多个扩展组,常用参数与作用如下

    • -d 指定用户的家目录(默认为/home)

    • -e 账户到期时间 (格式为YYYY-MM-DD)::chage -l 查看用户到期时间::

    • -u 指定用户的默认UID

    • -g 指定一个初始的用户基本组(必须已经存在)

    • -G 指定一个或多个扩展用户组

    • -N 不创建与用户同名的基本用户组

    • -s 指定该用户的默认Shell解释器

  • ::-s /sbin/nologin选择此Shell解释器时用户将无法登录到系统::

  • 使用id +用户名 可以查看用户的基本信息,也可以cat /etc/passwd/ 查看 groupadd 用于创建用户组 格式为groupadd [选项] 用户名 usermod 用于修改用户的属性 格式为usermod [选项] 用户名

  • 修改用户属性可以通过直接修改/etc/passwd文件 也可以使用usermod 常用参数如下

    • -c 填写用户的备注信息::设置完备注后可以在/etc/passwd中查看备注::

    • -d -m 这两个参数连用可以指定新的家目录并自动迁移旧家目录中的文件

    • -e 指定到期时间

    • -g 变更所属的用户组

    • -G 变更所属的扩展组

    • -L 锁定用户 禁止登陆

    • -U 解锁用户 可以登陆

    • -s 变更默认终端

    • -u 修改用户的UID passwd 用于修改用户密码,过期时间,认证信息等

  • -l 锁定用户禁止登陆

  • u 解锁用户 允许登陆

  • --stdin 允许通过标准输入修改用户名密码

  • -d 使该用户可以通过空密码登陆系统

  • -e 强制用户在下次登陆时修改密码

  • -S 显示用户的密码是否被锁定,以及采用加密算法的名称 userdel 用于删除用户

  • -r 强制

  • -f 同时删除家目录 文件权限与归属

  • linux下常见的文件类型

      • : 普通文件
    • d : 目录文件

    • l : 链接文件

    • b : 块设备文件

    • c : 字符设备文件

    • p : 管道文件 文件权限的字符与数字表达

文件所有者 文件所属组 其他用户 r w x 分别代表读,写,执行权限 对应数字 4,2,1,

  • 文件特殊权限

    • chmod:用于设置文件或目录的权限

    • chown:用于设置文件或目录的属主,属组

    • SUID:可以让二进制程序的执行者临时用于属主权限::所有者的权限由rwx变成rws,就代表该文件被赋予了SUID如果该文件原本没有x权限,s将显示大写S:: ::可以通过chmod u+s /usr/bin/passwd 的格式来添加SUID权限::

    • SGID:SGID主要实现两个功能

      • 让二进制程序的执行者临时拥有属组权限

      • 在某个目录中创建的文件自动继承该目录的用户组(仅可以对目录使用)::可以通过chmod -Rf g+s /file 设置自动继承::::

    • SBIT:特殊权限位 保护位,可确保用户只能删除自己的文件而不能删除其他人的文件::文件能否删除不在乎文件本身权限而在乎文件所在的目录是否有写入权限:: ::可以通过chmod o+t /file 来设置文件的保护位:: _文件隐藏属性 chattr lasttr _

  • chattr 用于设置文件的隐藏权限 格式为 chattr [参数] 文件 +追加参数 -取消参数

    • i : 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件

    • a : 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)

    • S : 文件内容在变更后立即同步到硬盘(sync)

    • s : 彻底从硬盘中删除,不可恢复(用0 填充原文件所在硬盘区域)

    • A : 不再修改这个文件或目录的最后访问时间(atime)

    • b : 不再修改文件或目录的存取时间

    • D : 检查压缩文件中的错误

    • d: 使用dump 命令备份时忽略本文件/目录

    • c : 默认将文件或目录进行压缩

    • u : 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复

    • t : 让文件系统支持尾部合并(tail-merging)

    • x : 可以直接访问压缩文件中的内容

  • lsattr 用于查看文件的隐藏权限,格式为lsattr 参数 文件

    • 如 lsattr /etc/tmp 文件访问控制列表
  • 文件访问控制列表可以针对单独用户进行权限控制,::如果针对某个目录设置ACL则其目录中的文件会自动继承其ACL,若针对文件设置ACL则文件不在继承目录的ACL::

  • setfacl 用于管理文件的ACL规则,格式为“setfacl [参数] 文件名称”。文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的ACL,则可以使用-b 参数。下面来设置用户在/root 目录上的权限

setfacl -Rm g:linuxprobe:r-x /tmp ::g表示用户组 u表示用户 rwx读写执行权限::

  • getfacl 用于显示文件上设置的ACL信息,格式为“getfacl 文件名称”。 su命令与sudo服务

  • su 命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下切换到其他用户 su (-) 代表完全切换到新用户,即把环境变量信息也变更为新用户的相应信息

  • sudo 命令把特定命令的执行权限赋予给指定用户,这样既可保证普通用户能够完成特定的工作也可以保证安全性

    • -h 列出帮助信息

    • -l 列出当前用户可执行的命令

    • -u 用户名或UID 值以指定的用户身份执行命令

    • -k 清空密码的有效时间,下次执行sudo 时需要再次进行密码验证

    • -b 在后台执行指定的命令

    • -p 更改询问密码的提示语

  • 总结来说sudo有以下功能

    • 限制用户执行指定的命令:
  • 记录用户执行的每一条命令;

  • 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;

    • 验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。
  • root 管理员可以使用visudo命令修改sudo服务配置文件

存储结构与磁盘划分

本章大纲

  • _ 一切从“/”开始;

    • Linux系统中常见的目录名称以及相应内容如下

    • /boot 开机所需文件—内核,引导装载程序,开机菜单以及所需配置文件等

    • /dev 以文件形式存放任何设备与接口

    • /etc 关键启动文件,配置文件

    • /home 用户家目录

    • /bin 核心操作系统命令::在早期图书中对/bin 与/usr/bin有不同的定位,/usr/bin:大部分命令与可执行文件,但是在rhel8版本中通过ll可以看到/bin 是一个链接文件,连接自/usr/bin/ 通过wc命令进行统计可以发现两个文件的命令数量是相同的,因此得出/usr/bin/ 与/bin在新版中进行了结合::

    • /lib 库,共享库,以及/bin 与/sbin 下面的命令要调用的函数,以及标准程序的支持文件:: lib -> /usr/lib::

    • /lib64 64位系统的lib库文件 ::lib64 -> /usr/lib64 ::

    • /sbin 核心系统的操作命令,::与bin不同的是在早期sbin目录下存放的文件都是静态链接,对其操作系统的其他部分没有什什么依赖,如今所有的二进制程序都是动态链接了,sbin 与bin也不存在真正的差异了::,::sbin -> /usr/sbin::

    • /media 用于挂载可移除设备文件的目录

    • /mnt 用于临时挂载可移除设备文件的目录

    • /opt 放置第三方的软件

    • /root 系统管理员的家目录

    • /run /run 中的文件和目录没有存储在磁盘上,而只存储在内存中,保存系统启动后产生的各项信息 和/var/run 中的文件相同

    • /srv 一些网络服务的数据文件目录,

    • /tmp 任何人均可使用的“共享”临时目录,::不要在此目录存放重要数据::

    • /proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等,/proc中的文件和目录存储在内存中

    • sys 与/proc 很像,也是一个虚拟的文件系统,主要记录内核与系统硬件信息相关的内容,包括已经加载的内核模块,同样只保存在内存中

    • /usr/local 用户自行安装的软件

    • /usr/share 帮助与说明文件,也可放置共享文件

    • /var 主要存放经常变化的文件,如日志

    • /lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里在

    • Linux中有两种路径的写法

      • 绝对路径 是文件或目录的完整路径

      • 相对路径 是基于当前目录的路径

  • _物理设备的命名规则;

    • IDE 设备/dev/hd[a-d]

    • SCSI/SATA/U 盘/dev/sd[a-p]

    • 软驱/dev/fd[0-1]

    • 打印机/dev/lp[0-15]

    • 光驱/dev/cdrom

    • 鼠标/dev/mouse

    • 磁带机/dev/st0 或/dev/ht0

    • 一台主机上可以有多块硬盘,因此系统采用a~p 来代表16 块不同的硬盘(默认从a开始分配),硬盘分区编号的默认规则是主分区或扩展分区的编号从 1 开始,到4 结束。逻辑分区从编号 5 开始::所谓的扩展分区,并不是实际意义上的分区,仅仅是指向下一个分区的指针::

    • 已/dev/sda5为例子 /dev/表示设备所在的目录 sd表示为SCSI设备 a表示硬盘序列号 5表示分区号

  • _文件系统与数据资料;

    • 用户在硬件存储设备中执行的文件建立、写入、读取、修改、转存与控制等操作都是依靠文件系统来完成的

    • ext3 是一款日志文件系统,能够在系统异常宕机时避免文件系统资料丢失,当硬盘容量较大时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失

    • ext4它支持的存储容量高达1EB(1EB=1,073,741,824GB)且能够有无限多的子目录。另外,Ext4 文件系统能够批量分配block 块,从而极大地提高了读写效率。

    • XFS 是一种高性能的日志文件系统,而且是RHEL 7 中默认的文件管理系统,可以快速地恢复可能被破坏的文件最大可支持的存储容量为18EB

  • _挂载硬件设备;

    • mount 命令用于挂载文件系统,格式为“mount 文件系统挂载目录”。::-a 挂载/etc/fstab/中自定义的文件系统,-t指定文件系统的类型::/etc/fstab 文件参数解释如下

    • 设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)

    • 挂载目录 指定要挂载到的目录,需在挂载前创建好

    • 格式类型 指定文件系统的格式,比如 Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等

    • 权限选项 若设置为 defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async

    • 自检 若为 1 则开机后进行磁盘自检,为0 则不自检

    • 优先级 若“自检”字段为 1,则可对多块硬盘进行自检优先级设置

    • umont命令用于撤销已经挂载的设备文件 umount [挂载点/设备文件]

  • _添加硬件设备;

    • *fdisk 用于管理磁盘分区,格式为“fdisk [磁盘名称]”,它提供了集添加、删除、转换分区等功能

      • m 查看全部可用的参数

      • n 添加新的分区

      • d 删除某个分区信息

      • l 列出所有可用的分区类型

      • t 改变某个分区的类型

      • p 查看分区信息

      • w 保存并退出

      • q 不保存直接退出

    • mkfs用于格式化操作

      • mkfs 命令把常用的文件名称,用后缀的方式保存成了多个命令文件,使用时按tab键即可选择需要的格式::如mkfs.xfs /dev/sdb1::
    • du 查看文件数据占用量。简单来说,该命令就是用来查看一个或多个文件占用了多大的硬盘空间

      • du -sh /* -s 仅显示没个目录的总计大小 -h 以可读格式打印输出
    • fdisk 创建一个主分区操作如下

    • Command (m for help): p #查看当前分区信息

    • Command (m for help): n #添加新的分区

    • Select (default p): p #选择主分区

    • Partition number (1-4, default 1): 1 #选择主分区编号

    • First sector (2048-41943039, default 2048):此处敲击回车 #选择起始扇区位置(系统会自动计算最靠前的空闲扇区)

    • Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G #选择结束扇区位置,也可使用+G表示创建多少G的分区

    • Command (m for help): w #w保存更改

  • _添加交换分区;

    • 使用fdisk新建分区,再通过mkfs将分区格式化成swap,最后使用swapon 指定新分区的路径 如swapon /dev/sdb2 将swap分区挂在到系统中,即可使用free -m 查看变化后的交换分区大小
  • _磁盘容量配额;

    • quota进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数,命令还有软限制和硬限制的功能。

    • 软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。

    • 硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

    • RHEL 7 系统中安装了quota 磁盘容量配额服务,但存储设备默认不开启需要修改/etc/fstab 在要配额的磁盘权限选项后追加uqota::defaults,uquota::

    • *xfs_quota *命令是一个专门针对XFS 文件系统来管理quota 磁盘容量配额服务而设计的命令,使用如下

    • xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot::。其中,-c 参数用于以参数的形式设置要执行的命令;-x参数是专家模式,让运维人员能够对quota 服务进行更多复杂的配置。接下来我们使用xfs_quota 命令来设置用户tom 对/boot 目录的quota 磁盘容量配额。具体的限额控制包括:硬盘使用量的软限制和硬限制分别为3MB 和6MB;创建文件数量的软限制和硬限制分别为3 个和6 个。xfs_quota -x -c report /boot 重载磁盘配置::

    • edquota 命令用于编辑用户的quota 配额限制,其中,-u参数表示要针对哪个用户进行设置;-g 参数表示要针对哪个用户组进行设置。edquota 命令会调用Vi 或Vim 编辑器来让root 管理员修改要限制的具体细节。下面把用户tom 的硬盘使用量的硬限额从5MB 提升到8MB

    • edquota -u tom

    • Disk quotas for user tom (uid 1001):

    • Filesystem blocks soft hard inodes soft hard

    • /dev/sda 6144 3072 8192 1 3 6

  • _软硬方式链接。

    • 在 Linux 系统中存在硬链接和软连接两种文件

      • 硬链接(hard link):硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode 连接数就会增加1;而且只有当该文件的inode 连接数为0 时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode 的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是不能跨分区对目录文件进行链接。

      • 软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效

    • ln 命令用于创建链接文件 ln命令中可用的参数以及作用如下

      • -s 创建“符号链接”(如果不带-s 参数,则默认创建硬链接)

      • -f 强制创建文件或目录的链接

      • -i 覆盖前先询问

      • -v 显示创建链接的过程

使用RAID 与LVM 磁盘阵列技术

  • *RAID(独立冗余磁盘阵列)

    • RAID 技术通过把多个硬盘设备组合成一个容量更大、安全性更好的磁盘阵列,并把数据切割成多个区段后分别存放在各个不同的物理硬盘设备上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理硬盘设备上,从而起到了非常好的数据冗余备份效果,但是它也相应地提高了成本支出。

    • RAID0:RAID 0 技术把多块物理硬盘设备(至少两块)串联在一起组成一个大的卷组,并将数据依次写入到各个物理硬盘,能够有效地提升硬盘数据的吞吐速度,但是不具备数据备份和错误修复能力。

    • RAID1:RAID 1 技术是把两块以上的硬盘设备进行绑定,同时将数据写入到多块硬盘设备上(可以将其视为数据的镜像或备份)。当其中某一块硬盘发生故障后,一般会立即自动以热交换的方式来恢复数据的正常使用。但是RAID1的磁盘利用率也成倍下降

    • RAID5:,RAID5 技术是把硬盘设备的数据奇偶校验信息保存到其他硬盘设备中。RAID 5 磁盘阵列组中数据的奇偶校验信息并不是单独保存到某一块硬盘设备中,而是存储到除自身以外的其他每一块硬盘设备上,这样的好处是其中任何一设备损坏后不至于出现致命缺陷,这样的技术特性“妥协”地兼顾了硬盘设备的读写速度、数据安全性与存储成本问题

    • RAID10:RAID 10 技术是RAID 1+RAID 0 技术的一个“组合体”。RAID 10 技术需要至少4 块硬盘来组建,其中先分别两两制作成RAID 1 磁盘阵列,以保证数据的安全性;然后再对两个RAID 1 磁盘阵列实施RAID 0 技术,进一步提高硬盘设备的读写速度。只要坏的不是同一组中的所有硬盘,那么最多可以损坏50%的硬盘设备而不丢失数据

  • LVM(逻辑卷管理器)

  • LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并,一般而言,在生产环境中无法精确地评估每个硬盘分区在日后的使用情况,我们可以通过部署LVM 来解决上述问题

  • 部署逻辑卷命令 :: 扫描 建立 显示 删除 扩展 缩小 ::物理卷管理 pvscan pvcreate pvdisplay pvremove ::卷组管理 vgscan vgcreate vgdisplay vgremove vgextend vgreduce ::逻辑卷管理 lvscan lvcreate lvdisplay lvremove lvextend lvreduce ::resize2fs 通知系统内核大小发生了变化:: ::e2fsck -f /dev/storage/vo 检查文件系统是否被损坏 -f 强制::

  • 第 1 步:让新添加的两块硬盘设备支持LVM 技术

    • pvcreate /dev/sdb /dev/sdc
  • 第 2 步:把两块硬盘设备加入到storage 卷组中

    • vgcreate storage /dev/sdb /dev/sdc

    • 然后查看卷组的状态

    • vgdisplay

  • 第3 步:切割出一个约为150MB 的逻辑卷设备 ::在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M 生成一个大小为150MB 的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。

  • 如下使用 -l 37 可以生成一个大小为37×4MB=148MB 的逻辑卷

    • lvcreate -n vo -l 37 storage

    • 查看逻辑卷组

    • lvdisplay

  • 把生成好的逻辑卷进行格式化,然后挂载使用。

    • mkfs.ext4 /dev/storage/vo

    • mkdir /linuxprobe

    • mount /dev/storage/vo /linuxprobe

  • 第5 步:查看挂载状态,并写入到配置文件,使其永久生效

    • df -h

    • echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab

  • _ 扩容逻辑卷 lvextend _

  • 只要卷组中有足够的资源,就可以一直为逻辑卷扩容,扩展前请一定要记得卸载设备和挂载点的关联

    • umount /linuxprobe
  • 第 1 步:把上一个实验中的逻辑卷vo 扩展至290MB

    • lvextend -L 290M /dev/storage/vo
  • 第 2 步:检查硬盘完整性,并重置硬盘容量

    • e2fsck -f /dev/storage/vo

    • resize2fs /dev/storage/vo

  • 第 3 步:重新挂载硬盘设备并查看挂载状态

    • mount -a

    • df -h

  • _ 缩小逻辑卷 lvreduce_

  • 相较于扩容逻辑卷,在对逻辑卷进行缩容操作时,其丢失数据的风险更大。所以在生产环境中执行相应操作时,一定要提前备份好数据。另外Linux 系统规定,在对LVM 逻辑卷进行缩容操作之前,要先检查文件系统的完整性(当然这也是为了保证我们的数据安全)。在执行缩容操作前记得先把文件系统卸载掉

  • 第 1 步:检查文件系统的完整性

    • e2fsck -f /dev/storage/vo
  • 第 2 步:把逻辑卷vo 的容量减小到120MB

    • resize2fs /dev/storage/vo 120M ::在缩小逻辑卷之前需要先通知系统查看是否满足缩小的条件::

    • lvreduce -L 120M /dev/storage/vo

  • 第 3 步:重新挂载文件系统并查看系统状态

    • mount -a|df -h
  • _逻辑卷快照 _

  • "该功能可以对某一个逻辑卷设备做一次快照,如果日后发现数据被改错了,就可以利用之前做好的快照卷进行覆盖还原。LVM 的快照卷功能有两个特点:::逻辑卷快照是一次性的,记录的文件内容不会自动更新::

    • ::快照卷的容量必须等同于逻辑卷的容量::

    • ::快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除::

  • 第 1 步:使用-s 参数生成一个快照卷,使用-L 参数指定切割的大小。另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作

    • lvcreate -L 120M -s -n SNAP /dev/storage/vo ::- n 是指定新逻辑卷的名称 ::
  • 第 2 步:为了校验SNAP 快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载

    • umount /linuxprobe

    • lvconvert --merge /dev/storage/SNAP ::还原逻辑卷不需要指定还原的位置::

  • 第 4 步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB 的垃圾文件也被清除了。

  • _删除逻辑卷 _

  • 当生产环境中想要重新部署LVM 或者不再需要使用LVM 时,则需要执行LVM 的删除操作。为此,需要提前备份好重要的数据信息,然后依次删除逻辑卷卷组物理卷设备,这个顺序不可颠倒

  • 第 1 步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数

    • umount /linuxprobe

    • vim /etc/fstab ::记得要删除自动挂载信息::

  • 第 2 步:删除逻辑卷设备,需要输入y 来确认操作

    • lvremove /dev/storage/vo
  • 第 3 步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径

    • vgremove storage
  • 第 4 步:删除物理卷设备

    • pvremove /dev/sdb /dev/sdc
  • 在上述操作执行完毕之后,再执行lvdisplay、vgdisplay、pvdisplay 命令来查看LVM 的信息时就不会再看到信息了(前提是上述步骤的操作是正确的)

iptables 与firewalld 防火墙

  • 保障数据的安全性是继保障数据的可用性之后最为重要的一项工作。防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用,主要功能都是依据策略对穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。

  • 防火墙管理工具

    • iptables

    • firewalld

    • TCP Wrappers

    • firewall-config::图形化防火墙工具::

  • iptables—— ::iptables 与firewalld 等都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,在 RHEL 7 系统中,firewalld 防火墙取代了iptables 防火墙。::......::防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略,放行或阻止::

  • iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:

    • 在进行路由选择前处理数据包(PREROUTING)

    • 处理流入的数据包(INPUT)::主要用INPUT规则链,该规则链可以增大黑客人员从外网入侵内网的难度::

    • 处理流出的数据包(OUTPUT)

    • 处理转发的数据包(FORWARD)

    • 在进行路由选择后处理数据包(POSTROUTING)

  • iptables处理流量的动作

    • ACCEPT(允许流量通过)

    • REJECT(拒绝流量通过)::REJECT 则会在拒绝流量后再回复一条“您的信息已经收到,但是被扔掉了::

    • LOG(记录日志信息)

    • DROP(拒绝流量通过)::DROP 来说,它是直接将流量丢弃而且不响应::

  • 防火墙策略规则的匹配顺序是从上至下的,因此要把较为严格、优先级较高的策略规则放到前面,以免发生错误

  • iptables 中的常用参数以及作用

    • -P 设置默认策略

    • -F 清空规则链

    • -L 查看规则链 -nL 显示规则编号 --line-number查看编号

    • -A 在规则链的末尾加入新规则

    • -I num 在规则链的头部加入新规则

    • -D num 删除某一条规则

    • -s 匹配来源地址IP/MASK,加叹号“!”表示除这个IP 外

    • -d 匹配目标地址

    • -i 网卡名称匹配从这块网卡流入的数据

    • -o 网卡名称匹配从这块网卡流出的数据

    • -p 匹配协议,如TCP、UDP、ICMP ::-p all 匹配所有协议::

    • --dport num 匹配目标端口号

    • --sport num 匹配来源端口号

  • 实例

    • 在 iptables 命令后添加-L 参数查看已有的防火墙规则链::iptables -L::

    • 在iptables 命令后添加-F 参数清空已有的防火墙规则链:: iptables -F::

    • INPUT 规则链的默认策略设置为拒绝::iptables -P INPUT DROP::

    • 向 INPUT 链中添加允许ICMP 流量进入的策略规则::iptables -I INPUT -p icmp -j ACCEPT:: -j 接动作

    • 删除INPUT 规则链中刚刚加入的那条策略(允许ICMP 流量)::iptables -D INPUT 1:: 1是指的规则链中的第一条规则

    • 将INPUT 规则链设置为只允许指定网段的主机访问本机的22 端口,拒绝来自其他所有主机的流量::iptables -I INPUT -s 10.233.35.254/24 -p tcp --dport 3012 -j ACCEPT || iptables -A INPUT -p tcp --dport 3012 -j REJECT::

    • 向INPUT 规则链中添加拒绝所有人访问本机12345 端口的策略规则::iptables -I INPUT -p tcp --dport 12345 -j REJECT || iptables -I INPUT -p udp --dport 12345 -j REJECT::

    • 向INPUT 规则链中添加拒绝所有主机访问本机1000~1024 端口的策略规则::iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT ||iptables -A INPUT -p udp --dport 1000:1024 -j REJECT ::

  • 注意,使用iptables 命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令::service iptables save:: 防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉


  • firewalld——

  • firewalld 有 firewall-cmd 命令行工具/ firewall-config 图形化工具两种管理工具

  • *firewalld 常用区域

    • trusted 允许所有的数据包

    • home拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client 与dhcpv6-client 服务相关,则允许流量

    • internal 等同于home 区域

    • work拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client 与dhcpv6-client 服务相关,则允许流量

    • ::public拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client 服务相关,则允许流量::

    • external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh 服务相关,则允许流量

    • dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh 服务相关,则允许流量

    • block 拒绝流入的流量,除非与流出的流量相关

    • drop 拒绝流入的流量,除非与流出的流量相关

  • *firewalld常见参数以及作用

    • --get-default-zone 查询默认的区域名称

    • --set-default-zone=<区域名称> 设置默认的区域,使其永久生效

    • --get-zones 显示可用的区域

    • --get-services 显示预先定义的服务

    • --get-active-zones 显示当前正在使用的区域与网卡名称

    • --add-source= 将源自此IP 或子网的流量导向指定的区域

    • --remove-source= 不再将源自此IP 或子网的流量导向某个指定区域

    • --add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域

    • --change-interface=<网卡名称> 将某个网卡与区域进行关联

    • ::--list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息 ::

    • --list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息

    • ::--add-service=<服务名> 设置默认区域允许该服务的流量 ::

    • ::--add-port=<端口号/协议> 设置默认区域允许该端口的流量 ::

    • --remove-service=<服务名> 设置默认区域不再允许该服务的流量

    • --remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量

    • ::--reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则

    • --panic-on 开启应急状况模式

    • --panic-off 关闭应急状况模式

  • 实例

1 查询 public 区域是否允许请求SSH 和HTTPS 协议的流量: [root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh yes [root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https

2把 firewalld 服务中请求HTTPS 协议的流量设置为永久允许,并立即生效: [root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https success [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https success [root@linuxprobe ~]# firewall-cmd --reload 3把原本访问本机 888 端口的流量转发到22 端口,要且求当前和长期均有效: [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port= port=888:proto=tcp:toport=22:toaddr=192.168.10.10 success [root@linuxprobe ~]# firewall-cmd --reload 4拒绝192.168.10.0/24 网段的所有用户访问本机的ssh 服务(22 端口): [root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" success [root@linuxprobe ~]# firewall-cmd --reload

  • *服务的访问控制列表

  • TCP Wrappers 是RHEL 7 系统中默认启用的一款流量监控程序,它能够根据来访主机的地址与本机的目标服务程序作出允许或拒绝的操作。TCP Wrappers 服务的防火墙策略由两个控制列表文件所控制,用户可以编辑允许控制列表文件来放行对服务的请求流量,也可以编辑拒绝控制列表文件来阻止对服务的请求流量,系统将会先检查允许控制列表文件(/etc/hosts.allow),如果匹配到相应的允许策略则放行流量;如果没有匹配,则去进一步匹配拒绝控制列表文件(/etc/hosts.deny)如果这两个文件全都没有匹配到,则默认放行流量

  • TCP Wrappers 服务的控制列表文件中常用的参数

    • 客户端类型 示例 满足示例的客户端列表

    • 单一主机 192.168.10.10 IP 地址为192.168.10.10 的主机

    • 指定网段 192.168.10. IP 段为192.168.10.0/24 的主机

    • 指定网段 192.168.10.0/255.255.255.0 IP 段为192.168.10.0/24 的主机

    • 指定 DNS 后缀 .linuxprobe.com 所有DNS 后缀为.linuxprobe.com 的主机

    • 指定主机名称 www.linuxprobe.com 主机名称为www.linuxprobe.com 的主机

    • 指定所有客户端 ALL 所有主机全部包括在内

使用ssh 服务管理远程主机

配置网络服务 创建网络会话 rhel系统使用NetworkManager来提供网络服务,可以使用nmcli命令来管理。rhel7系统支持网络会话功能,即在多个配置文件中快速切换,概念类似于Firewalld的zone概念

  • nmcli connection add con-name company ifname eth0 autoconnect no type ethernet ip4 81.70.37.186/24 gw4 81.70.37.1

  • 创建会话 con-name:会话名称, compay:指定的名称,ifname:指定本机网卡,autoconnect no: 设置网络会话默认不启用 ip4 gw4:手动置顶ip和网关

  • 创建成功之后可以通过nmcli connection show 查看创建的网络会话

  • nmcli connection up (创建的会话名称):开启网络会话 绑定两块网卡 借助于网卡绑定技术,不仅可以提高网络传输速度。更重要的是还可以在其中一个出现故障时充当备份线路保证服务可用性。

  • linux内核支持网卡绑定,常见的网卡绑定驱动有三种模式,mode0,mode1,mode6

    • mode0:平衡负载,平时两块网卡一块工作,互为主从需要在服务器本地的交换机配置链路聚合

    • mode1: 平时只有一块网卡工作,故障后替换为另一块网卡

    • mode6:平衡负载,平时两块网卡一块工作,互为主从。且不需要本地配置链路聚合

  • 网卡绑定配置步骤:

    • 1 远程控制服务 SSH是一种能够通过安全方式提供远程登录的协议,也是远程管理linux的主流方式
  • sshd是基于ssh协议开发的一款远程管理服务程序,可提供两种安全验证的方法

    • 基于口令的验证---用账户和密码来验证登录

    • 基于密钥的严重- --在本地生成密钥对将公钥上传给要登录的服务器,然后通过私钥认证进行授权登录

  • 远程传输命令scp 不间断会话服务 screen是一款开源的多窗口远程控制程序,主要为了解决解决网络异常终端活动时控制多个远程端口的程序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容