第二十六天 iptables 初识

  Iptables是位于用户空间,是linux系统上的防火墙管理配置规则的工具,主要用于添加、删除、管理netfilter的规则,

  Netfilter是位于内核中真正的防火墙,由5个钩子组成,也叫五个规则链。 Netfilter的作用:起到过滤封包,转换与映射IP地址和端口,拆分和修改封包内容,追踪封包等功能


Iptables的四表五链

功能:(四表)
filter: 过滤,防火墙;
nat: network address translation, 网络地址转换;
mangle:拆解报文,做出修改,封装报文;
raw:关闭nat表上启用的连接追踪机制;
 
功能的优先级次序:raw<---mangle<---nat<----filter
链(内置)(五链):
PREROUTING:在路由之前
INPUT:到本机
FORWARD:由本机转发
OUTPUT:由本机发出
POSTROUTING:路由之后
 
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
转发:PREROUTING --> FORWARD --> POSTROUTING

各功能(四表)的实现:

filter:在INPUT,FORWAD,OUTPUT
nat:PREROUTING(DNAT),OUTPUT,POSROUTING
mangle:PERROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
raw:PREROUTING,OUTPUT

iptables四表五链添加规则的注意项

添加规则时的考量点:
要实现哪种功能,判断添加在哪张表上
报文流经的路径,判断添加在哪个链上
  
链:链上规则次序,即为检查的次序,因此隐含一定的法则:
同类规则,匹配范围小的放上面;
不同类规则,匹配需求频率大的放在上面,匹配需求小的放下面
将那些可由一条规则描述的多个规则合并为一个;
默认规则(策略):

规则的组成部分:

组成部分:报文的匹配条件,匹配到之后处理动作
    匹配条件:根据协议报文特征指定:基本匹配条件、扩展匹配条件
    处理动作:内建处理机制、自定义处理机制
 
注意:报文不会经过自定义链,只能在内置链上通过规则进行引用后生效;

iptables命令:

格式:
iptables [-t table] {-A|-D} chain_name rule-specification 添加或删除指定链上的规则,添加时默认为添加到链尾
iptables [-t table] -I chain_name [rulenum] rule-specification 插入规则到指定链上,默认插入到链首
iptables [-t table] -R chain_name rulenum rule-specification 修改指定链上的规则
iptables [-t table] -D chain_name rulenum 删除指定链上的规则
iptables [-t table] -S [chain_name [rulenum]] 
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] -L显示规则、-Z清零规则上的统计数、-F清空指定表的规则
iptables [-t table] -N chain_name 添加指定表上的自定义链
iptables [-t table] -X [chain_name] 删除自定义链
iptables [-t table] -P chain_name target 指定链的默认规则
iptables [-t table] -E old-chain-name new-chain-name
rule-specification = [matches...] [target]
match = -m matchname [per-match-options]
target = -j targetname [per-target-options]

匹配条件:

基本匹配:
-s\--src\--source IP|Netaddr :匹配源地址
!-s\--src\--source IP|Netaddr :匹配此源地址之外的其他源地址
-d\--dst\--destionation IP|Netaddr:匹配目标地址
!-d\--dst\--destionation IP|Netaddr:匹配此目标地址之外的其他目标地址
-p\--protocol {tcp|udp|icmp}:检查报文中的协议,即IP首部中的protocol所标识的协议
-i\--in-interface interface_name :数据报文的流入接口,仅能用于PREROUTING\INPUT\FORWARD链上
-o\--out-interface interface_name:数据报文的流出接口,仅能用于FORWARD\OUTPUT\POSTROUTING链上

扩展匹配

隐形扩展匹配:使用-p 指定的协议进行扩展,可省略-m选项

-p tcp|udp
注意:UDP只有--dport与--sport
--dport PORT[-PORT]:目标端口,可以是单个端口或连续多个端口
--sport PORT[-PORT]:源端口,可以是单个或连续多个端口
tcp-flags(TCP的标识位)LIST1 LIST2 检查LIST1所指明的所有标记位,且这其中,LIST2所表示出的所有标记位必须为1,而余下的必须为0;没有在LIST1中指明的,不作检查{SYN,ACK,FIN,RST,PSH,URG共6种标记位}
--tcp-flag SYN,ACK,FIN,RST SYN 匹配TCP三次握手中的SYN,ACK,FIN,RST标记位,其中SYN必须为1,其他为0.即匹配三次握手的第一次握手
--syn:检查是否为新建TCP连接的第一次请求
-p igmp
--igmp-type:(可用数字代表其类型)常见的0和8
0:echo-reply回送应答
8:echo-request请求答应


