iptables基本知識

1)Linux下的防火墻概念

a、一般談到Linux下的防火墻,我們都會首先想到iptables,其實更確切的叫法應該是Netfilter/iptables,iptables和Netfilter其實是存在差別的。

b、盡管它們經常被用來相互替換使用,Netfilter是用來實現Linux內核中防火墻的Linux內核空間程序代碼段,它要么被直接編譯進內核,要么被包含在模塊中。

c、而iptables是用來管理Netfilter防火墻的用戶程序,而我這里提到的iptables是包含Netfiler和iptables。

d、Netfilter/iptables是基于包過濾的防火墻,主要是針對2-4層,另外,iptables也支持7層控制。

2)iptables的組成部分:

iptables有四個表和五個鏈以及一些規則組成:

四個表:filter、nat、mangle、raw

filter表(過濾規則表),nat表(地址轉換規則表),mangle(修改數據標記位規則表),raw(跟蹤數據表規則表)

其中最常用的是filter表以及nat表

五個鏈:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

iptables的命令語法:

iptables [-t 表名]<-A|-I|-D|-R>鏈名[規則編號][-i|-o 網卡名稱][-p 協議類型][-s 源IP地址|源子網][–sport 源端口號][-d 目標IP地址|目標子網][–dport 目標端口號]<-j 動作>

3)參數及動作信息

-A 追加防火墻規則

-D 刪除防火墻規則

-I 插入防火墻規則

-F 清空防火墻規則

-L 列出防火墻規則

-R 替換防火墻規則

-Z 清空防火墻數據表統計信息

-P 設置鏈默認規則

匹配參數:

-p                  匹配協議

-s                 匹配源地址

-d                 匹配目標地址

-i                  匹配入站網卡接口

-o                 匹配出站網卡接口

–sport               匹配源端口

–dport               匹配目標端口

–src-range             匹配源地址范圍

–dst-range            匹配目標地址范圍

–limit              匹配數據表速率

–mac-source            匹配源MAC地址

–state              匹配狀態(INVALID、ESTABLISHED、NEW、RELATED)

–string              匹配應用層字串

觸發動作:

ACCEPT 允許數據包通過

DROP 丟棄數據包

REJECT 拒絕數據包通過,并發回封包通知對方

LOG 將數據包信息記錄syslog日志

DNAT 目標地址轉換

SNAT 源地址轉換(適用于靜態IP)

MASQUERADE 地址欺騙(只能用于ADSL撥號上網的IP偽裝,也就是主機的IP是由ISP分配動態的)

REDIRECT 重定向,將數據包重定向到本機或另外主機的某一個端口,通常能實現透明代理或者對外開放內網的某些服務

4)常用的命令

a、查看filter表的所有規則:

[root@localhost ~]# iptables -n -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

b、清空filter表的所有規則:

[root@localhost ~]# iptables -F

c、查看nat表的所有規則:

[root@localhost ~]# iptables -t nat -n -L

# 記錄10.10.10.1訪問主機80端口的日志信息(/var/log/messages)

[root@localhost ~]# iptables -I INPUT -s 10.10.10.1 -p tcp --dport 80 -j LOG
[root@localhost ~]# tail -10 /var/log/messages
Jul 13 14:44:53 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10253 DF PROTO=TCP SPT=62700 DPT=80 WINDOW=253 RES=0x00 ACK FIN URGP=0 
Jul 13 14:44:55 localhost chronyd[829]: Selected source 202.118.1.130
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10256 DF PROTO=TCP SPT=62701 DPT=80 WINDOW=256 RES=0x00 ACK FIN URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10257 DF PROTO=TCP SPT=62702 DPT=80 WINDOW=256 RES=0x00 ACK FIN URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10258 DF PROTO=TCP SPT=62703 DPT=80 WINDOW=256 RES=0x00 ACK FIN URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10259 DF PROTO=TCP SPT=62704 DPT=80 WINDOW=256 RES=0x00 ACK FIN URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10260 DF PROTO=TCP SPT=62701 DPT=80 WINDOW=256 RES=0x00 ACK URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10261 DF PROTO=TCP SPT=62702 DPT=80 WINDOW=256 RES=0x00 ACK URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10262 DF PROTO=TCP SPT=62703 DPT=80 WINDOW=256 RES=0x00 ACK URGP=0 
Jul 13 14:44:59 localhost kernel: IN=eno16777736 OUT= MAC=00:0c:29:c5:a0:8d:00:50:56:c0:00:08:08:00 SRC=10.10.10.1 DST=10.10.10.133 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=10263 DF PROTO=TCP SPT=62704 DPT=80 WINDOW=256 RES=0x00 ACK URGP=0

