前言 引言沒有,只有一張圖。 Linux的網路功能相當強悍,一時之間我們無法瞭解所有的網路命令,在配置伺服器基礎環境時,先瞭解下網路參數設定命令。 ifconfig 查詢、設置網卡和ip等參數 ifup,ifdown 腳本命令,更簡單的方式啟動關閉網路 ip 符合指令,直接修改上述功能 網卡配置文件 ...
前言
引言沒有,只有一張圖。
Linux的網路功能相當強悍,一時之間我們無法瞭解所有的網路命令,在配置伺服器基礎環境時,先瞭解下網路參數設定命令。
- ifconfig 查詢、設置網卡和ip等參數
- ifup,ifdown 腳本命令,更簡單的方式啟動關閉網路
- ip 符合指令,直接修改上述功能
在我們剛裝好linux的時候,需要用xshell進行遠程連接,那就得獲取ip地址,有時候網卡預設是沒啟動的,Linux也就拿不到ip地址,因此我們得手動啟動網卡
#編輯網卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
#修改配置參數
ONBOOT=yes
網卡配置文件詳解
如下
網路配置文件:
/etc/sysconfig/network
網路介面配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 關聯的設備名稱,要與文件名的後半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}: 引導協議;要使用靜態地址,使用static或none;dhcp表示使用DHCP伺服器獲取地址;
IPADDR=: IP地址
NETMASK=:子網掩碼
GATEWAY=:設定預設網關;
ONBOOT=:開機時是否自動激活此網路介面;
HWADDR=: 硬體地址,要與硬體中的地址保持一致;可省;
USERCTL={yes|no}: 是否允許普通用戶控制此介面;
PEERDNS={yes|no}: 是否在BOOTPROTO為dhcp時接受由DHCP伺服器指定的DNS地址;
ifup,ifdown命令
啟動/關閉一塊網卡
ifup eth0
ifdown eth0
---
如果關閉網卡,xshell會怎樣?
ifconfig命令
ifconfig 查看網卡的ip地址
直接輸入ifconfig會列出已經啟動的網卡,也可以輸入ifconfig eth0單獨顯示eth0的信息
各選項解釋是:
eth0 網卡的代號
lo 迴環地址loopback
inet IPv4的Ip地址
netmask 子網掩碼
broadcast 廣播地址
RX/TX 流量發/收情況 tx是發送(transport),rx是接收(receive)
packets 數據包數
errors 數據包錯誤數
dropped 數據包有問題被丟棄的數量
collisions 數據包碰撞情況,數值太多代表網路狀況差
ip命令
ip是一個命令,不是TCP/IP那個ip,這個ip命令是結合了ifconfig和route兩個命令的功能。
ip addr show #查看ip信息
瞭解瞭如何查看網卡信息,接下來查看系統信息。
你的系統是什麼版本?
#查看系統版本信息
cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
#查看內核版本號
uname -r
3.10.0-693.el7.x86_64
#查看系統多少位
uname -m
x86_64
#查看內核所有信息
uname -a
用戶管理
現代操作系統一般屬於多用戶的操作系統,也就是說,同一臺機器可以為多個用戶建立賬戶,一般這些用戶都是為普通用戶,這些普通用戶能同時登錄這台電腦,電腦對這些用戶分配一定的資源。
普通用戶在所分配到的資源內進行各自的操作,相互之間不受影響。但是這些普通用戶的許可權是有限制的,且用戶太多的話,管理就不便,從而引入root用戶。
此用戶是唯一的,且擁有系統的所有許可權。root用戶所在的組稱為root組。“組”是具有相似許可權的多個用戶的集合
root的權利
Linux系統的特性就是可以滿足多個用戶,同時工作,因此Linux系統必須具備很好的安全性。
在安裝RHEL7時設置的root管理員密碼,這個root管理員就是所有UNIX系統中的超級用戶,它擁有最高的系統所有權,能夠管理系統的各項功能,如添加/刪除用戶,啟動/關閉進程,開啟/禁用硬體設備等等。
因此“能力越大,責任越大”,root許可權必須很好的掌握,否則一個錯誤的命令可能會摧毀整個系統。
root為什麼叫root?
在Linux系統中,用戶也有自己的UID身份賬號且唯一
系統管理員UID為0
系統用戶UID為1~999 Linux安裝的服務程式都會創建獨有的用戶負責運行。
普通用戶UID從1000開始:由管理員創建
用戶組GID
為了方便管理屬於同一組的用戶,Linux 系統中還引入了用戶組的概念。通過使用用 戶組號碼(GID,Group IDentification),我們可以把多個用戶加入到同一個組中,從而方 便為組中的用戶統一規劃許可權或指定任務。
假設有一個公司中有多個部門,每個部門中又 有很多員工。如果只想讓員工訪問本部門內的資源,則可以針對部門而非具體的員工來設 置許可權。
例如,可以通過對技術部門設置許可權,使得只有技術部門的員工可以訪問公司的 資料庫信息等。
Linux管理員在創建用戶時,將自動創建一個與其同名的用戶組,這個用戶組只有該用戶一個人
大家都知道windows下有管理員用戶
這樣
或者這樣
Linux/unix是一個多用戶、多任務的操作系統。
root:預設在Unix/linux操作系統中擁有最高的管理許可權。可以理解為qq群的群主⬇️⬇️⬇️
普通用戶:是管理員或者具備管理許可權的用戶所創建的,只能讀、看,不能增、刪、改。
創建普通用戶
#添加用戶
useradd oldboy
#設置密碼
passwd redhat
root用戶可以修改其他所有人的密碼,且不需要驗證
切換用戶
su命令可以切換用戶身份的需求,
su - username
su命令中間的-號很重要,意味著完全切換到新的用戶,即環境變數信息也變更為新用戶的信息
#先看下當前用戶(我是誰)
whoami
#切換用戶
su - oldboy
#退出用戶登錄
logout
ctrl + d
- 一般情況下,在生產環境避免直接用root用戶,除非有特殊系統維護需求,使用完立刻退回普通用戶
- 非互動式設置密碼(echo "redhat"|passwd --stdin oldboy && history -c)
Tip:
1.超級用戶root切換普通用戶無需密碼,例如“群主”想踢誰就踢誰
2.普通用戶切換root,需要輸入密碼
3.普通用戶許可權較小,只能基本查看信息
4.$符號是普通用戶命令提示符,#是超級管理員的提示符
root是當前用戶,oldboyedu是主機名,~代表當前路徑,也是家目錄
groupadd命令
group命令用於創建用戶組,為了更加高效的指派系統中各個用戶的許可權,在工作中常常添加幾個用戶到一個組裡面,這樣可以針對一類用戶安排許可權。
例如超哥以前在公司里,就負責添加openLDAP用戶管理,偶爾臺灣,美國的同事去上海協作,我就得給他們添加到it部門組裡面,以至於他們有對伺服器操作的許可權。
groupadd it_dep
userdel刪除用戶
-f 強制刪除用戶
-r 同事刪除用戶以及家目錄
userdel -r pyyu
sudo命令
sudo命令用來以其他身份來執行命令,預設的身份為root。在/etc/sudoers
中設置了可執行sudo指令的用戶。若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。
語法
sudo 【選項】【參數】
-b:在後臺執行指令;
-h:顯示幫助;
-H:將HOME環境變數設為新身份的HOME環境變數;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本信息
實例
這個sudo命令用在什麼時候呢?
看圖
怎麼辦?許可權不夠,這時候需要sudo ls /root 以root身份去運行,chaoge權利小,root總可以了吧!!
這是由於配置sudo必須編輯/etc/sudoers文件,並且只有root才能修改,咱們可以通過visudo命令直接編輯sudoers文件,使用這個命令還可以檢查語法,比直接編輯 vim /etc/sudoers更安全
visudo 編輯sudoers文件
寫入
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
chaoge ALL=(ALL) ALL #允許chaoge在任何地方,執行任何命令
此時切換chaoge用戶
#su命令用於切換當前用戶身份到其他用戶身份,變更時須輸入所要變更的用戶帳號與密碼。
su - chaoge
已經可以使用sudo ls /root 命令
文件與目錄許可權
Linux許可權的目的是(保護賬戶的資料)
Linux許可權主要依據三種身份來決定:
- user/owner 文件使用者,文件屬於哪個用戶
- group 屬組,文件屬於哪個組
- others 既不是user,也不再group,就是other,其他人
什麼是許可權
在Linux中,每個文件都有所屬的所有者,和所有組,並且規定了文件的所有者,所有組以及其他人對文件的,可讀,可寫,可執行等許可權。
對於目錄的許可權來說,可讀是讀取目錄文件列表,可寫是表示在目錄內新增,修改,刪除文件。可執行表示可以進入目錄
Linux許可權的觀察
使用一條命令查看許可權
ls -l /var/log/mysqld.log
解讀上圖:
- 許可權,第一個字母為文件類型,後續9個字母,每3個一組,是三種身份的許可權
- 文件鏈接數
- 文件擁有者-屬主
- 文件擁有組-屬組
- 文件大小
- 最後一次被修改的時間日期
- 文件名
先來分析一下文件的類型
- 一般文件
d 文件夾
l 軟連接(快捷方式)
b 塊設備,存儲媒體文件為主
c 代表鍵盤,滑鼠等設備
文件許可權
r read可讀,可以用cat等命令查看
w write寫入,可以編輯或者刪除這個文件
x executable 可以執行
目錄許可權
許可權這裡測試不要用root實驗!!!!root太牛逼了
請用普通用戶執行!!!!!測試文件、文件夾許可權操作,請用普通用戶!
r 可以對此目錄執行ls列出所有文件
w 可以在這個目錄創建文件
x 可以cd進入這個目錄,或者查看詳細信息
許可權與數字轉化
ls -l /var/log/mysqld.log
-rw-r--r-- 1 mysql mysql 6735642 8月 11 14:19 /var/log/mysqld.log
這個就代表mysqld.log文件屬主是mysql,屬組是mysql,只有mysql用戶可以讀取編寫這個文件,其他人只能讀此文件。
查看用戶許可權命令
id指令查看用戶所屬群主
[root@oldboy_python ~ 16:34:52]#id root
uid=0(root) gid=0(root) 組=0(root)
修改文件許可權屬性
普通用戶只能修改自己的文件名,時間與許可權(註意)
因此修改其他用戶許可權,只能用最nb的root用戶
#切換root用戶
[pyyu@oldboy_python root]$ su -
當前/tmp/pyyu.txt文件以存在,且信息是
-rw-rw-r-- 1 pyyu pyyu 0 8月 11 16:41 pyyu.txt
修改屬主為root
chown
[root@oldboy_python /tmp 16:43:12]#chown root pyyu.txt
查看信息
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
修改屬組
chgrp
[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt
-rw-rw-r-- 1 root pyyu 0 8月 11 16:41 pyyu.txt
[root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt
[root@oldboy_python /tmp 16:45:51]#ll pyyu.txt
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
文件許可權
我們已知三種身份許可權(屬主,屬組,其他人),每種身份都有rwx的三種許可權,系統還提供了數字計算許可權。
r read 4
w write 2
x execute 1
每種身份最低是0分,最高是r+w+x 7分
因此三種身份,最高許可權是777,最低是000
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
因此可知pyyu.txt的許可權是
屬主是6 r+w(4+2)
屬組是6 r+w(4+2)
其他人是4 r(4)
修改許可權的命令
chmod
chmod [身份] [參數] [文件]
u(user) +(添加)
g(group) -(減去)
o(other) =(賦值)
a(all)
例如
當前許可權
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
方法1
減去屬主的寫許可權
chmod u-w pyyu.txt
查看許可權
-r--rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt
方法2
屬主添加可讀可寫可執行許可權
chmod 700 pyyu.txt
屬主可讀可寫可執行
屬組可讀可執行
其他人可讀可執行
chmod 755 pyyu.txt
修改文件名,修改文件更改日期
mv pyyu.txt chaoge.txt
#觸摸,修改時間
touch chaoge.txt
軟連接
軟連接也叫做符號鏈接,類似於windows的快捷方式。
常用於安裝軟體的快捷方式配置,如python,nginx等
ln -s 目標文件 軟連接名
1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root 10 10月 15 21:23 test.txt
2.在/home目錄中建立軟連接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test
3.查看軟連接信息
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt
4.通過軟連接查看文件
cat my_test
my_test只是/tmp/test.txt的一個別名,因此刪除my_test不會影響/tmp/test.txt,但是刪除了本尊,
快捷方式就無意義不存在了
PS1變數
Linux命令提示符由PS1環境變數控制
[root@oldboy_python ~]# echo $PS1
[\u@\h \W]\$
可以自行調整全局變數/etc/profile文件用於永久生效 PS1='[\u@\h \W\t]\$'
\d 日期
\H 完整主機名
\h 主機名第一個名字
\t 時間24小時制HHMMSS
\T 時間12小時制
\A 時間24小時制HHMM
\u 當前用戶賬號名
\v BASH的版本
\w 完整工作目錄
\W 利用basename取得工作目錄名
\# 下達的第幾個命令
\$ 提示字元,root為#,普通用戶為$
PS1 > 變數名
$PS1 > 查看變數內容
PS1=新內容 重新賦值
變數賦值,查看
name='chaoge'
echo $name
PS1顯示ip地址
export PS1="[\u@\h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` \w]\$
tar解壓命令
人們發明瞭各種各樣的包,無論是雙肩包,或者是裝在口袋,都是為了讓“文件”更方便攜帶。linux的文件打包工具最出名的是tar。
tar 命令:用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調用壓縮功能實現的
語法
tar(選項)(參數)
-A或--catenate:新增文件到以存在的備份文件;
-B:設置區塊大小;
-c或--create:建立新的備份文件;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
-d:記錄文件的差別;
-x或--extract或--get:從備份文件中還原文件;
-t或--list:列出備份文件的內容;
-z或--gzip或--ungzip:通過gzip指令處理備份文件;
-Z或--compress或--uncompress:通過compress指令處理備份文件;
-f<備份文件>或--file=<備份文件>:指定備份文件;
-v或--verbose:顯示指令執行過程;
-r:添加文件到已經壓縮的文件;
-u:添加改變了和現有的文件到已經存在的壓縮文件;
-j:支持bzip2解壓文件;
-v:顯示操作過程;
-l:文件系統邊界設置;
-k:保留原有文件不覆蓋;
-m:保留文件不被覆蓋;
-w:確認壓縮文件的正確性;
-p或--same-permissions:用原來的文件許可權還原文件;
-P或--absolute-names:文件名使用絕對名稱,不移除文件名稱前的“/”號;
-N <日期格式> 或 --newer=<日期時間>:只將較指定日期更新的文件保存到備份文件里;
--exclude=<範本樣式>:排除符合範本樣式的文件。
實例
tar -zxvf Python-3.7.0b3.tgz #解壓
tar -czvf oldboy.txt.tar.gz oldboy.txt #壓縮oldboy.txt
上述命令等於 以下兩條命令
tar -cvf oldboy.tar oldboy.txt
gzip oldboy.tar
tar -cf all_pic.tar *.jpg #壓縮當前目錄所有jpg結尾的文件
tar -xjf xx.tar.bz2 #解壓縮bz2結尾的文件
gzip命令
gzip用來壓縮文件,是個使用廣泛的壓縮程式,被壓縮的以".gz"擴展名
gzip可以壓縮較大的文件,以60%~70%壓縮率來節省磁碟空間
語法
-d或--decompress或----uncompress:解開壓縮文件;
-f或——force:強行壓縮文件。
-h或——help:線上幫助;
-l或——list:列出壓縮文件的相關信息;
-L或——license:顯示版本與版權信息;
-r或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一併處理;
-v或——verbose:顯示指令執行過程;
實例
壓縮當前目錄所有文件為.gz文件
gzip *
把上例中每個壓縮的文件解壓,併列出詳細的信息
gzip -dv *
顯示壓縮文件的信息,並不解壓
gzip -l *
壓縮一個tar備份文件,擴展名是tar.gz
tar -cf my.tar my_first.py
gzip -r my.tar
netstat命令
netstat命令用來列印Linux中網路系統的狀態信息,可讓你得知整個Linux系統的網路情況。
語法【選項】
netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-n或--numeric:直接使用ip地址,而不通過功能變數名稱伺服器;
-l或--listening:顯示監控中的伺服器的Socket;
-p或--programs:顯示正在使用Socket的程式識別碼和程式名稱;
-a或--all:顯示所有連線中的Socket;
實例
[root@oldboy_python ~ 10:21:59]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 814/sshd
tcp6 0 0 :::111 :::* LISTEN 2703/rpcbind
tcp6 0 0 :::3306 :::* LISTEN 29269/mysqld
udp 0 0 0.0.0.0:758 0.0.0.0:* 2703/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 2703/rpcbind
udp 0 0 10.141.32.137:123 0.0.0.0:* 484/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 484/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 484/ntpd
udp6 0 0 :::758 :::* 2703/rpcbind
udp6 0 0 :::111 :::* 2703/rpcbind
udp6 0 0 :::123 :::* 484/ntpd
ps命令
ps 命令用於查看系統中的進程狀態,格式為“ps [參數]”。
ps 命令常用參數
-a 顯示所有進程
-u 用戶以及其他詳細信息
-x 顯示沒有控制終端的進程
Kill命令
kill命令用來刪除執行中的程式或工作。kill可將指定的信息送至程式。
選項
-a:當處理當前進程時,不限制命令名和進程號的對應關係;
-l <信息編號>:若不加<信息編號>選項,則-l參數會列出全部的信息名稱;
-p:指定kill 命令只列印相關進程的進程號,而不發送任何信號;
-s <信息名稱或編號>:指定要送出的信息;
-u:指定用戶。
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略,下麵是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
實例
先用ps查找進程,然後用kill殺掉:
ps -ef | grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
kill 3268
killall命令
通常來講,複雜軟體的服務程式會有多個進程協同為用戶提供服務,如果逐個去結束這 些進程會比較麻煩,此時可以使用 killall 命令來批量結束某個服務程式帶有的全部進程。
例如nginx啟動後有2個進程
killall nginx