(總結一)Linux指令學習

文章目錄


from:https://download.csdn.net/download/u011436427/11803165

一、Linux簡介

1.Linux特點

  • 支持多種平臺、
  • 可靠的安全穩定性能、
  • 豐富的網絡功能、
  • 良好的界面、
  • 多用戶、
  • 多任務,
  • 完全兼容POSIX1.0標準、
  • 完全免費

2.Linux的組成

  • 內核
  • 系統基本庫
  • 應用程序
  • Linux內核版本:Linux發行版可以自由選擇使用某個版本的內核
    在這裏插入圖片描述
    在這裏插入圖片描述
    3.Linux發行版本
    (1)Linux發行版本構成
  • Linux內核 + 各種自由軟件 = 完整的操作系統
  • 廠商提供的輔助安裝、軟件包管理等程序

(2)發行版的名稱、版本由發行廠商決定

  • Red Hat Enterprise Linux 6,由Red Hat公司發佈
    是世界上使用最多、應用範圍最廣的Linux,七RPM軟件包格式是Linux社區的一個事實標準,是Linux Torvalds正在使用的Linux操作系統
  • Suse Linux 11,由Novell公司發佈
  • Debian Linux 6.0,由Debian社區發佈
  • Ubuntu Linux
  • Turbolinux
  • Fedora Core社區版

二、Shell的基本應用

1.Shell的命令概述

(1)Shell的作用:命令的解釋器,“翻譯官”
介於操作系統內核與用戶之間。負責解釋命令行
在這裏插入圖片描述
(2)Shell的作用及常見種類
在這裏插入圖片描述
(3)Shell環境的切換

  • 登錄Shell

指用戶每次登錄系統後自動加載的Shell程序,大多數Linux系統採用 /bin/bash 作爲默認登錄;
/etc/shells文件記錄了系統支持的有效登錄Shell;

  • 如何切換Shell環境

臨時切換:直接執行其他Shell程序,例如ksh、zsh等;
更改用戶登錄Shell:需修改 /etc/passwd 文件中用戶記錄的最後一個字段;
或執行:usermod -s Shell程序路徑 用戶名;
usermod -s /bin/bash root;

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh 

2.Linux命令的分類

(1)Linux命令

用於實現某一類功能的指令或程序
命令的執行依賴於解釋器程序(例如:/bin/bash)

(2)Linux命令的分類

內部命令:屬於Shell解釋器的一部分
外部命令:獨立於Shell解釋器之外的程序文件

(3)Linux命令的通用命令格式

  • 命令字 [選項] [參數]
  • 選項及參數的含義
    選項:用於調節命令的具體功能
    參數:命令操作的對象,如文件、目錄名等

以 “-”引導短格式選項(單個字符),例如“-l”
以“–”引導長格式選項(多個字符),例如“–color”
多個短格式選項可以寫在一起,只用一個“-”引導,例如“-al”

[root@localhost ~]# ls  -l   /home
總計 8
drwx------ 2 benet benet 4096 09-08 08:50 benet

(4)Linux命令行的幾個輔助操作:Tab,反斜槓,Ctrl U,Ctrl K,Ctrl L,Ctrl C

Tab鍵:自動補齊
反斜槓“\”:強制換行
快捷鍵 Ctrl+U:清空至行首
快捷鍵 Ctrl+K:清空至行尾
快捷鍵 Ctrl+L:清屏
快捷鍵 Ctrl+C:取消本次命令編輯

(5)獲得命令幫助

  • 內部命令help
    查看Bash內部命令的幫助信息
  • 命令的“–help” 選項
    適用於大多數外部命令
    使用man命令閱讀手冊頁
  • 使用“↑”、“↓”方向鍵滾動文本
    使用Page Up和Page Down鍵翻頁
  • 按Q或q鍵退出閱讀環境、按“/”鍵後查找內容
    使用info命令閱讀信息頁

三、目錄和文件操作命令

1.文件,目錄,文件內容,壓縮命令總結

  • 目錄操作命令
pwd、cd、ls、mkdir、du(統計目錄及文件的空間佔用)
  • 文件操作命令
touch(創建一個空文件)、file(查看文件類型)
cp、rm、mv
which(查找Linux命令文件並顯示所在的位置)、find(用於查找文件或目錄)、ln(爲文件或目錄建立鏈接)
  • 文件內容操作命令
cat、more、less
head、tail、wc、grep
  • 歸檔及壓縮命令
gzip、bzip2、tar

2.目錄操作命令:pwd,cd,ls,mkdir,du

(1)pwd命令
用途:查看工作目錄(Print Working Directory)

(2)cd命令
用途:切換工作目錄(Change Directory)
格式:cd [目錄位置]

[root@localhost ~]# cd /etc/httpd                            絕對路徑
[root@localhost httpd]# cd conf								
[root@localhost conf]# cd ~benet						相對路徑
[root@localhost benet]# pwd
/home/benet
[root@localhost zhangsan]# ls -dl ../jerry							相對路徑
drwx------ 2 jerry jerry 4096 09-14 21:50 ../jerry

