Linux Foundation(笔记)

时间:2023-03-08 19:38:10
/*************************************************************
* Linux Foundation
* 1. 总结一下Linux的基础内容;
* 2. 主要目标是防止以后忘记了,这里有个地方可以快速回忆;
*
* 2015-3-29 晴 深圳 曾剑锋
************************************************************/ \\\\\\\\\\\\\\\\\*目录*////////////////
| 一. 退出终端的三种方法:
| 二. 关机:
| 三. 重启:
| 四. 快速打开文件夹:
| 五. 快速输入:
| 六. 锁屏:
| 七. 配置网络,进行联网:
| 八. shell命令处理顺序:
| 九. 把标准错误合并到标准输出:
| 十. 命令历史:
| 十一. 环境变量:
| 十二. bash配置文件:
| 十三. 什么叫正则表达式?
| 十四. 计算机网络:
| 十五. arp查看网络:
| 十六. nc监听端口,netstat查询端口:
| 十七. 修改系统的DNS服务器:
| 十八. 五个类别的IP地址:
| 十九. TCP连接建立,断开:
| 二十. 路由表:
| 二十一. 数据包转发:
| 二十二. iptables语法
\\\\\\\\\\\\\\\\\\\\/////////////////// 一. 退出终端的三种方法:
. 执行命令 logout
. 执行命令 exit
. 按组合键 Ctrl+D 二. 关机:
. init
. shutdown -h now (root权限) 三. 重启:
. reboot
. init
. shutdown -r now (root权限)
. shutdown -r (root权限,过10分钟重启)
. shutdown -r : (root权限,在20:35重启) 四. 快速打开文件夹:
nautilus . 五. 快速输入:
按组合键Ctrl+L可以弹出窗口,用以输入目标目录的位置 六. 锁屏:
. 组合键Ctrl+Alt+L可用于快速锁屏(推荐)
. 运行系统菜单项 System -> Lock Screen 七. 配置网络,进行联网:
. 打开gnome-terminal
. 切换成root身份
. 关闭NetworkManager 服务,NetworkManager 服务会干扰网络配置,必须把它关闭
. service NetworkManager stop
. chkconfig --level NetworkManager off
. 确认网线已经连接好,以eth0 为例
. ifconfig eth0 up
. mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok <-- 网线已经连好
. mii-tool eth0
eth0: no link <-- 网线没有连好
. 上面找到的网卡可能不止一个,挑其中一个进行配置即可,用vim命令编辑网卡的配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
按照下面的范例进行修改,然后保存,退出.两条虚线和每一行右边的描述文字不属于配置文件的内容.
-------------------------------------------
DEVICE=eth0 <-- 网卡名字
BOOTPROTO=static <-- 使用固定IP
NM_CONTROLLED=no
ONBOOT=yes <-- 自动启动
TYPE=Ethernet
IPADDR=10.1.1.11 <-- IP 地址
NETMASK=255.255.255.0 <-- 子网掩码
GATEWAY=10.1.1.1 <-- 默认网关
DNS1=10.1.1.1 <-- DNS 服务器
------------------------------------------- 八. shell读取命令行输入后,按以下顺序进行处理:
. 把变量赋值和重定向的字符保存起来,留到后面使用
. 执行各种展开操作 (包括命令别名展开,参数/变量展开,等等)
. 设置重定向
. 给变量赋值
. 如果命令名中不包含斜杠,shell会按照这个顺序查找命令,并执行首先找到的命令:
函数 --> 内部命令 --> PATH中的可执行文件
. 如果命令名中包含了斜杠,shell会把命令名当文件路径,然后去执行该文件 九. 把标准错误合并到标准输出:
. ls /home /root > /tmp/good >& <-- good
. 默认值 --- 屏幕
. > /tmp/good --- /tmp/good
. >& --- /tmp/good
. ls /home /root >& > /tmp/good <-- bad
. 默认值 --- 屏幕
. >& --- 屏幕
. > /tmp/good --- /tmp/good 十. 命令历史:
. set -o history <-- 启用命令历史功能
. set +o history <-- 关闭命令历史功能
. history <-- 显示命令的历史 十一. 环境变量:
. 环境变量可以被子进程访问;
. 查看当前的环境变量: env
. set命令可以列出更多信息;
. 定义(设置)一个环境变量,用的是命令export,有两种做法:
. 先定义,后export:
TMOUT=
HISTSIZE=
export TMOUT HISTSIZE
. 一步到位export:
export TMOUT= HISTSIZE=
. 几个环境变量介绍
. PATH <-- 影响命令的搜索
. TMOUT <-- 超时时间
. PS1 <-- 命令提示符
. HISTSIZE, HISTFILESIZE, HISTTIMEFORMAT <-- 命令历史 十二. bash配置文件:
. Bash shell 常用的配置文件有以下几个:
. /etc/profile <-- 全局配置文件,作用于系统上所有的用户
. /etc/bashrc <-- 全局配置文件,作用于系统上所有的用户
. ~/.bash_profile <-- 用户配置文件
. ~/.bashrc <-- 用户配置文件
. ~/.bash_logout <-- 用户配置文件
. 根据shell 的启动方式不同,可以大致地把shell分为以下几种:
. login shell <-- 在文本界面登录,su -, bash --login
. interactive shell <-- gnome-terminal 中的shell
. non-interactive shell <-- 用来运行脚本的shell
. 在红帽企业版6.3上面,/etc/profile, ~/.bash_profile, ~/.bashrc, /etc/bashrc 这四者的调用关系图如下: login shell interactive shell
/ \ |
/ \ |
/ \ |
/ \ |
/ \ v
/etc/profile ~/.bash_profile -----> ~/.bashrc -----> /etc/bashrc . login shell开始运行时会按顺序读取文件/etc/profile和~/.bash_profile
. interactive shell 开始运行时会读取文件 ~/.bashrc
. ~/.bash_profile 会调用~/.bashrc
. ~/.bashrc 会调用 /etc/bashrc
. 另外,login shell 退出时会读取文件 ~/.bash_logout
. 根据以上特点,可以通过修改上面几个配置文件,来修改shell的行为 十三. 什么叫正则表达式?
. 正规表示法: Regular expression
. 单个字符表示法:
字符本身 <-- 除了下面的特殊字符之外,字符可以表示其本身
. <-- Any character
\d <-- Digit in
\D <-- Non-digit
\w <-- Word: letters, digits, underscore (_)
\W <-- Non-word
\t <-- Tab
\r <-- Carriage return
\n <-- New line
\s <-- Whitespace: space, \t, \r, \n
\S <-- Non-whitespace
[abc] <-- a, or b, or c
[a-c] <-- a, or b, or c
[-] <-- , or , or
[-3a-cX-Z] <-- , , , a, b, c, X, Y, Z
[^abc] <-- Any character except a and b and c
[:upper:] <-- Upper case letters, [A-Z]
[:lower:] <-- Lower case letters, [a-z]
[:alpha:] <-- Alphabetic characters, [a-zA-Z]
[:alnum:] <-- Alphanumeric characters, [a-zA-Z0-]
[:digit:] <-- Digits, [-]
[:xdigit:] <-- Hexadecimal digits, [a-fA-F0-]
[:punct:] <-- Punctuation and symbols, [][!"#$%&'()*+,./:;<=>?@\^_`{|}~-]
[:blank:] <-- Space and tab, [ \t]
[:space:] <-- All whitespace characters including line breaks, [ \t\r\n\v\f]
[:cntrl:] <-- Control characters, [\x00-\x1F\x7F]
[:graph:] <-- Visible characters (i.e. anything except spaces, control characters, etc.), [\x21-\x7E]
[:print:] <-- Visible characters and spaces (i.e. anything except control characters, etc.), [\x20-\x7E]
[:word:] <-- Word characters (letters, numbers and underscores), [a-zA-Z0-9_]
[:ascii:] <-- ASCII characters, [\x00-\x7F]
. 特殊字符表示法
^$.*+?|\{}[]() 都有特殊意义的,如果需要表示这些符号,则可以用反斜杠对它们进行转义,比如:
\. 匹配一个点
\\ 匹配一个反斜杠
\^
\$
. 数量表示法, 用来表示前面的一个字符,或者一组字符重复的次数
* <-- 任意次, c >=
+ <-- 至少1次, c >=
? <-- 0次或者1次, c == || c ==
{m} <-- m 次, c == m
{m,} <-- 至少m 次, c >= m
{m,n} <-- m 次至n 次, c >= m && c <= n . 默认情况下,数量表示符只作用于前面的【一个】字符,如果需要
作用于前面的多个字符,可以使用(...)把前面的字符括起来
. ab+ 匹配ab, abb, abbb, abbbb...
. (ab)+ 匹配ab, abab, ababab, abababab... . 默认情况下,数量表示符是最大匹配,好的正则表达式引擎支持用
问号?来启用最小匹配
. .*b 匹配 aaabababa <-- 最大匹配
^^^^^^^^
. .*?b 匹配 aaabababa <-- 最小匹配
^^^^
. 分组表示法
(abc) <-- 一组连续的字符abc
(aa|bb) <-- 一组连续的字符ab 或者 bb
. 边界表示法
^ <-- 字符串的开头
$ <-- 字符串的结尾
\b <-- 单词边界
\B <-- 非单词边界
\< <-- 单词左边界
\> <-- 单词右边界
. 引用表示法,从左边开始数左小括号(openning brace),数字从1开始,
被第一对括号匹配的字符可以用\ 来引用,第二对可以用\ 来引用,以此类推.
. echo abcabcabcaabb | grep -E '(a(bc)){2}\1' --color
abcabcabcaabb
. echo abcabcabcaabb | grep -E '(a(bc)){2}a\2' --color
abcabcabcaabb
. echo "hello world, hello world, hello beautiful world" | grep -E --color '((hello) (world)), \1, \2 .* \3'
hello world, hello world, hello beautiful world
. 时间表示方法
date | grep --color -oE '([0-1][0-9]|2[0-3])(:[0-5][0-9]){2}'
. 日期表示方法
echo -- :: | grep --color -E '[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])'
. IP的表示方法
ifconfig | grep --color -E '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
. MAC 地址的表示方法
ifconfig | grep --color -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' 十四. 计算机网络:
. 当通过网络安装操作系统时,客户机上的临时系统需要从服务器下载文件,背后的流程是怎样的?
此时客户机和服务器同处一个局域网(在同一个网络中),通信模式是主机 <---> 主机
. 交换机:
用来连接同一个网络(局域网,本地网络)的主机
. 当用户从互联网上下载一个文件的时候,背后的流程又是怎样的?
此时客户机和服务器处于不同的网络,情况复杂了一些,通信模式是网络 <---> 网络
. 路由器用来连接不同的网络
. 网页浏览器,网卡驱动程序,硬件设备,协议(书面写的协议,和协议的实现,比如程序)
. 协议的实现(implementation)
. TCP/IP 协议族:
TCP, UDP, IP, ICMP, IGMP, ARP, HTTP, FTP, TFTP, DNS, DHCP
. TCP/IP 的分层结构
. 应用层(Application): http, ftp, tftp, dns, dhcp
. 运输层(transport,传输层): TCP,UDP
在两台主机上的进程之间传输数据
. 网络层(Internet): IP, IGMP, ICMP
在两台主机之间传输数据
. 链接层(Link):
负责在局域网(本地网)内的主机之间传输数据 十五. arp查看网络:
. IP: 10.1.1.1
. MAC: 1C:6F:::F2:
. arp -s 10.1.1.1 1C:6F:::F2:
. arp -n 10.1.1.1
. 快速获取当前局域网里所有主机的MAC地址,假设局域网IP的范围是11至41
for i in {..}
do
ping -c1 -W1 10.1..${i} &>/dev/null &
done 十六. 用命令nc监听本地的30000端口,然后用netstat列出该记录:
. nc -l 10.1.1.1
. netstat -tulpn | grep 十七. 修改系统的DNS服务器:
. 打开 /etc/resolv.conf
vim /etc/resolv.conf
. 把里面所有的记录删除,然后添加以下一行
nameserver 8.8.8.8
. 保存退出 十八. 五个类别的IP地址:
. A类地址首位为0
. B类地址首两位为10
. C类地址首三位为110
. D类地址首四位为1110
. E类地址首五位为11110 十九. TCP连接建立,断开:
. TCP 连接的建立:
TCP 连接的建立需要经历一个被称为“三次握手”的过程:
. TCP 连接的断开:
TCP 连接的断开,一般需要经历四个阶段,某些情况下是三个阶段. 二十. 路由表操作:
. IP层在内存中有一个路由表,当需要发送数据包时,它都要对该表搜索一次
. route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
8.8.8.8 192.168.199.2 255.255.255.255 UGH eth0
192.168.6.0 0.0.0.0 255.255.255.0 U vmnet8
192.168.71.0 0.0.0.0 255.255.255.0 U vmnet1
192.168.199.0 0.0.0.0 255.255.255.0 U eth0
10.1.1.0 0.0.0.0 255.255.255.0 U eth0
169.254.0.0 0.0.0.0 255.255.0.0 U eth0
0.0.0.0 192.168.199.1 0.0.0.0 UG eth0
标记的含义:
U <-- route is up
G <-- use gateway
H <-- target is a host (没有此标记代表这是到某个网络的路由)
. 管理路由表
. route -n <-- 查看
. route add default gw 10.1.1.1 <-- 添加一条默认路由
. route del default gw 10.1.1.1 <-- 删除指定的默认路由
. route add -net 10.1.2.0/ gw 10.1.1.2 <-- 添加到达指定网络的路由
. route del -net 10.1.2.0/ gw 10.1.1.2 <-- 删除达到指定网络的路由
. route add -host 10.1.3.1 gw 10.1.1.3 <-- 添加到达指定主机的路由
. route del -host 10.1.3.1 gw 10.1.1.3 <-- 删除达到指定主机的路由
. route add -net 10.1.2.0/ dev eth0 <-- 添加一条直连路由 二十一. 数据包转发
. 当主机收到来自某个网络接口的数据时,它会按照以下方式进行处理:
. 检查数据中的目的IP是否为本机的IP之一或者广播地址:
. 是,则把数据送到相应的协议模块进行处理
. 否,则进入下一步
. 检查主机是否被设置为路由器:
. 是,则对数据进行转发
. 否,丢弃数据
. 把Linux 系统配置成路由器的步骤
. 编辑文件:/etc/sysctl.conf
net.ipv4.ip_forward = <-- 设置为1,代表启用包转发功能
. 运行命令sysctl -p使上一个的配置生效
. 确认防火墙没有阻挡包的转发
. iptables -F FORWARD
. iptables -P FORWARD ACCEPT
. 把当前的iptables 的设置写入配置文件中:service iptables save,
配置将会保存到/etc/sysconfig/iptables 中 二十二. iptables语法
. 参数列表:
-A append, 在链的尾部添加规则
-D delete, 删除规则
-L list, 列出规则
-S list, 列出规则,规则的形式和命令行一样
-n numeric, 以数值显示
-I insert, 在链的指定位置(默认为最前面)插入规则
-v verbose 显示统计数据,与-L一起用,看到的信息更多
--line-numbers 显示规则的序号
-F flush, 用于清空规则
-t table, 表名(比如nat)
-P policy, 用于设置链的默认策略
-p protocol, 协议名
--dport destination port, 目标端口
--sport source port, 源端口
-d destination, 目标IP 地址
-s source, 源IP 地址或者网络
-i input interface, 网卡,数据包的来源网卡
-o output interface, 网卡,数据包的目标网卡
-j jump, 动作
. 动作的分类:
ACCEPT 允许
DROP 丢弃数据包,不回应源端
REJECT 丢弃数据包,回应源端
SNAT 源地址转换
DNAT 目标地址转换
MASQUERADE IP 伪装,实质上是SNAT,常用于外网IP 不固定的场合,比如PPP拔号
LOG 记录日志
. iptables的表:
. filter (默认的表)
. nat
. iptables 匹配规则的顺序是从上往下逐条匹配,找到匹配的条目后就不再继续往下
匹配了,如果没有找到匹配的条目,就按照默认策略处理.
. 举例:
. 只允许10.1.1. ping,拒绝其他所有IP (注意两条规则的顺序)
iptables -A INPUT -p icmp -s 10.1.1.20/ -j ACCEPT
iptables -A INPUT -p icmp -j DROP
. 把一条规则加到链的最前面
iptables [-t table] -I chain rule-specification
iptables -I INPUT -p tcp --dport -j REJECT
. 把一条规则加到链的指定位置
iptables [-t table] -I chain rulenum rule-specification
iptables -I INPUT -p tcp --dport -j REJECT
. 删除指定的某条规则
iptables [-t table] -D chain rulenum
iptables -I INPUT
. 清空规则
iptables [-t table] -F [chain]
iptables -F OUTPUT
iptables -t nat -F POSTROUTING
. 多端口的写法
iptables -A INPUT -p tcp --dport : -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport ,, -j ACCEPT
. 允许对本机的TCP , , 端口的访问
iptables -A INPUT -p tcp -m multiport --dport ,, -j ACCEPT
. 记录日志
iptables -A OUTPUT -p udp -d 8.8.8.8 --dport -j LOG --log-prefix "[FWLOG] "
. 列出某个链中的所有规则
iptables -L <chain>
iptables -S <chain>
iptables -L INPUT
iptables -S INPUT
iptables -t nat -L POSTROUTING
. 显示规则的序号
iptables -L <chain> --line-number
. 清空某个表中的所有规则
iptables [-t table] -F
. 设置链的默认规则(策略)
iptables [-t table] -P chain target
iptables -P INPUT DROPT
iptables -P OUTPUT ACCEPT
. 禁止访问外部加密网页(https)
iptables -A OUTPUT -p tcp --dport -j REJECT
. 有选择地转发数据包
iptables -A FORWARD -s 10.1.2.0/ -j ACCEPT
iptables -A FORWARD -s 10.1.1.0/ -j REJECT
iptables -D FORWARD -p tcp --dport -j DROP
iptables -I FORWARD -p tcp --dport -j DROP
. 匹配网卡
iptables -t nat -A POSTROUTING -o eth1 -s 10.1.2.0/ -j ACCEPT
iptables -A INPUT -i vmnet1 -j ACCEPT
. 白名单功能
iptables -A OUTPUT -p tcp --dport -j ACCEPT
iptables -A OUTPUT -p udp --dport -j ACCEPT
iptables -A OUTPUT -j REJECT
. 把当前的防火墙规则保存到默认位置 (/etc/sysconfig/iptables)
service iptables save
. 把当前的防火墙规则保存到指定的文件中
iptables-save > /somewhere/in/the/system/firewall
. 可以直接编辑防火墙规则文件
vim /somewhere/in/the/system/firewall
. 从防火墙规则文件中加载规则,这个动作会把现有的规则清空
iptables-restore < /somewhere/in/the/system/firewall
. 重启防火墙服务,可以清空当前的防火墙设置,并从默认位置加载规则 (/etc/sysconfig/iptables)
service iptables restart