Linux指令學習總結

@[TOC]Linux基礎指令學習筆記

linux文件目錄結構介紹

在這裏插入圖片描述
主要文件目錄:
bin:該目錄存儲的都是一些二進制可執行文件
dev:該目錄中主要存放的是外接設備,例如盤、其他的光盤等。在該目錄下的外接設備是不能直接被使用的,需要掛載(類似windows下的分配盤符)
mnt:當外接設備需要掛載的時候,就需要掛載到該目錄下
etc:該目錄主要存儲一些配置文件
home:家目錄,表示除了root用戶以外其他用戶的家目錄,類似於windows下的User/用戶目錄
proc:全稱process,表示進程,該目錄中存儲的是Linux運行時候的進程
root:root(超級用戶)的家目錄
sbin:全稱super binary,該目錄也是存儲一些可以被執行的二進制文件,但是必須得有super(超級管理員root)權限的用戶才能執行
tmp:臨時文件,當系統運行時候產生的臨時文件會在這個目錄存着
usr:存放的是用戶自己安裝的軟件,類似於windows下的program files
var:存放的程序/系統的日誌文件的目錄

基礎指令

linux指令即在linux終端中輸入的內容

linux指令的通用格式:
指令主體(空格) [選項](空格) [操作對象]
其中一個指令可以有多個選項,操作對象也可以是多個

1、ls(list)指令

  • ls
    列出當前工作目錄下所有的文件/文件夾名稱
  • ls 路徑
    列出指定路徑下的所有文件/文件夾的名稱
  • ls 選項 路徑
    (1)-l:list,表示以詳細列表的形式進行展示
    (2)-a:all,表示顯示所有的文件/文件夾,包含了隱藏文件/文件夾,linux隱藏文件一般以“.”開頭
    在這裏插入圖片描述
    (3)-h:顯示文檔大小的時候以較高可讀性顯示
    在這裏插入圖片描述

2、pwd(print working directory)指令

打印當前工作目錄

3、cd(change directory)指令

切換當前工作目錄,“~”表示當前用戶的家目錄
語法:cd 路徑

4、mkdir(make directory)指令

  • mkdir 相對路徑/絕對路徑
    在指定路徑下創建文件夾

  • mkdir -p 路徑
    當一次性創建多層不存在的目錄的時候,需要添加-p參數,否則會報錯

  • mkdir 路徑1 路徑2 路徑3
    表示一次性創建多個文件夾

5、touch指令

創建文件
語法:touch 路徑
也可一次性創建多個文件
在這裏插入圖片描述

6、cp(copy)指令

複製文件/文件夾到指定位置
語法:cp 被複制的文檔路徑 文檔被複制到的路徑
注意:1.當複製文件夾時,需要加-r選項表示遞歸複製
2.在複製時,可在新文件路徑下對文件進行重命名

7、mv指令

移動文件/文件夾到新的路徑下,也可用此命令對文件/文件夾進行重命名
語法:mv 需要移動的文檔路徑 需要保存的位置路徑(移到新路徑時也可以重命名,與cp命令一樣)
在這裏插入圖片描述

8、rm指令

刪除文件/文件夾
語法:rm 選項 需要移除的文檔路徑
選項:
-f:force,強制刪除,不提示是否刪除
-r:表示遞歸刪除文件夾
刪除一個目錄下相同前綴的文檔:通配符*表示任意個任意字符,以下表示刪除以lin開頭的文件夾
在這裏插入圖片描述

9、vim

語法:vim 文件的路徑
作用:打開一個文件(可以不存在,也可以存在)
退出打開的文件:在沒有按下其他命令的時候,按下shift+英文冒號,輸入q,按下回車即可

10、輸出重定向

一般命令的輸出都會顯示在終端中,有些時候需要將一些命令的執行結果想要保存到文件中進行後續的分析/統計,則這時候需要使用到的輸出重定向技術

  • >:覆蓋輸出,會覆蓋掉原先的文件內容
  • >>:追加輸出,不會覆蓋原始文件內容,會在原始內容末尾繼續添加
    語法:正常執行的指令 > or>> 文件的路徑
    注意:文件可以不存在,不存在則新建該文件

使用覆蓋重定向,保存ls -la 的執行結果,保存到當前目錄下的ls.txt
在這裏插入圖片描述

11、cat指令

作用1:cat有直接打開一個文件的功能,不用關閉,直接把文件顯示在命令行中。不能編輯,vim可以編輯
語法1:cat 文件的路徑

作用2:cat還可以配合輸出重定向對文件進行合併
語法2:cat 待合併的文件路徑1 待合併的文件路徑2 …. 文件路徑n > 合併之後的文件路徑

注意:tab鍵可以補全當前工作目錄下的文件名稱

進階指令

1、df指令

作用:查看磁盤的空間
語法:df -h
-h表示以可讀性較高的形式展示大小
在這裏插入圖片描述

2、free指令

作用:查看內存使用情況
語法:free -m
-m表示以mb爲單位查看
在這裏插入圖片描述
剩餘的內存看第二行的free,第一行的buffers是系統預留的輸入空間,cached是預留的輸出內存空間
swap用於臨時內存,當系統真實內存不足時,臨時用磁盤控件來充當內存

3、head指令

作用:查看一個文件的前n行,如果不指定n,則默認顯示前10行。
語法:#head -n 文件路徑 【n表示數字】

4、tail指令

作用1:查看一個文件的未n行,如果n不指定默認顯示後10行
語法:#tail -n 文件的路徑 n同樣表示數字

作用2:可以通過tail指令來查看一個文件的動態變化內容【變化的內容不能是用戶手動增加的,而是通過終端修改】
語法:#tail -f 文件路徑
該命令一般用於查看系統的日誌比較多。

5、less指令

作用:查看文件,以較少的內容進行輸出,按下輔助功能鍵(數字+回車、空格鍵、上下方向鍵)查看更多
語法:#less 文件路徑
退出按下q鍵

6、wc指令

作用:統計文件內容信息(包含行數、單詞數、字節數)
語法:wc -lwc 需要統計的文件路徑
-l:表示lines,行數
-w:表示words,單詞數 依照空格來判斷單詞數量,中 國爲兩個單詞
-c:表示bytes,字節數
在這裏插入圖片描述

7、date指令

作用:表示操作時間日期(讀取、設置)

  • 語法1:date
    輸出的形式:2018年 3月 24日 星期六 15:54:28

  • 語法2:#date +%F
    等價於#date “+%Y-%m-%d”
    輸出形式:2018-03-24

  • 語法3:#date “+%F %T”
    引號表示讓“年月日(%F)與時分秒(%T)”成爲一個不可分割的整體,加號表示是讀取,
    等價操作#date “+%Y-%m-%d %H:%M:%S”
    輸出的形式:2018-03-24 16:01:00

  • 語法4:獲取之前或者之後的某個時間:date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
    符號的可選值:+(之後) 或者 - (之前)
    單位的可選值:day(天)、month(月份)、year(年)
    “”

8、cal指令

作用:用來操作日曆的

  • 語法1:cal
    等價於 #cal -1 直接輸出當前月份的日曆

  • 語法2:cal -3
    表示輸出上一個月+本月+下個月的日曆

  • 語法3:cal -y 年份
    表示輸出某一個年份的日曆
    在這裏插入圖片描述

9、clear or ctrl + L指令

作用:清除終端中已經存在的命令和結果(信息)
語法:clear 或者快捷鍵:ctrl + L

需要注意的是,該命令並不是真的清除了之前的信息,而是把之前的信息的隱藏到了最上面,通過滾動條繼續查看以前的信息。