(3)ls命令

  • 用途:列表(List)顯示目錄內容

  • 格式:ls [選項]… [目錄或文件名]

  • 常用命令選項

-l :以長格式顯示
-a:顯示所有子目錄和文件的信息,包括隱藏文件
-d:顯示目錄本身的屬性
-A:類似於“-a”,但不顯示“.”和“…”目錄的信息
-h:以更易讀的字節單位(K、M等)顯示信息
-R:遞歸顯示內容
–color:以顏色區分不同類型文件
在這裏插入圖片描述
解釋:
Shell中的兩種通配符;
alias:對於經常使用的複雜命令行,通過命令別名可以大大提高輸入效率;
單獨執行alias命令可以查看當前用戶環境中已經定義好的命令別名

(4)mkdir命令
用途:創建新的目錄(Make Directory)
格式:mkdir [-p] [/路徑/]目錄名

[root@localhost ~]# mkdir -p mydir/level1/level2
[root@localhost ~]# ls -R mydir
mydir:
level1
mydir/level1:
level2
mydir/level1/level2:

(5)du命令

  • 用途:統計目錄及文件的空間佔用情況(estimate file space usage)

  • 格式:du [選項]… [目錄或文件名]

  • 常用命令選項

-a:統計時包括所有的文件,而不僅僅只統計目錄
-h:以更易讀的字節單位(K、M等)顯示信息
-s:只統計每個參數所佔用空間總的大小

[root@localhost ~]# du -sh /etc/httpd/
184K    /etc/httpd/
  • du命令的“-s”、“-h”選項通常結合在一起使用,以統計指定文件夾總佔用空間的大小

3.文件操作命令:touch,file,cp,rm,mv,which,find,ln

(1)touch命令
用途:新建空文件,或更新文件時間標記
格式:touch 文件名…

(2)file命令
用途:查看文件類型
格式: file 文件名…

[root@localhost ~]# touch  file1.txt  file2.doc
[root@localhost ~]# ls  file*
file1.txt    file2.doc
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for ……
  • 創建空文件的操作主要用於系統管理過程中的調試、測試目的
  • file命令則可以用於檢測指定文件的實際類型

(3)cp命令
用途:複製(Copy)文件或目錄
格式:cp [選項]… 源文件或目錄… 目標文件或目錄
常用命令選項

-r:遞歸複製整個目錄樹
-p:保持源文件的屬性不變
-f:強制覆蓋目標同名文件或目錄
-i:需要覆蓋文件或目錄時進行提醒

(4)rm命令

  • 用途:刪除(Remove)文件或目錄
  • 格式:rm [選項]… 文件或目錄
  • 常用命令選項

-f:強行刪除文件或目錄,不進行提醒
-i:刪除文件或目錄時提醒用戶確認
-r:遞歸刪除整個目錄樹

  • 使用“rm -rf 目錄名”的形式可以不經提示即直接刪除整個目錄樹,應慎用

(5)mv命令

  • 用途:移動(Move)文件或目錄
    —— 若如果目標位置與源位置相同,則相當於改名

  • 格式:mv [選項]… 源文件或目錄… 目標文件或目錄

  • 如果目標位置與源位置相同,則效果相當於爲文件或目錄改名

  • 若需要移動的是多個文件或目錄時,則目標必須是目錄

(6)which命令
用途:查找Linux命令文件並顯示所在的位置
—— 搜索範圍由 PATH 環境變量指定
格式:which 命令或程序名

[root@localhost ~]# which  mkdir
/bin/mkdir
[root@localhost ~]# echo  $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# which  cd
/usr/bin/which: no cd in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

注:cd是Shell內部命令,因此查不到對應文件

  • 執行“echo $PATH”可以查看PATH變量指定的內容

(7)find命令

  • 用途:用於查找文件或目錄
  • 格式:find [查找範圍] [查找條件]
  • 常用查找條件

-name:按文件名稱查找
-size:按文件大小查找
-user:按文件屬主查找
-type:按文件類型查找

  • 缺省查找範圍時,將使用當前目錄作爲查找範圍
  • 詳細講解find查找工具的相關用法,主要包括:

按名稱查找:關鍵字爲“-name”,根據目標文件的部分名稱查找,允許使用“*”及“?”通配符。

按文件大小查找:關鍵字爲“-size”,根據目標文件的大小進行查找,一般使用“+”、“-”號設置超過或小於指定的大小作爲查找條件。常用的容量單位包括k(注意是小寫)、M、G。

按文件屬主查找:關鍵字爲“-user”,根據文件是否屬於目標用戶進行查找。

按文件類型查找:關鍵字爲“-type”,根據文件的類型進行查找,這裏的類型指的是普通文件(f)、目錄(d)、塊設備文件(b)、字符設備文件(c)等。塊設備指的是成塊讀取數據的設備(如硬盤、內存等),而字符設備指的是按單個字符讀取數據的設備(如鍵盤、鼠標等)