匹配条件的显示扩展

  显式扩展 :必须使用-m选项指定使用扩展,可扩展模块可通过rpm ql iptables | grep "\.so$" 查看

-m的选项(常见)
multiport扩展(多端口匹配)
以离散方式定义多端口,最多可定义15个端口 
[!] --source-ports,--sports port[,port|,port:port]...  若加[!],则是非的意思  源端口
[!] --destination-ports,--dports port[,port|,port:port]... 目标端口
[!] --destination-ports,--dports port[,port|,port:port]...
放开22、80、8080端口
iptables -I INPUT -s 192.168.0.0/24 -d 192.168.1.11 -p tcp -m multiport --dports 22,80,8080 -j ACCEPT
iptables -I OUTPUT -s 192.168.1.11 -d 192.168.0.0/24 -p tcp -m multiport --sports 22,80,8080 -j ACCEPT
 
 iprange扩展(IP范围)
指明连续的IP范围时使用(但一般是不能扩展为整个网络)
[!] --src-range from[-to] 源IP地址范围
[!] --dst-range from[-to] 目标IP地址范围
放开192.168.1.1-200访问22,80,8080端口
iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dport 80,22,8080 -m iprange --src 192.168.1.1-192.168.1.200 -j ACCEPT
iptables -I OUPUT -s 192.168.1.11 -p tcp -m multiport --sport 80,22,8080 -m iprange --dst 192.168.1.1-192.168.1.200 -j ACCEPT 
 
 string扩展(字符串扩展)
检查报文中出现的字符串
 --algo {bm|kmp} 指定匹配字符串的算法 
[!] --string pattern 基于匹配模式进行检查
[!] --hex-string pattern 基于十六进制检查
iptables -I OUTPUT -m string -algo bm --string 'mover' -j REJECT \\拒绝访问‘mover’字符串的内容 
 
time扩展(基于时间做检查)
--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 起始日期
--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]] 结束日期
--timestart hh:mm[:ss] 起始时间,以每天为计
--timestop hh:mm[:ss]  结束时间,以每天为计
[!] --monthdays day[,day...] 每月的周期,
[!] --weekdays day[,day...] 每周的周期
iptables -I INPUT -d 192.168.1.11 -p tcp --dport 80 -m time --timestart 8:00 --timstop 17:00 -j REJECT \\拒绝8点到17点之间访问80端口
connlimit扩展(连接限制)
根据每个客户IP做并发连接数匹配
--connlimit-above n:连接的数量大于n 
--connlimit-upto n:连接的数量小于等于n
 iptables -I INPUT -D TCP --dport 22 -m connlimit --connlimit-above 3 -j REJECT;\\设置22端口的并发连接数量不能大于3个,大于的拒绝
 
limit扩展
基于收发报文包的速率做检查
令牌桶过滤器
--limit-burst number 一开始只是最多允许的报文数量
--limit rate[/second|/minute|/hour|/day] 当达到--limit-bust 指定的数量后,设置的速率,有秒、分钟、小时、天
iptables -A INPUT -d 192.168.1.11 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 30/minute -j ACCEPT \\设置开始时最多5个ping,然后每分钟30个
iptables -A INPUT -s 192.168.1.11 -p icmp --icmp-type 0 -j ACCEPT 
 
  
state扩展(状态扩展)
根据连接追踪机制,检查连接间的关系,记录的时长为半小时
调整连接追踪功能所能够容纳的最大连接数量:
    /proc/sys/net/nf_conntrack_max
已经追踪到并记录下的连接:
    /proc/net/nf_conntrack
不同协议或连接类型追的时长:
    /proc/sys/net/netfilter/
可追踪的连接状态:
NEW:新发出的请求;连接追踪模板中不存此连接相关的信息条目,因此,将其识别为第一次发出的请求;
ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信的状态;
RELATED:相关的连接;如ftp协议的命令连接与数据连接之间的关系;
INVALIED:无法识别的连接;
 