10、管道

管道符:|
作用:管道一般可以用於“過濾”,“特殊”,“擴展處理”。
語法:管道不能單獨使用,必須需要配合前面所講的一些指令來一起使用,其作用主要是輔助作用

  • 過濾案例(100%使用):需要通過管道查詢出根目錄下包含“y”字母的文檔名稱
    #ls / | grep y
    針對上面這個命令說明:
    以管道作爲分界線,前面的命令有個輸出,後面需要先輸入,然後再過濾,最後再輸出,通俗的講就是管道前面的輸出就是後面指令的輸入
  • 特殊用法案例:通過管道的操作方法來實現less的等價效果
    之前通過less查看一個文件,可以less 路徑
    現在通過管道寫成:cat 路徑|less
  • 統計某個目錄下的文檔的總個數:ls / | wc -l

高級指令

1、hostname指令

作用:操作服務器的主機名(讀取、設置)
語法1:hostname 含義:表示輸出完整的主機名
語法2:hostname -f 含義:表示輸出當前主機名中的FQDN(全限定域名)

2、id指令

作用:查看一個用戶的一些基本信息(包含用戶id,用戶組id,附加組id…),該指令如果不指定用戶則默認當前用戶
語法1:id 默認顯示當前執行該命令的用戶的基本信息
語法2:id 用戶名 顯示指定用戶的基本信息

驗證上述信息是否正確?
驗證用戶信息:通過文件/etc/passwd
驗證用戶組信息:通過文件/etc/group
在這裏插入圖片描述

3、whoami指令

作用:顯示當前登錄的用戶名,一般用於shell腳本,用於獲取當前操作的用戶名方便記錄日誌
語法:whoami
在這裏插入圖片描述

4、ps -ef指令

作用:主要是查看服務器的進程信息
選項含義:
-e:等價於“-A”,表示列出全部的進程
-f:顯示全部的列(顯示全字段)

執行結果:
在這裏插入圖片描述
列的含義:
UID:該進程執行的用戶id
PID:進程id
PPID(parent process ID):該進程的父級進程id,如果一個程序的父級進程找不到,該程序的進程稱之爲殭屍進程
C:Cpu的佔用率,其形式是百分數
STIME:進行的啓動時間
TTY:終端設備,發起該進程的設備識別符號,如果顯示“?”則表示該進程並不是由終端設備發起
TIME:進程的執行時間
CMD:該進程的名稱或者對應的路徑

案例:(100%使用的命令)在ps的結果中過濾出想要查看的進程狀態
#ps -ef|grep “進程名稱”
在這裏插入圖片描述
結果至少會有一個,因爲搜索的時候就會有一個進程(比如上圖紅框下面的)

5、top指令

作用:查看服務器的進程佔的資源
語法:
進入命令:top (動態顯示)
退出命令:按下q鍵
在這裏插入圖片描述
表頭含義:
PID:進程id
USER:該進程對應的用戶
PR:優先級;優先級越高,PR越大(priority)
NI不重要
VIRT:虛擬內存;一個進程申請500M,實際使用400M,則虛擬內存爲500M
RES:常駐內存;如上例,常駐內存爲400M
SHR:共享內存;一個進程的啓動依賴其他進程,其他進程也佔用內存,該部分爲~
計算一個進程實際使用的內存 = 常駐內存(RES)- 共享內存(SHR)
S:表示進程的狀態status(sleeping,其中S表示睡眠,R表示運行);
%CPU:表示CPU的佔用百分比
%MEM:表示內存的佔用百分比
TIME+:執行的時間
COMMAND:進程的名稱或者路徑

在運行top後,可以按下方便的快捷鍵:
M:表示將結果按照內存(MEM)從高到低進行降序排列
P:表示將結果按照CPU使用率從高到低進行降序排列
1(數字1):當服務器擁有多個cpu的時候可以使用“1”快捷鍵來切換是否展示顯示各個cpu的詳細信息

6、du -sh指令

作用:查看目錄的真實大小
語法:du -sh 目錄路徑
選項含義:
-s:summaries,只顯示彙總的大小
-h:表示以高可讀性的形式進行顯示,動態加單位
在這裏插入圖片描述

7、find指令

作用:用於查找文件
語法:find 路徑範圍 選項 選項的值
選項:
-name:按照文檔名稱進行搜索(支持模糊搜索)
-type:按照文檔的類型進行搜索
文檔類型:“-”表示文件(在使用find的時候需要用f來替換),“d”表示文件夾

搜索etc目錄下所有的conf後綴文件
在這裏插入圖片描述
使用find來搜索/etc目錄下所有的文件的前十行
在這裏插入圖片描述

8、service指令

作用:用於控制一些軟件的服務啓動/停止/重啓
語法:service 服務名 start/stop/restart
注意:不一定所有軟件都有服務

9、kill指令

作用:表示殺死進程 (當遇到殭屍進程或者出於某些原因需要關閉進程的時候)
語法:kill 進程PID (語法需要配合ps一起使用)

與kill命令作用相似但是比kill更加好用的殺死進程的命令:killall
語法:killall 進程名稱
例如:killall httpd

10、ifconfig指令

作用:用於操作網卡相關的指令
簡單語法:ifconfig (獲取網卡信息)
在這裏插入圖片描述
Eth0表示Linux中的一個網卡,eth0是其名稱。Lo(loop,本地回還網卡,其ip地址一般都是127.0.0.1)也是一個網卡名稱

11、reboot指令

作用:重新啓動計算機
語法1:#reboot 重啓
語法2:#reboot -w 模擬重啓,但是不重啓(只寫關機與開機的日誌信息,但是不重啓計算機,主要用來做測試)

12、shutdown指令

作用:關機 (慎用!)
語法1:shutdown -h now “關機提示” 或者 shutdown -h 15:25 “關機提示”
立即關機或者在3點25時定時關機,提示是“關機提示”
取消關機:centos7版本以下:
在這裏插入圖片描述
除了shutdown關機以外,還有以下幾個關機命令:
init 0
halt
poweroff

13、uptime指令

作用:輸出計算機的持續在線時間(計算機從開機到現在運行的時間)
語法:uptime
在這裏插入圖片描述
load average:最近一分鐘負載 最近五分鐘負載 最近十五分鐘負載
up爲持續時間,上圖爲開機一天又22個小時

14、uname指令

作用:獲取計算機操作系統相關信息
語法1:uname 獲取操作系統的類型
語法2:uname -a all,表示獲取全部的系統信息(類型、全部主機名、內核版本、發佈時間、開源計劃)
在這裏插入圖片描述

15、netstat -tnlp指令

作用:查看網絡連接狀態
語法:#netstat -tnlp
在這裏插入圖片描述
選項說明:
-t:表示只列出tcp協議的連接
-n:表示將地址從字母組合轉化成ip地址,將協議轉化成端口號來顯示
-l:表示過濾出“state(狀態)”列中其值爲LISTEN(監聽)的連接
-p:表示顯示發起連接的進程pid和進程名稱

16、man指令

作用:manual,手冊(包含了Linux中全部命令手冊,英文)
語法:man 命令 (退出按下q鍵)

案例:通過man命令查詢cp指令的用法
man cp

VIM編輯器

1、vi介紹

Vi編輯器是所有Unix及Linux系統下標準的編輯器,類似於windows系統下的notepad(記事本)編輯器,由於在Unix及Linux系統的任何版本,Vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進一步瞭解它,Vi也是Linux中最基本的文本編輯器,學會它後,我們將在Linux的世界裏暢行無阻,尤其是在終端中。