# 將來自10.10.10.0/24網段的主機并訪問80端口的請求給予拒絕

[root@localhost ~]# iptables -I INPUT -s 10.10.10.0/24 -p tcp --dport 80 -j DROP
[root@localhost ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:80
LOG        tcp  --  10.10.10.1           0.0.0.0/0            tcp dpt:80 LOG flags 0 level 4
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

  

# 禁止10.10.10.0/24網段內的主機ping。ICMP類型為8

[root@localhost ~]# iptables -A INPUT -s 10.10.10.0/24 -p icmp --icmp-type 8 -j DROP
說明:禁止10.10.10.0/24網段內的主機ping

# 查看filter表中防火墻規則并顯示規則編號:

[root@localhost ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:80
2    LOG        tcp  --  10.10.10.1           0.0.0.0/0            tcp dpt:80 LOG flags 0 level 4
3    DROP       icmp --  10.10.10.0/24        0.0.0.0/0            icmptype 8
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

# -D參數,刪除INPUT鏈的第三條規則:  

[root@localhost ~]# iptables -D INPUT 3
[root@localhost ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:80
2    LOG        tcp  --  10.10.10.1           0.0.0.0/0            tcp dpt:80 LOG flags 0 level 4
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

# -R參數,替換第二條規則       

[root@localhost ~]# iptables -R INPUT 2 ! -s 10.10.10.1 -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -nL --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:80
2    ACCEPT     tcp  -- !10.10.10.1           0.0.0.0/0            tcp dpt:80
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

# 查看iptables的版本號:

[root@localhost ~]# iptables -V
iptables v1.4.21
[root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

# CentOS7下iptables的安裝:

CentOS 7 默認使用firewalld來管理iptables規則,由于防火墻規則變動的情況很少,動不動態變得無所謂了。但是總是感覺不太習慣。
使用下面的辦法來恢復原來的習慣,同時解決iptables開機啟動的問題。
# yum install iptables-services -y
# systemctl enable iptables
這樣的話,iptables服務會開機啟動,自動從/etc/sysconfig/iptables 文件導入規則。
為了讓/etc/init.d/iptables save 這條命令生效,需要這么做
# cp /usr/libexec/iptables/iptables.init /etc/init.d/iptables
# /etc/init.d/iptables save
而chkconfig iptables 命令會自動重定向到sytemctl enable iptables

# 定義iptables默認策略

默認策略的定義格式為:

iptables [-t 表名] <-P> <鏈名> <動作>

查看iptables的狀態

[root@ip-172-31-22-8 ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         
[root@localhost ~]# iptables -I INPUT -s 10.10.10.0/24 -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 10.10.10.0/24 -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  10.10.10.0/24        0.0.0.0/0            tcp dpt:80
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

  

5)iptables的狀態state

下面解釋iptables的幾種狀態:

NEW:如果你的主機向遠程主機發出一個請求連接,這個數據包的狀態就是NEW

ESTABLISHED:已建立的連接(完成TCP的三次握手后),遠程主機和你的主機通信數據狀態為ESTABLISHED

RELATED:正在啟動新連接,比如FTP服務傳輸,21端口負責傳送命令,20端口負責傳輸數據,在已有的21端口建立好連接后發生命令,這時候20端口或其他端口傳送FTP-DATA,狀態就是RELEATED

INVALID:非法或無法識別的數據包,不能被識別屬于哪個連接或者沒有任何狀態,通常這種狀態包會被丟棄

iptables腳本的基本模板:

#!/bin/bash
#created by molewan 2016/07/16
#email:molewan@163.com
iptables -F
iptables -F -t nat
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -A INPUT -m state --state NEW -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

6)生產環境中我們如何維護我們的iptables

系統運維人員在維護iptables的時候,經常會發現誤操作了iptables導致無法進入了系統,這個時候只有去機房重啟iptables,其實這個也是有辦法解決的,可以通過配置

計劃任務的方式來處理:

[root@ip-172-31-22-8 ~]# crontab -l
*/5 * * * * /etc/init.d/iptables stop

7)iptables防火墻應用案例:

案例1:允許任意客戶端訪問主機的日常服務(HTTP、HTTPS、DNS、NTP、SMTP、POPS3、SSH)

[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p udp --dport 25 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -P tcp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 143 -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -P OUTPUT ACCEPT
[root@localhost ~]# iptables -P FORWARD DROP
[root@localhost ~]# iptables -n -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:110
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:143
Chain FORWARD (policy DROP)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@localhost ~]# cat /etc/services #可以在此文件中查看服務的名稱

案例2:公司擁有一個公有IP,使用防火墻實現局域網中所有主機通過SNAT共享上網。

原理:使用CentOS7作為公司軟路由,將內網192.168.0.0/24的數據包源地址修改為路由器上的公有IP 124.126.199.84

,使用SNAT規則,以及NAT表的POSTROUTING鏈

先開啟系統上的路由轉發:

# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
# iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 124.126.199.84

案例3:公司對外有一個公網IP,公司內部有HTTP、MAIL兩臺核心服務器,通過防火墻實現客戶可以從互聯網的任意位置訪問公司內部的兩臺服務器資源

拓撲;
Internet <--124.126.199.84(防火墻)-->192.168.0.0/24
http:192.168.0.100
postfix:192.168.0.101
處理過程:
開啟路由轉發:
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
針對80端口的
# iptables -t nat -I PREROUTING -d 124.126.199.84 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.100
針對25端口和110端口
# iptables -t nat -I PREROUTING -d 124.126.199.84 -p tcp --dport 25 -j DNAT --to-destination 192.168.0.101
# iptables -t nat -I PREROUTING -d 124.126.199.84 -p tcp --dport 110 -j DNAT --to-destination 192.168.0.101

案例4:目前網絡的攻擊手法層出不窮,很多攻擊會采用發生大量無效的數據包給服務器,造成服務器無法響應正常的請求包,iptables

提供了一個limit擴展功能,可以限制單位時間內數據包的個數。下面的規則是當每秒鐘數據包個數為500接受入站連接,負責拒絕連接。

[root@localhost ~]# iptables -I INPUT -m limit --limit 500/sec -j ACCEPT
[root@localhost ~]# iptables -P INPUT DROP
[root@localhost ~]# iptables -n -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            limit: avg 500/sec burst 5
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:25
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:53
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:110
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:143
Chain FORWARD (policy DROP)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source

案例5:根據數據連接狀態設置防火墻規則,放行所有出站數據包,拒絕入站的新連接請求和無效連接,放行入站的回應請求

[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -X
[root@localhost ~]# iptables -Z
[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
[root@localhost ~]# iptables -I INPUT -m state --state NEW -j DROP
[root@localhost ~]# iptables -P OUTPUT ACCEPT
[root@localhost ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0            state NEW
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target     prot opt source               destination         
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

案例6:公司采用基于Linux的軟路由設備,要求在路由設備上設置防火墻規格,記錄10.0.0.1至10.0.0.128地址段內所有的主機發送給路由要求轉發的數據包,并允許轉發這些數據包

[root@localhost ~]# iptables -A FORWARD -m iprange --src-range 10.0.0.1-10.10.0.11 -p tcp --dport 80 -j LOG
[root@localhost ~]# iptables -A FORWARD -m iprange --src-range 10.0.0.1-10.10.0.11 -p tcp --dport 80 -j ACCEPT[root@localhost ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  0.0.0.0/0            0.0.0.0/0            state NEW
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target     prot opt source               destination         
LOG        tcp  --  0.0.0.0/0            0.0.0.0/0            source IP range 10.0.0.1-10.10.0.11 tcp dpt:80 LOG flags 0 level 4
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            source IP range 10.0.0.1-10.10.0.11 tcp dpt:80
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

一次性允許多端口通過:

[root@localhost ~]# iptables -I INPUT -s 10.10.10.0/24 -p tcp -m multiport --dport 21,22,23,80 -j ACCEPT
[root@localhost ~]# iptables -n -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  10.10.10.0/24        0.0.0.0/0            multiport dports 21,22,23,80
DROP       all  --  0.0.0.0/0            0.0.0.0/0            state NEW
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
Chain FORWARD (policy DROP)
target     prot opt source               destination         
LOG        tcp  --  0.0.0.0/0            0.0.0.0/0            source IP range 10.0.0.1-10.10.0.11 tcp dpt:80 LOG flags 0 level 4
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            source IP range 10.0.0.1-10.10.0.11 tcp dpt:80
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

原創文章,作者:Net21-冰凍vs西瓜,如若轉載,請注明出處:http://www.www58058.com/24293

(0)
Net21-冰凍vs西瓜Net21-冰凍vs西瓜
上一篇 2016-07-16 22:29
下一篇 2016-07-16 22:29

相關推薦

  • ip ss route nmcli netstart 命令匯總

    route命令 路由管理命令 查看:route -n [root@localhost ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.101.0 0.0.0.0 255.255.255.0 U 1 0 0 e…

    Linux干貨 2017-05-07
  • Linux手動編譯源代碼文件

    一、簡介     Linux系統上程序包安裝的方式多種多樣,一般來說可通過rpm包安裝、yum在線安裝等方式實現。但有時候為了實現某種功能,而這種功能在通常情況下又不是太常用或是因為其他原因,不能通過yum下載安裝或在網上沒有找到rpm包,只是找到了程序安裝包的源代碼的話,這種情況下我們就可以對源代碼直接進行編譯安裝,以便解決這種臨時需求…

    Linux干貨 2015-09-26
  • 馬哥教育網絡19期+第十二周課程練習

    1、請描述一次完整的http請求處理過程; a.向根域名服務器請求解析域名,然后根服務器返回相應的IP信息; b.用戶的Web瀏覽器向服務器端的80端口通過三次握手建立TCP連接; c.建立完TCP連接后發送HTTP請求,請求的格式包括請求方法、URL和協議版本號,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如: &n…

    Linux干貨 2016-08-22
  • Linux之旅1

    Linux之旅1  一、描述計算機的組成及其功能 計算機的組成: 1、計算機主要由:CPU(控制器、運算器)、存儲器、輸入設備、和輸出設備(輸入設備、和輸出設備又稱為I/O設備)四部分組成; 計算機個組成部分的功能: CPU:主要有控制器和運算器組成; 控制器:控制器是整個計算機的中樞神經;其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,…

    2016-09-12
  • Linux基礎知識(一)-linux哲學思想,基礎命令,FHS

    1.描述計算機的組成及其功能 2.按系列羅列Linux 的發行版,并描述不通發行版之間的聯系和區別. 3.描述Linux的哲學思想,并按照自己的理解對其進行解釋 4.說明Linux系統命令的使用格式,詳細介紹ifconfig,echo,tty,startx,export.pwd,history,shutdown,poweroff,reboot,hwclock…

    Linux干貨 2016-09-22
  • 從shell眼中看世界–展開和引用

    這篇博客的目的在于加深對于展開和引用的理解,闡釋展開和引用之間聯系。 ‘ ‘ :強引用,其中的變量引用不會被替換為變量值,而保持原字符串       ” “:弱引用,其中的變量引用會被替換為變量值    如果之前對于’ …

    Linux干貨 2017-04-16
欧美性久久久久