(8)ln命令
用途:爲文件或目錄建立鏈接(Link)
格式:ln [-s] 源文件或目錄… 鏈接文件或目標目錄

常用命令選項

-s:建立符號鏈接文件(省略此項則建立硬鏈接)

關於鏈接文件

符號鏈接:指向原始文件所在的路徑,又稱爲軟鏈接
硬鏈接:指向原始文件對應的數據存儲位置;
不能爲目錄建立硬鏈接文件
硬鏈接與原始文件必須位於同一分區(文件系統)中

4.文件內容操作命令:cat,more,less,head,less,wc,grep

(1)cat命令

  • 用途:顯示出文件的全部內容
[root@localhost ~]# cat  /etc/host.conf
order hosts,bind
[root@localhost ~]# cat  /etc/resolv.conf
search localdomain
[root@localhost ~]# cat  /etc/resolv.conf  /etc/host.conf
search localdomain
order hosts,bind
  • 文件內容操作命令都需要使用文本文件的名稱作爲命令參數(或者通過管道操作獲取文本內容)
  • cat命令本來用於連接多個文件的內容,但在實際使用中更多的用於查看文件內容
  • 當文件內容較多時,使用cat命令往往只能看到文件的最後一部分內容,而無法分頁逐屏顯示,若要分頁顯示,需要使用另外兩個命令:more、less

(2)more命令
用途:全屏方式分頁顯示文件內容
交互操作方法:

按Enter鍵向下逐行滾動
按空格鍵向下翻一屏、按b鍵向上翻一屏
按q鍵退出

(3)less命令
用途:與more命令相同,但擴展功能更多
交互操作方法:

與more命令基本類似,但個別操作會有些出入
more命令結合管道操作使用時(例如:ls -R /etc | more)無法向上翻頁,但less命令可以
在分頁閱讀界面中,到文件末尾時more命令會自動退出,less命令不會

(4)head命令
用途:查看文件開頭的一部分內容(默認爲10行)
格式:head -n 文件名

(5)tail命令
用途:查看文件結尾的少部分內容(默認爲10行)
格式:tail -n 文件名
tail -f 文件名

[root@localhost ~]# tail -2 /var/log/messages
Sep 8 15:49:29 localhost scim-bridge: Cleanup, done. Exitting…
Sep 8 15:49:29 localhost Cleanup, done. Exitting…

  • tail命令結合“-f”選項使用時,可以用於跟蹤日誌文件末尾的內容變化,實時顯示更新的日誌內容

(6)wc命令
用途:統計文件中的單詞數量(Word Count)等信息
格式:wc [選項]… 目標文件…

常用命令選項

-l:統計行數
-w:統計單詞個數
-c:統計字節數
在這裏插入圖片描述
(7)grep命令
用途:在文件中查找並顯示包含指定字符串的行
格式:grep [選項]… 查找條件 目標文件

常用命令選項

-i:查找時忽略大小寫
-v:反轉查找,輸出與查找條件不相符的行

查找條件設置

要查找的字符串以雙引號括起來
“^……”表示以……開頭
“……$ ”表示以……結尾
“^$”表示空行