關於vim:
vi和vim都是Linux中的編輯器,不同的是,vim比較高級,可以視爲vi的升級版本。vi使用於文本編輯,但是vim更適用於coding(寫代碼的)。
vi裏面的指令vim裏面都有,vim的指令vi不一定有
Vim重點是光標的移動,模式切換,刪除,查找,替換,複製,粘貼,撤銷命令的使用

2、vim三種模式

命令模式:在該模式下是不能對文件直接編輯,可以輸入快捷鍵進行一些操作(刪除行,複製行,移動光標,粘貼等等)【打開文件之後默認進入的模式】
編輯模式:在該模式下可以對文件的內容進行編輯
末行模式:可以在末行輸入命令來對文件進行操作(搜索、替換、保存、退出、撤銷、高亮等等);

Vim的打開文件的方式(打開時,光標會停留在上次關閉前光標的位置,還有上次遺留的高亮)

  • vim 文件路徑
    作用:打開指定的文件
  • vim +數字 文件的路徑
    作用:打開指定的文件,並且將光標移動到指定行
  • vim +/關鍵詞 文件的路徑
    作用:打開指定的文件,並且高亮顯示關鍵詞
  • vim 文件路徑1 文件路徑2 文件路徑3
    作用:同時打開多個文件

1)模式間的切換

在這裏插入圖片描述

2)命令模式

(1)光標移動

①光標移動到行首
按鍵:shift + 6 或 ^(T字母上面的6,不要按小鍵盤的6)/直接home鍵

②光標移動到行尾
按鍵:shift + 4 或 $(R字母的左上角的4,不是小鍵盤的4)/直接end鍵
^ $都是正則表達式的特殊符號

③光標移動到首行
按鍵:gg

③ 光標移動到末行
按鍵:G或者shift+g

④ 翻屏
向上翻屏:按鍵ctrl + b (back) 或 PgUp
向下翻屏:按鍵ctrl + f (forword) 或 PgDn

(2)複製操作

①複製光標所在行
按鍵:yy
粘貼:在想要粘貼的地方按下p鍵

②以光標所在行爲準(包含當前行),向下複製指定的行數
按鍵:數字yy
粘貼同上

③ 可視化複製
按鍵:ctrl + v/V(可視塊)
按V/v(可視行),然後按下↑↓←→方向鍵來選中需要複製的區塊,按下y鍵進行復制,最後按下p鍵粘貼
退出按下esc鍵

(3)剪切/刪除

①剪切/刪除光標所在行
按鍵:dd (刪除之後下一行上移)
注意:dd嚴格意義上說是剪切命令,但是如果剪切了不粘貼就是刪除的效果。

②剪切/刪除光標所在行爲準(包含當前行),向下刪除/剪切指定的行
按鍵:數字dd (刪除之後下一行上移)

③剪切/刪除光標所在的當前行之後的內容,但是刪除之後下一行不上移
按鍵:D (刪除之後當前行會變成空白行)

④可視化刪除
按鍵:ctrl + v/V(可視塊)
按V/v(可視行),然後按下↑↓←→方向鍵來選中需要複製的區塊,按下D表示刪除選中行,d表示刪選中塊

(4)撤銷/恢復

撤銷:輸入 :u (不屬於命令模式,區分大小寫) 或者 直接u鍵 (undo)
恢復:ctrl + r 恢復(取消)之前的撤銷操作

(5)光標的快速移動

①快速將光標移動到指定的行
按鍵:數字G

②以當前光標爲準向上/向下移動n行
按鍵:數字↑,數字↓

③以當前光標爲準向左/向右移動n字符
按鍵:數字←,數字→

④ 末行模式\命令模式下的快速移動方式:移動到指定的行
按鍵:輸入英文“:”,其後輸入行數數字,按下回車

3)末行模式

進入方式:由命令模式進入,按下“:”或者“/(表示查找)”即可進入
退出方式:
a. 按下esc
b. 連按2次esc鍵
c. 刪除末行全部輸入字符

① 保存操作(write)
輸入:“:w” 保存文件(雙引號不用輸入)
輸入:“:w 路徑” 另存爲

②退出(quit)
輸入:“:q” 退出文件

③保存並退出
輸入:“:wq” 保存並且退出

④強制 (!)
輸入:“:q!” 表示強制退出,剛纔做的修改操作不做保存

⑤調用外部命令(瞭解)
輸入:“:!外部命令”
例如:

當外部命令執行結束之後按下任意鍵回到vim編輯器打開的內容
在這裏插入圖片描述
⑥搜索/查找
輸入:“/關鍵詞”
例如:我想在passwd文件中搜索“sbin”關鍵詞在這裏插入圖片描述
在搜索結果中切換上/下一個結果:N/n (next)
如果需要取消高亮,則需要輸入:“:nohl”【no highlight】
⑦替換switch
輸入:s/搜索的關鍵詞/新的內容 替換光標所在行的第一處符合條件的內容
輸入:s/搜索的關鍵詞/新的內容/g 替換光標所在行的全部符合條件的內容
:%s/搜索的關鍵詞/新的內容 替換整個文檔中每行第一個符合條件的內容
:%s/搜索的關鍵詞/新的內容/g 替換整個文檔的符合條件的內容

%表示整個文件
g表示全局(global)

⑧顯示行號(臨時,退出後再打開就沒有了)
輸入:“:set nu”
nu表示number
如果想取消顯示,則輸入:“:set nonu”

⑨擴展1:使用vim同時打開多個文件,在末行模式下進行切換文件
查看當前已經打開的文件名稱:“:files”
在這裏插入圖片描述
%a:a=active,表示當前正在打開的文件;
#:表示上一個打開的文件
切換文件的方式:
a. 如果需要指定切換文件的名稱,則可以輸入:“:open 已經打開的文件名”
b. 可以通過其他命令來切換上一個文件/下一個文件
輸入:“:bn”切換到下一個文件(back next)
輸入:“:bp”切換到上一個文件(back prev)

⑩擴展2:
除了上面的這個語法之外,vim還支持另外一個保存退出方法“:x”。

說明:vim還支持另外一個保存退出方法“:x”
①“:x”在文件沒有修改的情況下,表示直接退出,在文件修改的情況下表示保存並退出;
②如果文件沒有被修改,但是使用wq進行退出的話,則文件的修改時間會被更新;但是如果文件沒有被修改,使用x進行退出的話,則文件修改時間不會被更新的;主要是會混淆用戶對文件的修改時間的認定。

因此建議以後使用“:x”來進行對文件的保存退出。
但是:不要使用X,X表示對文件進行加密操作

4)編輯模式

在這裏插入圖片描述
重點看前2個進入方式:i(insert)、a(after)
退出方式:按下esc鍵

5)其他功能

(1)代碼着色

進入末行模式後
顯示:“:syntax on” syntax:語法
關閉顯示:“:syntax off”
顯示着色是默認設置,關閉後再打開還是會有着色,且着色是固定的,一般不改
在這裏插入圖片描述

(2)計算器的使用

vim自身集成了一個簡易的計算器,使用步驟:
a. 進入編輯模式
b. 按下按鍵“ctrl + R”(大小寫R都可),然後輸入“=”,此時光標會變到最後一行
c. 輸入需要計算的內容,按下回車

6)vim的擴展

(1)vim的配置

Vim配置有三種情況:
a. 在文件打開的時候在末行模式下輸入的配置(臨時的,沒有配置文件)
b. 個人配置文件(~/.vimrc,如果沒有可以自行新建)
c. 全局配置文件(vim自帶,/etc/vimrc)
①新建好個人配置文件之後進入編輯