--state STATE1,STATE2,...
对22、80端口进行连接追踪
iptables -I INPUT -d 192.168.1.11 -p tcp -m multiport --dport 22,80 state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -s 192.168.1.11 -p tcp -m multiport --sport 22,80 state --state ESTABLEISHED -j ACCEPT
 
iptables -I OUTPUT -m state --state ESTABLEISHED -j ACCEPT \\对IN方向允许进来的所有连接追踪,都在out方向放开

处理动作:

-j TARGET:jump,跳转到指定的TARGET,TARGET如下:
ACCEPT:接受
DROP:丢弃
REJECT:拒绝
RETURN:返回调用链
REDIRECT:端口重定向
LOG:记录日志
MARK:做防火墙标记
DNAT:目标地址转换
SNAT:源地址转换
MASQUERADE:地址伪装

练习依照以下图片

blob.png

说明:
SER1配置默认路由指向192.168.90.128
练习内容:
1、通过iptables拒绝SER1访问SER2的ssh\web,
2、SER3配置192.168.90.0路,让SER1连通SER3
3、在SER2上启用NAT,SER3不配置192.168.90.0路由,让SER1连通SER3
4、把SER2的192.168.10.128的22端口映射给SER1 192.168.90.129的22端口

SER1的配置

[root@SER1 ~]# ifconfig
eth2      Link encap:Ethernet  HWaddr 00:0C:29:1D:8D:A8  
          inet addr:192.168.90.129  Bcast:192.168.90.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe1d:8da8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:86 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:9529 (9.3 KiB)  TX bytes:10126 (9.8 KiB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:108 errors:0 dropped:0 overruns:0 frame:0
          TX packets:108 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:7256 (7.0 KiB)  TX bytes:7256 (7.0 KiB)
 
[root@SER1 ~]# route add default gw 192.168.90.128
[root@SER1 ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.90.0    *               255.255.255.0   U     1      0        0 eth2
 
default         192.168.90.128  0.0.0.0         UG    0      0        0 eth2

SER2的配置

[root@SER2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:76:31:7B  
          inet addr:192.168.10.128  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe76:317b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:613 errors:0 dropped:0 overruns:0 frame:0
          TX packets:157 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:57414 (56.0 KiB)  TX bytes:13174 (12.8 KiB)
 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:76:31:85  
          inet addr:192.168.90.128  Bcast:192.168.90.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe76:3185/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:672 errors:0 dropped:0 overruns:0 frame:0
          TX packets:149 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:62895 (61.4 KiB)  TX bytes:15431 (15.0 KiB)

测试SER1与SER2的连通性,以下测试的结果说明SER1与SER2的连通性没有问题

[root@SER1 ~]# ping 192.168.90.128
PING 192.168.90.128 (192.168.90.128) 56(84) bytes of data.
64 bytes from 192.168.90.128: icmp_seq=1 ttl=64 time=0.691 ms
64 bytes from 192.168.90.128: icmp_seq=2 ttl=64 time=1.15 ms
^C
--- 192.168.90.128 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1262ms
rtt min/avg/max/mdev = 0.691/0.924/1.158/0.235 ms
[root@SER1 ~]# curl 192.168.90.128
test
[root@SER1 ~]# 
[root@SER1 ~]# ssh 192.168.90.128
root@192.168.90.128's password: 
Last login: Sat Jul  2 02:24:28 2016 from 192.168.90.129
[root@SER2 ~]# 
[root@SER2 html]# iptables -L   \\SER2的iptables表
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 html]#


一、通过iptables拒绝SER1访问SER2ssh\web

1、把SER2的filter表的规则清空

[root@SER2 ~]# iptables -F
[root@SER2 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 ~]#

2、拒绝SER1 ping SER2 和SER1 访问SER2 的SSH

[root@SER2 ~]# iptables -A INPUT -s 192.168.90.129 -p tcp --dport 80 -j DROP
[root@SER2 ~]# iptables -A INPUT -s 192.168.90.129 -p tcp --dport 22 -j DROP
[root@SER2 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  192.168.90.129       anywhere            tcp dpt:http 
DROP       tcp  --  192.168.90.129       anywhere            tcp dpt:ssh 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 ~]# 
[root@SER1 ~]# curl 192.168.90.128
curl: (7) couldn't connect to host
[root@SER1 ~]# ssh 192.168.90.128
ssh: connect to host 192.168.90.128 port 22: Connection timed out
[root@SER1 ~]#

3、拒绝SER1访问SER2的192.168.90.128的80端口及ping,但可以访问SER2的192.168.10.128的80端口与ping 

先清空SER2的现在的filter的规则表
[root@SER2 ~]# iptables -F
[root@SER2 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 ~]#

把 filter表的INPUT和OUTPUT默认策略修改为DROP

blob.png

修改INPUT及OUPUT的规则

blob.png

[root@SER1 ~]# curl 192.168.90.128
curl: (7) couldn't connect to host
[root@SER1 ~]# curl 192.168.10.128
test
[root@SER1 ~]# ping 192.168.90.128
PING 192.168.90.128 (192.168.90.128) 56(84) bytes of data.
^C
--- 192.168.90.128 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 6907ms
 
[root@SER1 ~]# ping 192.168.10.128
PING 192.168.10.128 (192.168.10.128) 56(84) bytes of data.
64 bytes from 192.168.10.128: icmp_seq=1 ttl=64 time=1.48 ms
64 bytes from 192.168.10.128: icmp_seq=2 ttl=64 time=0.438 ms
^C
--- 192.168.10.128 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1495ms
rtt min/avg/max/mdev = 0.438/0.961/1.485/0.524 ms
[root@SER1 ~]#

二、SER3配置192.168.90.0路,让SER1连通SER3

1、打开SER2的核心转发功能

临时开启:把 /proc/sys/net/ipv4/ip_forward 修改为 1
永久开启,需要修改:/etc/sysct.conf ---> net.ipv4.ip_forward = 1
[root@SER2 ~]# cat /proc/sys/net/ipv4/ip_forward 
0
[root@SER2 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 
[root@SER2 ~]# cat /proc/sys/net/ipv4/ip_forward 
1
[root@SER2 ~]#

2、在SER3上添加192.168.90.0的路由,指向192.168.10.128

[root@SER3 ~]# route add -net 192.168.90.0/24 gw 192.168.10.128
[root@SER3 ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     1      0        0 eth2
192.168.90.0    192.168.10.128  255.255.255.0   UG    0      0        0 eth2
default         192.168.10.2    0.0.0.0         UG    0      0        0 eth2
[root@SER3 ~]#

3、在SER1上测试与SER3的连通性

[root@SER1 ~]# ping 192.168.10.130
PING 192.168.10.130 (192.168.10.130) 56(84) bytes of data.
64 bytes from 192.168.10.130: icmp_seq=1 ttl=63 time=3.59 ms
64 bytes from 192.168.10.130: icmp_seq=2 ttl=63 time=0.877 ms
^C
--- 192.168.10.130 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5467ms
rtt min/avg/max/mdev = 0.685/1.675/3.592/1.034 ms
[root@SER1 ~]#

三、在SER2上启用NAT,SER3不配置192.168.90.0路由,让SER1连通SER3

1、SER3删除192.168.90.0的路由

[root@SER3 ~]# route del -net 192.168.90.0/24
[root@SER3 ~]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     1      0        0 eth2
default         192.168.10.2    0.0.0.0         UG    0      0        0 eth2
[root@SER3 ~]#

修改SER2之前SER1的连通性是不通的

[root@SER1 ~]# ping 192.168.10.130
PING 192.168.10.130 (192.168.10.130) 56(84) bytes of data.
^C
--- 192.168.10.130 ping statistics ---
25 packets transmitted, 0 received, 100% packet loss, time 24014ms

修改SER2的NAT

[root@SER2 ~]# iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -d 192.168.10.0/24 -j SNAT --to-source 192.168.10.128
[root@SER2 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.90.0/24      192.168.10.0/24     to:192.168.10.128 
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 ~]#

再测试SER1与SER3的连通性

[root@SER1 ~]# ping 192.168.10.130
PING 192.168.10.130 (192.168.10.130) 56(84) bytes of data.
64 bytes from 192.168.10.130: icmp_seq=1 ttl=63 time=2.25 ms
64 bytes from 192.168.10.130: icmp_seq=2 ttl=63 time=0.947 ms
^C
--- 192.168.10.130 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1479ms
rtt min/avg/max/mdev = 0.947/1.600/2.254/0.654 ms
[root@SER1 ~]# curl 192.168.10.130
1234567890
[root@SER1 ~]#

三、把SER2的192.168.10.128的22端口映射给SER1 192.168.90.129的22端口

1、修改SER2的22端口映射到192.168.90.129

[root@SER2 ~]# iptables -t nat -A PREROUTING -d 192.168.10.128 -p tcp --dport 22 -j DNAT --to-destination 192.168.90.12
9[root@SER2 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             192.168.10.128      tcp dpt:ssh to:192.168.90.129 
 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@SER2 ~]#

2、在SER3上使用SSH登陆到SER1

[root@SER3 html]# route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.10.0    *               255.255.255.0   U     1      0        0 eth2
default         192.168.10.2    0.0.0.0         UG    0      0        0 eth2
[root@SER3 html]# ssh 192.168.10.128
The authenticity of host '192.168.10.128 (192.168.10.128)' can't be established.
RSA key fingerprint is cc:d2:aa:95:51:57:67:df:df:0a:3c:02:bb:0b:a2:bf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.128' (RSA) to the list of known hosts.
root@192.168.10.128's password: 
Last login: Sat Jul  2 02:20:32 2016 from 192.168.90.1

3、在SER1上查看SER3登陆的情况

[root@SER1 ~]# who
root     tty1         2016-07-02 02:20
root     pts/0        2016-07-02 02:20 (192.168.90.1)
root     pts/1        2016-07-02 04:07 (192.168.10.130)  \\SER3已成功登陆
[root@SER1 ~]#

原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/21420

(0)
Net20-deamonNet20-deamon
上一篇 2016-07-02
下一篇 2016-07-02

相关推荐

  • linux文件目录详解

    linux目录结构   (且看且不看) 历史上 /usr和 /etc文件夹下既保存静态文件,也保存可变文件,后来有了/var层次结构,/usr下面的可变文件被转移到/var下面。因而/usr现在可以只读的方式挂载(如果它在单独的文件系统上)。 /etc下的可变文件早已转移到/var,因为技术上允许/ 根是系统内核启动后挂载的第一个分区,挂载到根上的…

    Linux干货 2017-05-31
  • bash的基础特性[更新中]

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │   └── grub
    ├── dev
    ├── etc
    │   ├── rc.d
    │   │   └── init.d
    │   └── sysconfig
    │   └── network-scripts
    ├── lib
    │   └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │   └── local
    │   ├── bin
    │   └── sbin
    └── var
    ├── lock
    ├── log
    └── run
    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-17
  • shell脚本一键安装二进制Apache

    安装背景:用的一台最小化安装的centos6。 编译安装安装的必备安装gcc,gcc-c++ 安装包arp,arp-util以及pcre的压缩包已经传到七牛,没有通过官网下载。太慢。 apache是通过官网下载的,所以下载比较慢,需要的话更改下地址 不足,只按照正常流程写,未做任何异常判断处理 #/bin/bash #一键安装Apache #安装GCC ec…

    Linux干货 2016-07-10
  • 使用cp命令定时复制数据

    cp命令 cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或者目录。 cp [选项] [参数] 常用选项: -r -R 递归拷贝目录及目录里所有的内容 -i 交互式,默认支持 -d 复制的时候,如果目录有链接文件,则只复制链接文件 -p –preserv,复制的时候将文件的属性一起复制 -a = -dpR -v 复制的时候显示详细过程 如何定期执…

    Linux干货 2017-04-03
  • LINUX基础知识

    计算机的组成及其功能。 现代计算机体系将计算机分为控制器、运算器、存储器、输入设备和输出设备5个部分 *控制器:控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,并根据具体要求进行控制、调度程序、数据、地址,协调计 算机各个部分工作,协调计算机各部分工作及内存、IO设备等的访问 *运算器:运算器是对数据进行各种算数运算和逻辑运算也就是对数据…

    Linux干货 2018-02-25