eg:演示1:過濾出hosts文件中的非註釋行(不以”#“號開頭的行)

[root@localhost ~]# grep -v "^#" /etc/hosts
127.0.0.1       localhost.localdomain   localhost
::1     localhost6.localdomain6 localhost6

演示2:查找系統啓動時識別的USB總線信息

[root@localhost ~]# dmesg | grep "USB"
drivers/usb/input/hid-core.c: v2.6:USB HID core driver

4.歸檔及壓縮命令:gzip,bzip2,tar

(1)gzip命令、bzip2命令

  • 用途:製作壓縮文件、解開壓縮文件

  • 格式:gzip [-9] 文件名…
    bzip [-9] 文件名…
    gzip -d .gz格式的壓縮文件
    bzip2 -d *.bz2格式的壓縮文件

  • 常用命令選項

-9:表示高壓縮比,多在創建壓縮包時用
-d:用於解開已經壓縮過的文件

  • 這兩個命令工具通常並不單獨使用,而是與tar命令結合起來使用
  • 通常認爲bzip2的壓縮效率要更好一些

(2)tar命令

  • 用途:製作歸檔文件、釋放歸檔文件

  • 格式:tar [選項]… 歸檔文件名 源文件或目錄
    tar [選項]… 歸檔文件名 [-C 目標目錄]

  • 常用命令選項

-c:創建 .tar 格式的包文件
-x:解開.tar格式的包文件
-v:輸出詳細信息
-f:表示使用歸檔文件
-p:打包時保留原始文件及目錄的權限
-t:列表查看包內的文件
-C:解包時指定釋放的目標文件夾
-z:調用gzip程序進行壓縮或解壓
-j:調用bzip2程序進行壓縮或解壓
在這裏插入圖片描述

  • 製作歸檔文件的意思是將許多零散的文件做成一個包(可以壓縮,也可以不壓縮)
  • 小寫字母“-p”選項用於保持原始文件權限等信息,大寫字母“-P”選項用於保持原始文件的絕對路徑

四、Bash的常用功能

1.Bash的命令歷史

(1)命令歷史
保存用戶曾經執行過的命令操作
存放位置:~/.bash_history 文件

(2)查看歷史命令

[root@localhost root]# history
……
556  useradd  jerry
557  passwd  jerry
558  crontab  -e  -u  jerry
559  crontab  -l  -u  jerry

(3)調用歷史命令
!n:執行歷史記錄中的第n條命令
!str:執行歷史記錄中以“str”開頭的命令

(4)設置記錄歷史命令的條數
修改 HISTSIZE 參數(默認爲1000條)

[root@localhost root]# !562
crontab -l -u jerry
no crontab for jerry
[root@localhost ~]# vi /etc/profile
HISTSIZE=200
  • 正確使用歷史命令可以有效提高命令行輸入的效率,例如:如果之前不久執行過“service network restart”命令,則重新修改了網卡的配置文件以後,通常只需要執行“!ser”操作即可調用該歷史命令,以重啓network服務
  • 合理控制歷史命令的條數可以提高安全性,root用戶的命令歷史一般建議設置爲少於100條

2.Bash的命令別名

(1)命令別名
爲使用頻率較高的複雜命令行設置簡短的調用名稱
存放位置:~/.bashrc

(2)查看命令別名

[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
……
  • 手動使用alias命令設置的別名只在當前Shell環境中有效
  • 若需每次登錄Shell環境時設置的別名都有效,需要修改宿主目錄中的“.bashrc”文件,添加相應別名設置

3.正則表達式

(1)正則表達式(regular expression)就是用一個“字符串”來描述一個特徵,然後去驗證另一個“字符串”是否符合這個特徵。比如 表達式“ab” 描述的特徵是“一個 ‘a’ 和 任意多個 ‘b’ ,那麼 ‘ab’, ‘abb’, ‘abbbbbbbbbb’ 都符合這個特徵。

(2)表達式可以用來:

(1)驗證字符串是否符合指定特徵,比如驗證是否是合法的郵件地址。
(2)用來查找字符串,從一個長的文本中查找符合指定特徵的字符串,比查找固定字符串更加靈活方便。
(3)用來替換,比普通的替換更強大。

(3)基本的正則表達式
在這裏插入圖片描述

(4)創建正則表達式

行以 “Test”or”test”開頭:
^[tT]est

行以 “end.”結尾:
end\.$

整行是: This is a test. :
^This is a test\.$

以下任意名稱:file5,file6,file7,file8 :
file[5678]

以下任意名稱:file2,file4,file6,file8 :
file[2468]

(5)創建grep命令
使用grep命令查找 /etc/passwd 文件中的字符串:

打印以字母 r 開頭的所有的用戶名
打印以字母 g 開頭的所有的用戶名
打印其 shells (最後一列) 爲 /sbin/nologin的所有賬戶
打印 UID or GID (第三或第四列) 爲 0 的所有賬戶
打印 UID or GID 在 10-19 之間的所有賬戶

   1. 	grep  ‘^r’  /etc/passwd 
   2. 	grep ‘^g’  /etc/passwd 
   3. 	grep ‘/sbin/nologin$’   /etc/passwd 
   4.  grep ‘:0:’   /etc/passwd 
   5.  grep ‘:1[0-9]:’   /etc/passwd 

4.管道和重定向

(1)重定向允許將標準輸出或錯誤消息從程序重定向到文件, 以進行保存或稍後分析,或禁止其在終端顯示。還可以通過文件而非鍵盤將輸入讀取至命令行程序

管道允許叫標準輸出信息從程序連接至另一個程序的輸入,每個程序作用於前一個程序的輸出。

(2)交互式硬件設備

標準輸入:從該設備接收用戶輸入的數據
標準輸出:通過該設備向用戶輸出數據
標準錯誤:通過該設備報告執行出錯信息
在這裏插入圖片描述

  • Linux系統是使用文件來描述系統的硬件、設備等資源的(例如已經學習過的硬盤、分區、光盤等)

(3)改變標準輸入、標準輸出、標準錯誤的方向

  • 在實際的Linux操作過程中,也可以變更輸入輸出內容的方向,而並不使用默認的標準輸入輸出設備(鍵盤和顯示器),這種操作稱爲“重定向”

在這裏插入圖片描述

  • eg:輸出重定向實例
將標準輸出重定向到文件
$ ls /etc/ > etcdir

將標準輸出重定向追加到文件
$ ls /etc/sysconfig/ >> etcdir 

將錯誤輸出重定向到文件
$ nocmd 2> errfile

將標準輸出和錯誤輸出重定向到文件
$ ls afile bfile &> errfile

(4)Bash的管道操作

  • 管道操作符號“|”
    連接左右兩個命令,將左側的命令輸出的結果,作爲右側命令的輸入(處理對象)
    格式:cmd1 | cmd2 [… | cmdn]
    在這裏插入圖片描述

  • awk命令用於以空格或製表位作爲分隔,輸出指定區域的字段數據,例如 ‘{print $2,$4}’ 表示只輸出第2、4個字段的數據內容

  • eg:

1. 列出 /usr/share/doc 中以數字4結尾的文件. 
	ls  /usr/share/doc  I  grep ‘4$’ 
	
2. 打印 /etc/hosts 中包含數字的所有行 
	grep  ‘[0-9]’   /etc/hosts 
	
3. 打印 /etc/hosts 中包含 127.0.0.1 的行
		grep  ‘127\.0\.0\.1’   /etc/hosts
		
4. 以 student用戶運行以下命令, 
   並將 STDOUT重定向到/tmp/output . txt 
   將 STDERR 重定向到 /tmp/error .txt:       
    find /etc -name host*
	find  /etc -name ‘host*’> /tmp/output.txt 2> /tmp/error.txt 

5. 以 student用戶身份運行以下命令, 並將 STDOUT 和 STDERR重定向到 / tmp/all.txt 文件. 
    find /etc -name host*
	find /etc -name host* >&  /tmp/all.txt

6. 排列 /etc/passwd 文件,並將其發送到默認打印機
	cat /etc/passwd | sort | lpr

7. 打印 /etc/passwd 中冒號之間是三位數的行
grep ‘:[0-9][0-9][0-9]:’ /etc/passwd 

五、文本編輯器概述

1.文本編輯器概述

(1)文本編輯器的作用

創建或修改文本文件
維護Linux系統中的各種配置文件

(2)Linux中最常用的文本編輯器

vi:類Unix系統中默認的文本編輯器
vim:vi編輯器的增強版本,習慣上也稱爲vi

在這裏插入圖片描述

  • 配置文件是Linux系統中的顯著特徵之一,其作用有點類似於Windows系統中的註冊表
  • 對配置文件的管理和維護需要使用文本編輯器
  • vim是vi編輯器的增強版本,但是習慣上也將vim稱作vi ,可以建立vi到vim的命令別名,以方便使用

2.vi文本編輯器的工作模式

(1)三種工作模式
命令模式、輸入模式、末行模式

(2)不同模式之間的切換
在這裏插入圖片描述

1)命令模式:啓動vi編輯器後默認進入命令模式,該模式中主要完成如光標移動、字符串查找,以及刪除、複製、粘貼文件內容等相關操作
2)輸入模式:該模式中主要的操作就是錄入文件內容,可以對文本文件正文進行修改、或者添加新的內容。處於輸入模式時,vi編輯器的最後一行會出現“-- INSERT --”的狀態提示信息
3)末行模式:該模式中可以設置vi編輯環境、保存文件、退出編輯器,以及對文件內容進行查找、替換等操作。處於末行模式時,vi編輯器的最後一行會出現冒號“:”提示符