②在配置文件中進行配置
比如顯示行號:set nu
在這裏插入圖片描述
配置好之後vim打開所有文本文件就會永遠顯示行號

注意:如果針對同一個配置項,個人配置文件中存在,則以個人配置文件爲準,如果個人配置文件中不存在這一項,則以全局配置文件爲準

(2)異常退出

在編輯文件之後並沒有正常的去wq(保存退出),而是遇到突然關閉終端或者斷電的情況,則會顯示下面的效果,這個情況稱之爲異常退出
在這裏插入圖片描述
解決辦法:將交換文件(在編程過程中產生的臨時文件)刪除掉即可
#rm -f .passwd.swp

(3)別名機制

作用:相當於創建一些屬於自己的自定義命令

例如:在windows下有cls命令,在Linux下可能因爲沒有這個命令而不習慣清屏。現在可以通過別名機制來解決這個問題,可以自己創造出cls命令
別名機制依靠一個別名映射文件:~/.bashrc
#vim ~/.bashrc
在這裏插入圖片描述

注意:如果想新創造的命令生效,必須要重新登錄當前用戶

linux自有服務

自有服務,即不需要用戶獨立去安裝的軟件的服務,而是當系統安裝好之後就可以直接使用的服務(內置)

1、運行模式

運行模式也可以稱之爲運行級別
在linux中存在一個進程:init (initialize,初始化),進程id是1
查看進程:#ps -ef|grep init
在這裏插入圖片描述
該進程存在一個對應的配置文件:inittab(系統運行級別配置文件,位置/etc/inittab)
文件的主要內容:
在這裏插入圖片描述
根據上述的描述,可以得知,Centos6.5中存在7中運行級別/模式:
0 — 表示關機級別(不要將默認的運行級別設置成這個值)
1 — 單用戶模式
2 — 多用戶模式,不帶NFS(Network File Syetem)
3 — 多用戶模式,完全的多用戶模式(不帶桌面的,純命令行模式)
4 — 沒有被使用的模式(被保留模式)
5 — X11,完整的圖形化界面模式
6 — 表示重啓級別(不要將默認的運行級別設置成這個值)
與該級別相關的幾個命令:
#init 0 表示關機
#init 3 表示切換到不帶桌面的模式
#init 5 切換到圖形界面
#init 6 重啓電腦
注意:init指令需要超級管理員的權限,普通用戶無法執行

這些命令其實都是調用的init進程,將數字(運行級別)傳遞給進程,進程去讀配置文件執行對應的操作

  • 切換到純命令行模式下(臨時切換,重啓之後又恢復)
    #init 3
    切換之後需要輸入用戶名和密碼,在輸入密碼的時候沒有“*”提示輸入,只要自己確認輸入的密碼沒有錯誤,按下回車即可。如果輸錯了,按enter重輸或者按住backspace鍵
  • 設置模式永久爲命令行模式
    將/etc/inittab文件中的initdefault值設置成3,然後重啓操作系統在這裏插入圖片描述

2、用戶與用戶組管理

       Linux系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
       用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,併爲用戶提供安全性保護。
       每個用戶賬號都擁有一個唯一的用戶名和各自的密碼。用戶在登錄時鍵入正確的用戶名和密碼後,就能夠進入系統和自己的主目錄。

要想實現用戶賬號的管理,要完成的工作主要有如下幾個方面:

  • 用戶賬號的添加、刪除、修改以及用戶密碼的管理。
  • 用戶組的管理

主要是三個文件:
/etc/passwd 存儲用戶的關鍵信息
/etc/group 存儲用戶組的關鍵信息
/etc/shadow 存儲用戶的密碼信息

1)用戶管理

(1)添加用戶

常用語法:useradd 選項 用戶名
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統默認會從500之後按順序分配uid,如果不想使用系統分配的,可以通過該選項自定義
-c comment:添加註釋

一個用戶主組只能有一個,可以有多個附加組,且在Centos下創建好用戶之後隨之產生一個同名家目錄
案例:創建用戶zhangsan,不帶任何選項
驗證:/etc/passwd的最後一行,查看是否有zhangsan的信息
在這裏插入圖片描述
passwd文件解讀:
格式:用戶名:密碼:用戶ID:用戶組ID:註釋:家目錄:解釋器shell
用戶名:創建新用戶名稱,後期登錄的時候需要輸入
密碼:此密碼位置一般情況都是“x”,表示密碼的佔位
用戶ID:用戶的識別符
用戶組ID:該用戶所屬的主組ID;
註釋:解釋該用戶是做什麼用的
家目錄:用戶登錄進入系統之後默認的位置
解釋器shell:等待用戶進入系統之後,用戶輸入指令之後,該解釋器會收集用戶輸入的指令,傳遞給內核處理

注意:在不添加選項的時候,執行useradd之後會執行一系列的操作
a. 創建同名的家目錄
b. 創建同名的用戶組

查看用戶的主組可以查看passwd文件,查看附加組可以查看group文件
在這裏插入圖片描述

(2)修改用戶

常用語法:usermod 選項 用戶名
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統默認會從500之後按順序分配uid,如果不想使用系統分配的,可以通過該選項自定義
-l:修改用戶名,語法:usermod -l 新的用戶名 舊的用戶名
在這裏插入圖片描述

group文件的第一列表示組名,後面是以該組爲附加組的用戶名稱在這裏插入圖片描述

(3)設置密碼

Linux不允許沒有密碼的用戶登錄到系統,因此前面創建的用戶目前都處於鎖定狀態,需要設置密碼之後才能登錄計算機
常用語法:passwd 用戶名
在設置密碼的時候也是沒有任何輸入提示的,放心輸入,確保兩次輸入的密碼一致,按下回車即可
設置密碼之後shadow文件中的體現,能夠看出wangwu沒有密碼
在這裏插入圖片描述

  • 切換用戶命令:su [用戶名] (switch user)
    如果用戶名不指定則表示切換到root用戶
    切換用戶需要注意的事項:
    a. 從root往普通用戶切換不需要密碼,但是反之則需要root密碼
    b. 切換用戶之後前後的工作路徑是不變的
    c. 普通用戶沒有辦法訪問root用戶家目錄,但是反之則可以

(4)刪除用戶

常用語法:userdel 選項 用戶名
常用選項:
-r:表示刪除用戶的同時,刪除其家目錄

注意:

  1. 已經登錄的用戶刪除的時候提示刪除失敗,但是沒有登錄的用戶可以正常刪除 ,可以kill對應用戶的全部進程後再進行刪除。
  2. 所有跟用戶操作的命令(除passwd外)只有root超級管理員有權限執行

2)用戶組管理

       每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。
       用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新
在這裏插入圖片描述
文件結構:
用戶組名:密碼:用戶組ID:組內用戶名
密碼:X表示佔位符,雖然用戶組可以設置密碼,但是絕大部分的情況下不設置密碼;
組內用戶名:表示附加組是該組的用戶名稱

(1)用戶組添加

常用語法:groupadd 選項 用戶組名
常用選項:
-g:類似用戶添加里的“-u”,-g表示選擇自己設置一個自定義的用戶組ID數字,如果自己不指定,則默認從500之後遞增

(2)用戶組編輯

常用語法:groupmod 選項 用戶組名
常用選項:
-g:類似用戶修改裏的“-u”,-g表示選擇自己設置一個自定義的用戶組ID數字
-n:類似於用戶修改“-l”,表示設置新的用戶組的名稱

(3)用戶組刪除

常用語法:groupdel 用戶組名
注意:當如果需要刪除一個組,但是這個組是某個用戶的主組時,則不允許刪除;如果確實需要刪除,則先從組內移出所有用戶

3、網絡設置

首先知道網卡配置文件位置:/etc/sysconfig/network-scripts,在目錄中網卡的配置文件命名格式:ifcfg-網卡名稱
在這裏插入圖片描述
ONBOOT:是否開機啓動
BOOTPROTO:ip地址分配方式,DHCP表示動態主機分配協議
HWADDR:硬件地址,MAC地址

1)重啓網卡:service network restart (可以用)

在這裏插入圖片描述

  1. 在有的分支版本中可能沒有service命令來快速操作服務,但是有一個共性的目錄:/etc/init.d
    這個目錄中放着很多服務的快捷方式
    所以可以重啓網卡可以使用:/etc/init.d/network restart
    在這裏插入圖片描述
    擴展1: 如果修改網卡的配置文件,但是配置文件的目錄層次很深,此時可以在淺的目錄中創建一個快捷方式(軟連接),方便以後去查找
    語法:ln -s 原始文件的路徑 快捷方式的路徑
    在這裏插入圖片描述
    其中,文件類型位置的“l”表示其類型爲link(連接類型),後面的“->”指向的是原始文件路徑
    擴展2:重啓單個網卡
    停止某個網卡:ifdown 網卡名
    開啓某個網卡:ifup 網卡名
    例如:需要停止-啓動(重啓)eth0網卡,則可以輸入
    #ifdown eth0
    #ifup eth0

4、ssh服務

ssh(secure shell,安全外殼協議),該協議有2個常用的作用:遠程連接協議、遠程文件傳輸協議(遠程連接附帶的)
協議使用端口號:默認是22
可以是被修改的,如果需要修改,則需要修改ssh服務的配置文件:
/etc/ssh/ssh_config
在這裏插入圖片描述
服務啓動/停止/重啓
service sshd start/stop/restart (sshd中的d表示是一個守護進程)
/etc/init.d/sshd start/stop/restart

1)遠程終端

終端工具主要幫助運維人員連接遠程的服務器,常見終端工具有:Xshell、secureCRT、Putty等。以putty爲例

1.獲取服務器ip地址,可以通過ifconfig命令進行查看,然後順手在windows中測試虛擬機ip的連接相通性

2.打開putty,輸入相關的信息
在這裏插入圖片描述
3.輸入登錄信息
在這裏插入圖片描述

2)SSH服務文件傳輸

(1)可視化的界面傳輸工具:Filezilla

  1. 選擇“文件”- “站點管理器(Ctrl + S)”
    2.

  2. 點擊“文件”菜單下方的“▽”選擇需要連接的服務器,連接好之後的效果
    在這裏插入圖片描述
    3.從本地windows上傳文件到linux中方式
    支持直接拖拽文件,也可以右鍵本地需要上傳的文件,然後點選“上傳”即可

  3. 下載linux文件到本地
    支持服務器文件直接拖拽到本地,也可以在右側窗口選擇需要下載的文件,右鍵,點選“下載”

(2)通過命令行工具來傳輸文件/文件夾

工具:PSCP.exe(必須通過cmd命令行打開),爲了使用方便可以將其放到環境變量目錄中
如果不清楚哪些路徑是環境變量路徑,只需要將其放到C:/Windows目錄下即可
在這裏插入圖片描述
用法:
a. pscp 選項 用戶名@linux主機地址:資源路徑 windows本地的地址 (下載到win)
b. pscp 選項 資源路徑 用戶名@linux主機地址:遠程路徑 (上傳到linux)
c. pscp 選項 -ls 用戶名@linux主機地址 (列出遠程路徑下結構)

  1. 下載到本地windows
    要求將遠程linux服務器下的/etc整個目錄下載到本地E:\tmp下
    pscp -r [email protected]:/etc E:\tmp

在CMD中輸入之後輸入密碼
在這裏插入圖片描述

  1. 上傳文件到linux
    pscp -r “E:\test\testfiletransport” [email protected]:/root
    如果文件路徑有空格,最好用雙引號括起來表示是一個整體

5、設置主機名

1)臨時設置

需要切換用戶使之生效
語法:hostname 新主機名
![在這裏插入圖片描

2)永久設置主機名(需要重啓)

先找到主機名的配置文件:/etc/sysconfig/network,在其中設置後保存即可
在這裏插入圖片描述

3)修改linux服務器的hosts文件,將yunwei指向本地(設置FQDN)

Hosts文件的位置:/etc/hosts
在這裏插入圖片描述

6、chkconfig服務

作用:相當於windows下“安全衛士”、“電腦管家”之類的安全輔助工具提供“開機啓動項”的一個管理服務。在linux下不是所有的軟件安裝完成之後都有開機啓動服務,有的可能需要自己去添加。除此之外還可以查看和刪除

1)開機啓動服務查詢

chkconfig --list
在這裏插入圖片描述
其中0-6表示各個啓動級別
例如:以httpd爲例,其3級別爲關閉(off),則表示其在3啓動形式下默認開機不啓動
5對應的也是關閉,則表示其在桌面環境下也是開機不啓動。

2)刪除服務

chkconfig --del 服務名
例如刪除httpd服務

3)添加開機啓動服務

chkconfig --add 服務名 【必須要保證服務正常運行,纔可以添加】

4)設置服務在某個級別下開機啓動/不啓動【重點命令】

chkconfig --level 連在一起的啓動級別 服務名on/off
例如:設置httpd服務在3,5級別下默認開機啓動
在這裏插入圖片描述

7、ntp服務

作用:ntp主要是用於對計算機的時間同步管理操作。時間是對服務器來說是很重要的,一般很多網站都需要讀取服務器時間來記錄相關信息,如果時間不準,則可能造成很大的影響

上游的概念:
在這裏插入圖片描述
同時服務器時間方式有2個:一次性同步(手動同步)、通過服務自動同步

1)手動同步

ntpdate 時間服務器的域名或ip地址
時間校準的Ip地址查看可以訪問:http://www.ntp.org.cn/pool.php

2)自動同步

啓動ntpd服務:service ntpd start 或者 /etc/init.d/ntpd start

設置ntpd服務開機啓動:
chkconfig --list|grep ntpd
chkconfig --level 35 ntpd on

8、防火牆服務

在當前的centos6.5中防火牆有一個名稱:iptables 【7.x中默認使用的是firewalld】

  1. iptables服務啓動/重啓/關閉
    #service iptables start/restart/stop
    /etc/init.d/iptables start /restart/stop
  2. 查看iptables的狀態(規則)
    service iptables status
    在這裏插入圖片描述
  3. ③ 查看規則的命令
    iptables -L -n
    結果與上面的service iptables status差不多
    含義:
    -L:表示列出規則
    -n:表示將單詞表達形式(anywhere)改成數字形式(127.0.0.1)顯示
    在這裏插入圖片描述
  4. 簡單設置防火牆規則
    例如,需要允許80端口通過防火牆,則規則可以用以下的命令來設置
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允許訪問80端口

Iptables:主命令
-I:表示將規則放到最前面
-A:即add,表示添加規則(放到列表最後)
INPUT:進站請求【出站output】
-p:protocol,指定協議(icmp/tcp/udp)
–dport:指定端口號
-j:指定行爲結果,允許(accept)/禁止(reject)/丟棄(drop)

添加完成之後需要保存操作:
/etc/init.d/iptables save

9、rpm管理