(3)命令行模式下的光標移動

  • 常用的操作鍵(能夠迅速提高文本編輯效率),其餘的有個印象就可以了
    在這裏插入圖片描述
    (4)命令行模式下的複製、粘貼、刪除
    在這裏插入圖片描述
    (5)命令行模式下的文件內容查找
    在這裏插入圖片描述
    (6)命令行模式下的撤銷編輯以及保存退出
    在這裏插入圖片描述

(7)末行模式中的保存文件及退出vi編輯器
在這裏插入圖片描述
(8)末行模式中的打開新文件或者讀入其他文件內容
在這裏插入圖片描述
(9)末行模式中的文件內容替換
在這裏插入圖片描述

六、用戶和組管理

1.Linux基於用戶身份對資源訪問進行控制

(1)用戶賬號

超級用戶root
普通用戶
程序用戶

(2)組帳號

基本組(私有組)
附加組(公共組)

(3)UID和GID

UID(User Identity,用戶標識號)
GID(Group Identify,組標識號)

  • 超級用戶,即root用戶,類似於Windows系統中的Administrator用戶,非執行管理任務時不建議使用root用戶登錄系統
  • 普通用戶帳號一般只在用戶自己的宿主目錄中有完全權限
  • 程序用戶:用於維持系統或某個程序的正常運行,一般不允許登錄到系統。例如:bin、daemon、ftp、mail等
  • root用戶的UID的固定值爲0、root組帳號的GID號爲固定值0
  • 1~499的UID、GID默認保留給程序用戶使用,普通用戶/組使用的UID、GID號在500~60000之間

2.用戶帳號文件 —— passwd

(1)用於保存用戶的帳號基本信息

文件位置:/etc/passwd
每一行對應一個用戶的帳號記錄

[root@localhost ~]# tail -2 /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
student:x:500:500:Student User:/home/student:/bin/bash

 字段1:用戶帳號的名稱
 字段2:用戶密碼字串或者密碼佔位符“x”
 字段3:用戶帳號的UID號
 字段4:所屬基本組帳號的GID號
 字段5:用戶全名
 字段6:宿主目錄
 字段7:登錄Shell信息

3.用戶帳號文件 —— shadow

(1)用於保存密碼字串、密碼有效期等信息

文件位置:/etc/shadow
每一行對應一個用戶的密碼記錄