作用:rpm的作用類似於windows上的電腦管家中“軟件管理”、安全衛士裏面“軟件管家”等產品,主要作用是對linux服務器上的軟件包進行對應管理操作,管理分爲:查詢、卸載、安裝

1)查詢某個軟件的安裝情況

rpm -qa|grep 關鍵詞
選項:
-q:查詢,query
-a:全部,all

2)卸載軟件

rpm -e 軟件的名稱
在這裏插入圖片描述
火狐卸載的時候是沒有依賴關係的,所以可以直接卸載,但是在卸載Apache的時候提示無法卸載:
在這裏插入圖片描述
當存在依賴關係的時候又不想去解決這個問題的時候可以:
rpm -e 軟件包名 --nodeps

3)安裝軟件

要想裝軟件,和windows下一樣,先得找到安裝包。
軟件包的獲得方式:
a. 去官網去下載;
b. 從光盤(或者鏡像文件)中讀取;
此處以光盤文件爲例:

  1. 查看塊狀設備(光盤、硬盤、磁盤)的信息:
    lsblk (list block devices) 查看塊狀設備的信息
    在這裏插入圖片描述
    Name:名稱
    Size:設備大小
    Type:類型
    MountPoint:掛載點(類似windows下盤符)
  2. 安裝軟件的命令:
    rpm -ivh 軟件包完整名稱
    選項:
    -i:install,安裝
    -v:顯示進度條
    -h:表示以“#”形式顯示進度條

擴展:光盤的掛載和解掛

  • 解掛操作
    語法:umount 當前設備的掛載點(路徑),相當於U盤在windows上已經被彈出了,但是沒有拔下電腦USB接口
    在這裏插入圖片描述
  • 掛載光盤
    語法:mount 設備原始地址 要掛載的位置路徑
    設備原始地址:地址統一都在/dev下,然後根據大小確定具體name值,拼湊在一起組成原始地址,例如當前:“/dev/sr0”
    要掛載的位置路徑:掛載目錄一般都在mnt下,也可以在mnt下建目錄
    在這裏插入圖片描述

10、cron/crontab計劃任務

作用:操作系統不可能24小時都有人在操作,有些時候想在指定的時間點去執行任務(例如:每天夜裏2點去重新啓動Apache),此時不可能真有人每天夜裏2點去執行命令,此時可以交給計劃任務程序去執行操作
語法:crontab 選項
常用選項:
-l:list,列出指定用戶的計劃任務列表
-e:edit,編輯指定用戶的計劃任務列表
-u:user,指定的用戶名,如果不指定,則表示當前用戶
-r:remove,刪除指定用戶的計劃任務列表

1)編輯計劃任務

在這裏插入圖片描述
計劃任務的規則語法格式,以行爲單位,一行則爲一個計劃:
分 時 日 月 周 需要執行的命令
例如:如果想要每天的0點0分執行reboot指令,則可以寫成
0 0 * * * reboot
取值範圍:
分:0~59
時:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四個符號:
:表示取值範圍中的每一個數字
-:做連續區間表達式的,要想表示1~7,則可以寫成:1-7
/:表示每多少個,例如:想每10分鐘一次,則可以在分的位置寫:
/10
,:表示多個取值,比如想在1點,2點6點執行,則可以在時的位置寫:1,2,6

  1. 問題1:每月1、10、22日的4:45重啓network服務
    45 4 1,10,22 * * service network restart
  2. 問題2:每週六、週日的1:10重啓network服務
    10 1 * * 6,0 service network restart
  3. 問題3:每天18:00至23:00之間每隔30分鐘重啓network服務
    */30 18-23 * * * service network restart
  4. 問題4:每隔兩天的上午8點到11點的第3和第15分鐘執行一次重啓
    3,15 8-11 */2 * * reboot

2)Crontab權限問題

本身是任何用戶都可以創建自己的計劃任務。

但是超級管理員可以通過配置來設置某些用戶不允許設置計劃任務 :
配置文件位於(黑名單):
/etc/cron.deny 裏面寫用戶名,一行一個,該用戶則不允許創建計劃任務
還有一個配置文件:(白名單)
/etc/cron.allow (本身不存在,自己創建)
注意:白名單優先級高於黑名單,如果一個用戶同時存在兩個名單文件中,則會被默認允許創建計劃任務

linux的權限管理操作

Linux的權限操作與用戶、用戶組是兄弟操作

1、概述

Linux系統一般將文件可存/取訪問的身份分爲3個類別:owner、group、others,且3種身份各有read、write、execute等權限

1)權限介紹

  • 在多用戶(可以不同時)計算機系統的管理中,權限是指某個特定的用戶具有特定的系統資源使用權力,像是文件夾、特定系統指令的使用或存儲量的限制
  • 在Linux中分別有讀、寫、執行權限: 讀權限:
    對於文件夾來說,讀權限影響用戶是否能夠列出目錄結構
    對於文件來說,讀權限影響用戶是否可以查看文件內容
    寫權限:
    文件夾來說,寫權限影響用戶是否可以在文件夾下“創建/刪除/複製到/移動到”文檔
    對於文件來說,寫權限影響用戶是否可以編輯文件內容
    執行權限:
    一般都是對於文件來說,特別腳本文件

2)身份介紹

(1)Owner身份(文件所有者,默認爲文檔的創建者)

由於Linux是多用戶、多任務的操作系統,因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設置文件的權限,讓其成爲個人的“私密文件”,即個人所有者。因爲設置了適當的文件權限,除本人(文件所有者)之外的用戶無法查看文件內容

(2)Group身份(與文件所有者同組的用戶)

與文件所有者同組最有用的功能就體現在多個團隊在同一臺主機上開發資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。由於設置了適當的權限,A、B團體中的成員都能互相修改對方的數據,但是團體C的成員則不能修改F的內容,甚至連查看的權限都沒有。同時,團體的成員也能設置自己的私密文件,讓團隊的其它成員也讀取不了文件數據。在Linux中,每個賬戶支持多個用戶組。如用戶a1、b1即可屬於A用戶組,也能屬於B用戶組【主組和附加組】

(3)Others身份(其他人,相對於所有者)

這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產證上的登記者是大明(owner所有者),那麼,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有個人叫張三,和他們三沒有關係,那麼這個張三就是其他人了。

(4)Root用戶(超級用戶)

在Linux中,還有一個神一樣存在的用戶,這就是root用戶,因爲在所有用戶中它擁有最大的權限 ,所以管理着普通用戶。

3)Linux的權限介紹

要設置權限,就需要知道文件的一些基本屬性和權限的分配規則。在Linux中,ls命令常用來查看文件的屬性,用於顯示文件的文件名和相關屬性
ls -l 路徑 【ls -l 等價於 ll】
在這裏插入圖片描述
標紅的部分就是Linux的文檔權限屬性信息

Linux中存在用戶、用戶組和其他人概念,各自有不同的權限,對於一個文檔來說,其權限具體分配如下:
在這裏插入圖片描述
十位字符表示含義:
第1位:表示文檔類型,取值常見的有“d表示文件夾”、“-表示文件”、“l表示軟連接”、“s表示套接字”等等;
第2-4位:表示文檔所有者的權限情況,第2位表示讀權限的情況,取值有r、-;第3位表示寫權限的情況,w表示可寫,-表示不可寫,第4位表示執行權限的情況,取值有x、-。
第5-7位:表示與所有者同在一個組的用戶的權限情況,第5位表示讀權限的情況,取值有r、-;第6位表示寫權限的情況,w表示可寫,-表示不可寫,第7位表示執行權限的情況,取值有x、-。
第8-10位:表示除了上面的前2部分的用戶之外的其他用戶的權限情況,第8位表示讀權限的情況,取值有r、-;第9位表示寫權限的情況,w表示可寫,-表示不可寫,第10位表示執行權限的情況,取值有x、-。
權限分配中,均是rwx的三個參數組合,且位置順序不會變化。沒有對應權限就用 – 代替