[root@localhost ~]# tail -2 /etc/shadow
sabayon:!!:15495:0:99999:7:::
student:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:15495:0:99999:7:::

 字段1:用戶帳號的名稱
 字段2:加密的密碼字串信息
 字段3:上次修改密碼的時間,從1970年01月01日(可理解爲Unix系統的誕生日)算起到最近一次修改密碼時間隔的天數 
 字段4:密碼的最短有效天數,默認值爲0
 字段5:密碼的最長有效天數,默認值爲99999
 字段6:提前多少天警告用戶口令將過期,默認值爲7
 字段7:在密碼過期之後多少天禁用此用戶
 字段8:帳號失效時間,默認值爲空
 字段9:保留字段(未使用)
  • 默認只有root用戶能夠讀取文件中的內容,並且不允許root直接編輯該文件中的內容
  • 上次修改密碼的時間,表示從1970年01月01日(可理解爲Unix系統的誕生日)算起到最近一次修改密碼時間隔的天數

4.添加用戶帳號——useradd

(1)useradd命令
格式:useradd [選項]… 用戶名

(2)常用命令選項

-u:指定 UID 標記號
-d:指定宿主目錄,缺省爲 /home/用戶名
-e:指定帳號失效時間
-g:指定用戶的基本組名(或UID號)
-G:指定用戶的附加組名(或GID號)
-M:不爲用戶建立並初始化宿主目錄
-s:指定用戶的登錄Shell

(3)eg:
——創建名爲st02的用戶帳號,並將其UID號指定爲504
[root@localhost ~]# useradd -u 504 st02
[root@localhost ~]# tail -1 /etc/passwd
st02: x:504:504::/home/st02:/bin/bash

(4)
——創建一個考試測試用的帳號exam01,指定屬於users組,該帳號於2009-07-30失效
[root@localhost ~]# useradd -g users -e 2009-07-30 exam01

  • 說明:使用adduser命令也可以添加用戶帳號,在RHEL5系統中adduser命令實際上是useradd命令的符號鏈接

(5)用戶帳號的初始配置文件

  • 文件來源
    新建用戶帳號時,從 /etc/skel 目錄中複製而來
  • 主要的用戶初始配置文件
    .bashrc文件中默認設置了一些命令別名
    默認情況下,用戶宿主目錄下的初始配置文件只對當前用戶有效,而全局配置文件對所有用戶有效
~/.bash_profile:用戶每次登錄時執行
~/.bashrc:每次進入新的Bash環境時執行
~/.bash_logout:用戶每次退出登錄時執行

[root@localhost ~]# cat ~/.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
……

5.設置/更改用戶口令——passwd

(1)passwd命令
格式:passwd [選項]… 用戶名

  • 常用命令選項
-d:清空用戶的密碼,使之無需密碼即可登錄
-l:鎖定用戶帳號
-S:查看用戶帳號的狀態(是否被鎖定) 
-u:解鎖用戶帳號
  • “未設置密碼”的用戶帳號尚未完成初始化,處於不可登錄狀態,這與“空密碼”的情況(已經爲用戶設置密碼,但密碼字串爲空)是不同的
    —— “未設置密碼”的用戶將被禁止登錄系統,而擁有“空密碼”的用戶是可以在本地終端登錄的
  • 普通用戶也可以使用passwd命令,但只能更改自己的密碼,密碼要求有一定的複雜性(如不要直接使用英文單詞,長度保持在6位以上),否則系統可能拒絕進行設置
  • 被鎖定的帳號也將無法登錄系統

6.修改用戶帳號的屬性——usermod

(1)usermod命令
格式:usermod [選項]… 用戶名

  • 常用命令選項
-l:更改用戶帳號的登錄名稱
-L:鎖定用戶賬戶
-U:解鎖用戶賬戶
以下選項與useradd命令中的含義相同
 -u、-d、-e、-g、-G、-s
  • usermod有兩個選項“-L”、“-U”,分別用於鎖定、解鎖用戶帳號,這兩個選項與passwd命令的“-l”、“-u”選項作用基本相同,只不過大小寫存在區別

7.刪除用戶帳號——userdel

(1)userdel命令
格式:userdel [-r] 用戶名
添加 -r 選項時,表示連用戶的宿主目錄一併刪除
在這裏插入圖片描述

8.改變用戶密碼期限

(1)chage命令
格式:chage [選項]… 用戶帳號名

常用命令選項

-M:密碼的最長有效天數
-m:密碼的最短有效天數
-W:密碼的警告天數
-I:密碼的有效天數
-E:密碼的過期時間

9.組帳號文件 — group、gshadow

(1)與用戶帳號文件相類似
/etc/group:保存組帳號基本信息
/etc/gshadow:保存組帳號的密碼信息
在這裏插入圖片描述
(2)/etc/gshadow文件的應用極少

  • group文件內的最後一個字段中列出屬於該組的用戶成員,多個成員之間以逗號“,”分隔

10.添加組帳號——groupadd