2、權限設置

語法:chmod 選項 權限模式 文檔(change mode)
常用選項:
-R:遞歸設置權限 (當文檔類型爲文件夾的時候)
權限模式:就是該文檔需要設置的權限信息
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
注意點:如果想要給文檔設置權限,操作者要麼是root用戶,要麼就是文檔的所有者

1)字母形式

在這裏插入圖片描述
給誰設置:
u:表示所有者身份owner(user)
g:表示給所有者同組用戶設置(group)
o:表示others,給其他用戶設置權限
a:表示all,給所有人(包含ugo部分)設置權限
如果在設置權限的時候不指定給誰設置,則默認給所有用戶設置

權限字符:
r:讀
w:寫
x:表示執行
-:表示沒有權限

權限分配方式:
+:表示給具體的用戶新增權限(相對當前)
-:表示刪除用戶的權限(相對當前)
=:表示將權限設置成具體的值(注重結果)【賦值】
在這裏插入圖片描述
或者直接賦值:chmod u=rwx,g=rx,o=r linux1.txt

Tip:1.當文檔擁有執行權限(任意部分),則其顏色在終端中是綠色
2.chmod ug=rwx 形式,如果有兩部分(如用戶和用戶組)權限一樣則可以合在一起寫的
3.如果linux1.txt文件什麼權限都沒有,可以使用root用戶設置所有人都有執行權限,則可以寫成
①#chmod +x linux1.txt
②#chmod a=x linux1.txt
③#chmod a+x linux1.txt

2)數字形式

在這裏插入圖片描述
讀:r 4
寫:w 2
執行:x 1

例如:需要給anaconda-ks.cfg設置權限,權限要求所有者擁有全部權限,同組用戶擁有讀執行權限,其他用戶只讀
chmod 754 anaconda-ks.cfg

3)注意事項

在Linux中,如果要刪除一個文件,不是看在文件夾中的文件有沒有對應的權限,而是看文件所在的文件夾是否有寫權限,如果有才可以刪除

3、屬主與屬組設置

屬主:所屬的用戶(文件的主人)
屬組:所屬的用戶組
在這裏插入圖片描述
前面的那個root就是屬主
後面的那個root就是屬組

這兩項信息在文檔創建的時候會使用創建者的信息(用戶名、用戶所屬的主組名稱)。

如果有時候去刪除某個用戶,則該用戶對應的文檔的屬主和屬組信息就需要去修改。

1)chown

作用:更改文檔的所屬用戶
語法:#chown -R username 文檔路徑
文件夾類型-R,文件不用加
在這裏插入圖片描述

2)chgrp

作用:更改文檔的所屬用戶組
語法:chgrp -R groupname 文檔的路徑

也可通過一個命令實現既可以更改所屬的用戶,也可以修改所屬的用戶組
語法:chown -R username:groupname 文檔路徑

4、擴展

問題:reboot、shutdown、init、halt、user管理,在普通用戶身份上都是操作不了,但是有些特殊的情況下又需要有執行權限。又不可能讓root用戶把自己的密碼告訴普通用戶,這個問題該怎麼解決?

該問題是可以被解決的,可以使用sudo(switch user do)命令來進行權限設置。Sudo可以讓管理員(root)事先定義某些特殊命令誰可以執行。

默認sudo中是沒有除root之外用戶的規則,要想使用則先配置sudo。

Sudo配置文件:/etc/sudoers
步驟:

  1. 配置sudo文件使用“#visudo”,打開之後其使用方法和vim一致,要不然就只能是隻讀
  2. 配置普通用戶的權限
    在這裏插入圖片描述
    Root表示用戶名,如果是用戶組,則可以寫成“%組名”
    ALL:表示允許登錄的主機(即地址白名單)
    (ALL):表示以誰的身份執行,ALL表示root身份
    ALL:表示當前用戶可以執行的命令,多個命令可以使用“,”分割

例如:本身test用戶不能添加用戶,要求使用sudo配置,將其設置爲可以添加用戶,並且可以修改密碼(但是不能修改root用戶密碼)
禁止修改root密碼的配置(先允許全部,再拒絕root密碼設置): /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
在這裏插入圖片描述
在添加好對應的規則之後就可以切換用戶,切換到普通用戶test,再去執行
此時要想使用剛纔的規則,則以以下命令進行:sudo 需要執行的指令。
在輸入sudo指令之後需要輸入當前的用戶密碼進行確認的操作(不是root用戶密碼),輸入之後在接下來5分鐘內再次執行sudo指令不需要密碼

注意:

  1. 在寫sudo規則的時候不建議寫直接形式的命令,而是寫命令的完整路徑。 路徑可以使用which命令來查看 語法:which 指令名稱
  2. 在普通用戶下查看自己具有哪些特殊權限:
    sudo -l
    在這裏插入圖片描述

linux的網絡基礎

1、網絡相關命令

1)ping

作用:檢測當前主機與目標主機之間的連通性(不是100%準確,有的服務器是禁ping)
語法:#ping 主機地址(ip地址、主機名、域名等)
**注意:**該命令可以跨平臺,windows下也可以使用,語法一致。(區別在於Linux下默認一直髮送,windows下默認發送4個數據包)

2)netstat

作用:表示查看網絡的連接信息
語法:netstat -tnlp (-t:tcp協議,-n:將字母轉化成數字,-l:列出狀態爲監聽,-p:顯示進程相關信息)
netstat -an (-a:表示全部,-n:將字母轉化爲數字)

TCP/IP協議需要使用這個命令

3)traceroute

作用:查找當前主機與目標主機之間所有的網關(路由器,會給沿途各個路由器發送icmp數據包,路由器可能會不給響應)。
該命令不是內置命令,需要安裝。
語法:traceroute 主機地址

4)arp

地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取(MAC)物理地址的協議
在這裏插入圖片描述
當一個主機發送數據時,首先查看本機MAC地址緩存中有沒有目標主機的MAC地址, 如果有就使用緩存中的結果;如果沒有,ARP協議就會發出一個廣播包,該廣播包要求查詢目標主機IP地址對應的MAC地址,擁有該IP地址的主機會發出迴應,迴應中包括了目標主機的MAC地址,這樣發送方就得到了目標主機的MAC地址。如果目標主機不在本地子網中,則ARP解析到的MAC地址是默認網關的MAC地址

常用語法:arp -a 查看本地緩存mac表
arp -d 主機地址 刪除指定的緩存記錄

5)tcpdump

作用:抓包,抓取數據表
常用語法:
tcpdump 協議 port 端口
tcpdump 協議 port 端口 host 地址
tcpdump -i 網卡設備名

shell基礎

1、shell簡介

       Shell(外殼) 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
       腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯)。
常見的腳本: JavaScript(JS,前端),VBScript, ASP,JSP,PHP(後端),SQL(數據庫操作語言),Perl,Shell,python,Ruby,JavaFX,Lua等
       在linux中有很多類型的shell,不同的shell具備不同的功能,shell還決定了腳本中函數的語法,Linux中默認的shell是/bin/bash(重點),流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特點以及用途

2、shell入門

編寫規範:
代碼規範:
#!/bin/bash [指定告知系統當前這個腳本要使用的shell解釋器]
Shell相關指令
#表示註釋

文件命名規範:
文件名.sh .sh是linux下bash shell 的默認後綴