(1)groupadd命令
格式:groupadd [-g GID] 組帳號名

  • 使用groupadd命令可以添加一個組帳號,需要指定GID號時,可以使用“-g”選項
    在這裏插入圖片描述

11.添加、刪除組成員——gpasswd

(1)gpasswd命令
用途:設置組帳號密碼(極少用)、添加/刪除組成員
格式:gpasswd [選項]… 組帳號名

(2)常用命令選項

  • 使用“-M”選項時可以爲指定組帳號定義成員列表(注意:會覆蓋原有組成員),需要添加多個用戶到指定的組中時非常方便
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm
[root@localhost ~]# gpasswd -d root market
正在將用戶“root”從“market”組中刪除
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,adm

[root@localhost ~]# gpasswd -a benet market
正在將用戶“benet”加入到“market”組中
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet
[root@localhost ~]# gpasswd -M benet,root,adm market
[root@localhost ~]# grep "market" /etc/group
market:x:1000:benet,root,adm

12.刪除組帳號——groupdel

(1)groupdel命令
格式:groupdel 組帳號名

[root@localhost ~]# groupdel market
[root@localhost ~]# grep "market" /etc/group
[root@localhost ~]#
  • 刪除組帳號後,從/etc/group文件中將查不到相應的記錄

13.用戶和組帳號查詢——id,groups,finger

(1)id命令
用途:查詢用戶身份標識
格式:id [用戶名]

(2)groups命令
用途:查詢用戶所屬的組
格式:groups [用戶名]

(3)finger命令
用途:查詢用戶帳號的詳細信息
格式:finger [-l] [用戶名]

(4)users、w 、who命令
用途:查詢已登錄到主機的用戶信息

14.圖形化的用戶和組管理工具

(1)打開方式:
“系統”->“管理”->“用戶和組羣”

15.文件/目錄的權限和歸屬

(1)訪問權限和歸屬權限

  • 訪問權限

讀取:允許查看文件內容、顯示目錄列表
寫入:允許修改文件內容,允許在目錄中新建、移動、刪除文件或子目錄
可執行:允許運行程序、切換目錄

  • 歸屬(所有權)

屬主:擁有該文件或目錄的用戶帳號
屬組:擁有該文件或目錄的組帳號

(2)查看文件/目錄的權限和歸屬

  • “-rw-r—r–”部分的第一個字符表示文件類型,可以是d(目錄)、b(塊設備文件)、c(字符設備文件),減號“-”(普通文件)、字母“l”(鏈接文件)等
  • 其餘部分指定了文件的訪問權限
  • 在表示屬主、屬組內用戶或其他用戶對該文件的訪問權限時,主要使用了四種不同的權限字符: r 可讀 ;w 可寫 ;x 可執行 ;- 無權限
  • r、w、x、- 權限字符還可分別表示爲8進制數字4、2、1、0
    在這裏插入圖片描述

(3)設置文件/目錄的權限——chmod

  • chmod命令

  • “nnn”爲需要設置的具體權限值,如“755”、“644”等
    在這裏插入圖片描述

  • 常用命令選項
    -R:遞歸修改指定目錄下所有文件、子目錄的權限

  • eg:

—— 重新設置mymkdir文件的權限,爲屬主用戶添加執行權限,去除其他用戶的讀取權限
[root@localhost ~]# chmod u+x,o-r mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr----- 1 root root 29588 05-12 06:19 mymkdir

—— 重新設置mymkdir文件的訪問權限,恢復爲“rwxr-xr-x”
[root@localhost ~]# chmod 755 mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr-xr-x 1 root root 29588 05-12 06:19 mymkdir 

—— 使用遞歸的方式將“/usr/src/”目錄中所有子目錄、文件的權限都設置爲“rw-r--r--”
[root@localhost ~]# chmod -R 644 /usr/src/
  • eg:使用chmod命令設置文件權限
查看文件權限
$ ls -l afile
-rw-rw-r--  1 st01 class1 0 Apr  3 16:52 afile

增加文件屬主st01的執行權限(x)
$ chmod u+x afile

去除文件屬組class1的寫權限(w)
$ chmod g-w afile

設置屬主權限爲讀寫,屬組其他用戶的文件權限爲讀
$ chmod 644 afile 

(4)設置文件/目錄的歸屬——chown

  • chown命令
    格式:chown 屬主的文件或目錄
    chown :屬組的文件或目錄
    chown 屬主:屬組的文件或目錄

  • 需要設置文件或者目錄的歸屬時,可以通過chown、chgrp命令進行

  • chown命令既可以修改屬主,也可以修改屬組,而chgrp命令只用於修改屬組信息(因此並不常用)

  • 常用命令選項
    -R:遞歸修改指定目錄下所有文件、子目錄的歸屬

  • eg:chown命令用於設置文件的屬主和屬組

命令格式
chown OWNER[:[GROUP]] FILE... 

設置文件afile的屬主爲用戶st01
# chown st01 afile 

設置文件afile的屬組爲用戶組class1
# chown :class1 afile