使用流程:
①創建.sh文件 touch/vim
②編寫shell代碼
③執行shell腳本 腳本必須得有執行權限

案例1:創建test.sh,實現第一個shell腳本程序,輸出hello world.
輸出命令:echo 內容
注意:輸出的內容如果包含字母和符號(不包含變量),則需要用引號包括起來。如果是純數字可以包也可以不包
在這裏插入圖片描述
在這裏插入圖片描述
注意:這裏在運行時一定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也一樣,直接寫 test.sh,Linux 系統會去 PATH(環境變量) 裏尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裏,你的當前目錄通常不在 PATH 裏,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找

腳本執行的另外一個方式:/bin/bash 腳本的路徑
在這裏插入圖片描述

3、shell進階

1)變量

(1)定義與使用

先定義後使用:
定義形如:class_name=“hello”
使用形如:echo $class_name
在使用變量的時候一定需要在變量名前面添加一個$符號
變量名的規範
注意,變量名後面的等號左右不能有空格,同時,變量名的命名須遵循如下規則:

  1. 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭
  2. 中間不能有空格,可以使用下劃線“_”。 不能使用標點符號
  3. 不能使用bash裏的關鍵字(可用help命令查看保留關鍵字)
  4. 關於單雙引號的問題:
    雙引號能夠識別變量,雙引號能夠實現轉義(類似於“*”表示乘號,如果不轉義默認表示通配符)
    單引號是不能識別變量,只會原樣輸出,單引號是不能轉義的
  5. 反引號(esc鍵下方的那個鍵),當在腳本中需要執行一些指令(如下面的date)並且將執行的結果賦給變量的時候需要使用“反引號”
    在這裏插入圖片描述
    在這裏插入圖片描述

(2)只讀變量

語法:readonly 變量名
只讀變量只能賦一次值,隨後再賦值會報錯

(3)接收用戶輸入

語法:read -p 提示信息 變量名

案例:編寫一個腳本test6.sh,要求執行之後提示用戶輸入文件的名稱(路徑),然後自動爲用戶創建該文件
在這裏插入圖片描述

(4)刪除變量

語法:unset 變量名

2)條件判斷語句

  • 語法1(一個條件):
    if condition
    then
    command1
    command2

    fi

單行寫法(一般在命令行中執行的時候):if [ condition ]; then command; fi

  • 語法2(兩個條件):
    if condition
    then
    command1
    command2

    else
    command
    fi

  • 語法3(多個條件):
    if condition1
    then
    command1
    elif condition2
    then
    command2
    else
    commandN
    fi

3)運算符

(1)算數運算符

在這裏插入圖片描述
原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。
expr 是一款表達式計算工具,使用它能完成表達式的求值操作。
例如,兩個數相加(注意使用的是反引號 而不是單引號 '): #!/bin/bash val=expr 2 + 2`
echo “兩數之和爲 : $val”

兩點注意:
表達式和運算符之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,這與我們熟悉的大多數編程語言不一樣。
完整的表達式要被 包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊

執行結果:
在這裏插入圖片描述

(2)關係運算符

關係運算符只支持數字,不支持字符串,除非字符串的值是數字。
下表列出了常用的關係運算符,假定變量 a 爲 10,變量 b 爲 20:
在這裏插入圖片描述
-eq:equal
-ne:not equal
-gt:great than
-lt:less than
-ge:great than or equal
-le:less than or equal

(3)邏輯運算符

下表列出了常用的布爾運算符,假定變量 a 爲 10,變量 b 爲 20:
在這裏插入圖片描述

(4)字符串運算符

下表列出了常用的字符串運算符,假定變量 a 爲 “abc”,變量 b 爲 “efg”:
在這裏插入圖片描述

(5)文件測試運算符

文件測試運算符用於檢測 Unix/Linux 文件的各種屬性。
屬性檢測描述如下:
在這裏插入圖片描述在這裏插入圖片描述
注意:權限幾個判斷,如果只有一個部分符合,則認爲是有權限的。

4)shell腳本附帶選項

問題描述:在linux shell中如何處理tail -10 access.log這樣的命令行選項?
步驟:
調用tail指令
系統把後續選項傳遞給tail
Tail先去打開指定的文件
取出最後10行

問題:自己寫的shell是否也可以像內置命令一樣傳遞一些選項呢?
答:可以的,傳遞方式與上述的描述是一樣的,關鍵是怎麼接收。例如:
傳遞:
#./test.sh a b c
接收:
在腳本中可以用“$1”來表示a,“$2”來表示b,以此類推。

接收可以用“$”加上選項對應的序號即可。

練習:創建自定義指令“user”,可以直接執行,要求該指令具備以下語法和功能:
a. #user -add 用戶名 【添加用戶】
b. #user -del 用戶名 【刪除用戶及其家目錄】
在這裏插入圖片描述
同時題目中要求是指令,所以可以再去添加個別名:
在這裏插入圖片描述

linux軟件包安裝方式

1、源碼包

優點
開源,如果有足夠的能力,可以修改源代碼
編譯安裝,更加適合自己的系統,穩定高效
缺點
安裝步驟較多,容易出錯
編譯過程時間較長

  1. 解壓源碼包

解壓方式:
擴展:解包
常用語法:
#tar -zxvf 後綴必須是*.tar.gz (大多數)
#tar -jxvf 後綴必須是*.tar.bz2
選項含義:
-z或–gzip或–ungzip:通過gzip指令處理文件;
-x或–extract或–get:從文件中還原文件;
-v:顯示操作過程;
-f或–file:指定一個文件;
-j:支持bzip2解壓文件;

  1. 切換到源碼文件夾,然後執行後續操作:
    配置(config/configure/bootstrap文件) → 編譯(make/bootstrapd) → 安裝(make install/bootstrapd install)

配置操作主要是指定軟件的安裝目錄、需要的依賴在什麼地方、指定不需要可選依賴、配置文件的路徑、通用數據存儲位置等等。
指定安裝的路徑:–prefix=路徑
需要依賴的路徑:–with-PACKAGE名=[包所在的路徑]
不需要依賴:–without-PACHAGE名

make && make install—將編譯和安裝放在一起執行

2、二進制包(rpm)

優點: 包管理系統簡單,只需要幾個命令就可以實現包的安裝,升級,查詢和卸載
缺點: 經過編譯,不再可以看到源代碼

rpm相關指令:
#rpm -qa|grep 關鍵詞
#rpm -e 關鍵詞 [–nodeps]
#rpm -ivh 完整名稱
#rpm -Uvh 完整名稱
#rpm -qf 文件路徑 【查詢指定文件屬於哪個包】
在這裏插入圖片描述
案例:使用二進制包安裝lynx(一款純命令行的瀏覽器)
在光盤中就有這個包
在這裏插入圖片描述

3、yum等傻瓜式安裝

centos是yum,unbuntu不是
優點: 安裝簡單,快捷
缺點: 完全喪失了自定義性
注意:如果不更改軟件來源的情況下,是需要聯網才能使用yum的

常用的yum指令:
#yum list [installed] 列出當前已經裝的和可以裝的軟件(全部)
#yum search 名 搜索指定的關鍵詞的包
#yum [-y] install 包名 安裝指定的包(-y表示允許不再確認)
#yum [-y] update [包名] 更新指定的包,不指定包則更新全部軟件
#yum [-y] remove 包名 卸載指定的包

案例:使用yum指令卸載火狐瀏覽器
#yum remove firefox
在這裏插入圖片描述

案例:使用yum指令安裝火狐瀏覽器
#yum install firefox

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章