設置文件afile的屬主爲st03,並設置文件的屬組爲class2
# chown st03:class2 afile 

(5)使用附加權限——設置SET位、粘滯位權限

  • 主要用途:

爲可執行(有 x 權限的)文件設置,權限字符爲“s”
其他用戶執行該文件時,將擁有屬主或屬組用戶的權限

  • SET位權限類型:

SUID:表示對屬主用戶增加SET位權限
SGID:表示對屬組內的用戶增加SET位權限
如果SGID是設定在目錄上面,則在該目錄內所建立的文件或目錄的所屬組,將會自動成爲此目錄的所屬組。

  • 普通用戶並沒有權限修改“/etc/shadow”文件,那爲什麼可以修改自己的登錄密碼呢?
    —— 這是因爲:passwd命令程序被設置了SUID權限,普通用戶在執行該命令時臨時獲得相當於屬主用戶(root)的權限

  • 不要輕易爲可執行文件設置SET位權限,特別是對於那些屬主、屬組是root的執行程序,使用SET位權限時更應該慎重。

  • 例如,若爲vim編輯器程序設置SUID權限,將導致普通用戶也可以使用vim編輯器修改系統中的任何配置文件

(2)eg:

  • /usr/bin/passwd
    在這裏插入圖片描述
  • / home/cnrts
    在這裏插入圖片描述
    (3)粘滯位權限(Sticky)
  • 主要用途:

爲公共目錄(例如,權限爲777的)設置,權限字符爲“t”
用戶不能刪除該目錄中其他用戶的文件

  • eg:/tmp、/var/tmp
    在這裏插入圖片描述
  • 由於系統及服務程序運行的需要, Linux提供了/tmp、/var/tmp等臨時目錄,允許任意用戶、程序寫入數據
  • 然而試想一下,若任意一個普通用戶都能夠刪除系統服務運行中使用的臨時文件,將造成什麼後果?
  • 設置粘滯位以後,正好可以保持一種動態的平衡:允許各用戶在目錄中任意寫入、刪除數據,但是禁止隨意刪除其他用戶的數據

(4)設置SET位、粘滯位權限

  • 使用權限字符
 chmod  ug±s  可執行文件...
 chmod  o±t  目錄名...

使用權限數字:

 chmod  mnnn  可執行文件...
 m爲4時,對應SUID,2對應SGID,1對應粘滯位,可疊加
  • eg:

SET位標記字符爲“s”,若使用8進制數字形式,則SUID對應爲“4”、SGID對應爲“2”

在權限模式中可採用“nnnn”的形式時,如“4755”表示設置SUID權限、“6755”表示同時設置SUID、SGID權限

以 /bin/touch 命令設置SUID權限爲例進行演示,普通用戶使用該命令創建測試文件,比較新建文件的屬主變化
注意:爲普通文件(無執行權限的)設置SET位權限從語法上雖然也可行,但沒有實際意義(標記字符將變爲大寫字母“S”)

通過實例操作演示,展示粘滯位的作用,例如:由普通用戶1在 /tmp 目錄中嘗試刪除 普通用戶2的文件,對比是否設置粘滯位的區別

注意:爲普通文件或者用戶本沒有寫入權限的目錄設置粘滯位語法上也是可行的,但沒有實際意義(標記字符將變爲大寫字母“T”)

16.文件ACL權限

(1)ACL是 Access Control List 的縮寫,主要的目的是在提供傳統的owner,group,others的read,write,execute權限之外的細部權限設定。

(2)ACL可以針對單一使用者,單一文件或目錄來進行r,w,x的權限規範,對於需要特殊權限的使用狀況非常有幫助。

(3)ACL 主要可以針對以下方面來控制權限:

  • 使用者 (user):可以針對使用者來設定權限;
  • 組羣 (group):針對用戶組爲對象來設定其權限;
  • 預設屬性 (mask):還可以針對在該目錄下在建立新文件/目錄時,規範新數據的預設權限

(3)

查看:
   		$ getfacl filename 
修改 :
		$ setfacl -m u:username:rw filename 
		$ setfacl -m g:groupname:rw filename
刪除 :
		$ setfacl -x u:username filename

(4)tune2fs是linux下面重要的文件系統調整工具,其中的幾個選項解釋如下:
-c:表示文件系統在mount次數達到設定後,需要運行fsck檢查文件系統。
-i:文件系統的檢查間隔時間。系統在達到時間間隔時,自動檢查文件系統。
-l:顯示文件系統的很多參數。
-j:轉換爲ext3文件系統。
-m: Set the percentage of reserved filesystem blocks。 設置保留的空間百分比
-o: Set or clear the indicated default mount options in the filesystem.設置默認加載參數
通常如果使用ext3文件系統的話,使用-c 0關掉mount次數達到後的文件系統檢查。

tune2fs -m 10 /dev/sda1
tune2fs -o acl,user_xattr /dev/sda1
tune2fs -i 0 -c0 /dev/sda1

顯示當前的磁盤狀態(dumpe2fs)

[root@tonykorn97 /]# dumpe2fs /dev/sda1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章