1. 程式人生 > >Linux系統安全命令

Linux系統安全命令

雖然 Linux 和 Windows NT/2000 系統一樣是一個多使用者的系統,但是它們之間有不少重要的差別。對於很多習慣了 Windows 系統的管理員來講,如何保證 Linux 作業系統安全、可靠將會面臨許多新的挑戰。本文將重點介紹 Linux 系統安全的命令。

passwd

1. 作 用

passwd 命令原來修改賬戶的登陸密碼,使用許可權是所有使用者。

2.格式

passwd [選項] 賬戶名稱

3.主要引數

-l:鎖定己經命名的賬戶名稱,只有具備超級使用者許可權的使用者方可使用。
-u:解開賬戶鎖定狀態,只有具備超級使用者許可權的使用者方可使用。
-x, –maximum=DAYS:最大密碼使用時間(天),只有具備超級使用者許可權的使用者方可使用。
-n, –minimum=DAYS:最小密碼使用時間(天),只有具備超級使用者許可權的使用者方可使用。
-d:刪除使用者的密碼, 只有具備超級使用者許可權的使用者方可使用。
-S:檢查指定使用者的密碼認證種類, 只有具備超級使用者許可權的使用者方可使用。

4.應用例項

從上面可以看到,使用 passwd 命令需要輸入舊的密碼,然後再輸入兩次新密碼。

這裡寫圖片描述

su

1.作用

su 的作用是變更為其它使用者的身份,超級使用者除外,需要鍵入該使用者的密碼。

2.格式

su [選項]… [-] [USER [ARG]…]

3.主要引數

-f , –fast:不必讀啟動檔案(如 csh.cshrc 等),僅用於 csh 或 tcsh 兩種 Shell。
-l , –login:加了這個引數之後,就好像是重新登陸為該使用者一樣,大部分環境變數
(例如 HOME、SHELL 和 USER 等)都是以該使用者(USER)為主,並且工作目錄也會改變。如果沒有指定 USER,預設情況是 root。
-m, -p ,–preserve-environment:執行 su 時不改變環境變數。
-c command:變更賬號為 USER 的使用者,並執行指令(command)後再變回原來使用者。
USER:欲變更的使用者賬號,ARG 傳入新的 Shell 引數。

4.應用例項

變更賬號為超級使用者,並在執行 df 命令後還原使用者。

su -c df root

umask

##1.作用
umask 設定使用者檔案和目錄的檔案建立預設遮蔽值,若將此命令放入 profile 檔案,就可控制該使用者後續所建檔案的存取許可。它告訴系統在建立檔案時不給誰存取許可。使用許可權是所有使用者。
它與chmod的效果剛好相反,umask設定的是許可權“補碼”

2.格式

umask [-p] [-S] [mode]

3.引數

-S:確定當前的 umask 設定。
-p:修改 umask 設定。
[mode]:修改數值。

4.說明

傳統 Unix 的 umask 值是 022,這樣就可以防止同屬於該組的其它使用者及別的組的使用者修改該使用者的檔案。既然每個使用者都擁有並屬於一個自己的私有組,那麼這種“組保護模式 就不在需要了。嚴密的許可權設定構成了 Linux 安全的基礎,在許可權上犯錯誤是致命的。需要

注意的是,umask 命令用來設定程序所建立的檔案的讀寫許可權,最保險的值是 0077,即關閉建立檔案的程序以外的所有程序的讀寫許可權,表示為-rw——-。在~/.bash_profile 中,加上一行命令 umask 0077 可以保證每次啟動 Shell 後, 程序的 umask 許可權都可以被正確設定。

5.應用例項

這裡寫圖片描述
上述 5 行命令,首先顯示當前狀態,然後把 umask 值改為 177,結果只有檔案所有者具有讀寫檔案的許可權,其它使用者不能訪問該檔案。這顯然是一種非常安全的設定。

chgrp

1.作用

chgrp 表示修改一個或多個檔案或目錄所屬的組。使用許可權是超級使用者。

2.格式

chgrp [選項]...組  檔案...      
或
chgrp [選項]... --reference=參考檔案  檔案...

將每個<檔案>的所屬組設定為<組>。

3.引數

-c, –changes :像 –verbose,但只在有更改時才顯示結果。
–dereference:會影響符號連結所指示的物件,而非符號連結本身。
-h,–no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統支援更
改符號連結的所有者,此選項才有效)。
-f, –silent, –quiet:去除大部分的錯誤資訊。
–reference二參考檔案:使用<參考檔案>的所屬組,而非指定的<組>。
-R, –recursive:遞迴處理所有的檔案及子目錄。
-v, –verbose:處理任何檔案都會顯示資訊。

4.應用說明

該命令改變指定指定檔案所屬的使用者組。其中 group 可以是使用者組 ID,也可以是/etc/group檔案中使用者組的組名。檔名是以空格分開的要改變屬組的檔案列表,支援萬用字元。如果使用者不是該檔案的屬主或超級使用者,則不能改變該檔案的組。

5.應用例項

改變/opt/local /book/及其子目錄下的所有檔案的屬組為 book,命令如下:

$ chgrp - R book /opt/local /book

chmod

1.作用

chmod 命令是非常重要的,用於改變檔案或目錄的訪問許可權,使用者可以用它控制檔案或目錄的訪問許可權,使用許可權是超級使用者。

2.格式

chmod 命令有兩種用法。一種是包含字母和操作符表示式的字元設定法(相對許可權設定):
另一種是包含數字的數字設定法(絕對許可權設定)。

(1)字元設定法

chmod [who] [+|- |=] [mode]  檔名
  • 操作物件 who 可以是下述字母中的任一個或它們的組合
    u:表示使用者,即檔案或目錄的所有者。
    g:表示同組使用者,即與檔案屬主有相同組 ID 的所有使用者。
    o:表示其它使用者。
    a:表示所有使用者,它是系統預設值。

  • 操作符號
    +:新增某個許可權。
    -:取消某個許可權。
    二:賦予給定許可權,並取消其它所有許可權(如果有的話)。

  • 設定 mode 的許可權可用下述字母的任意組合
    r:可讀。
    w:可寫。
    x:可執行。
    X:只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加 x 屬性。
    s:檔案執行時把程序的屬主或組 ID 置為該檔案的檔案屬主。方式“u+s”設定檔案的使用者ID 位,“g+s” 設定組 ID 位。
    t:儲存程式的文字到交換裝置上。
    u:與檔案屬主擁有一樣的許可權。
    g:與和檔案屬主同組的使用者擁有一樣的許可權。
    o:與其它使用者擁有一樣的許可權。
    檔名:以空格分開的要改變許可權的檔案列表,支援萬用字元。一個命令列中可以給出多個許可權方式,其間用逗號隔開。

(2) 數字設定法

數字設定法的一般形式為:

  chmod [mode]  檔名

數字屬性的格式應為 3 個 0 到 7 的八進位制數,其頁序是(u)(g)(o)檔名,以空格分開的要改變許可權的檔案列表,支援萬用字元。
數字表示的許可權的含義如下;0001為所有者的執行許可權;0002 為所有者的寫許可權;0004 為所有者的讀許可權;0010 為組的執行許可權;0020 為組的寫許可權;0040 為組的讀許可權;0100 為其他人的執行許可權;0200 為其他人的寫許可權;0400 為其他人的讀許可權;1000 為貼上位置位;2000 表示假如這個檔案是可執行檔案,則為組 ID 為位置位,否則其中檔案鎖定位置位;4000 表示假如這個檔案是可執行檔案,則為使用者 ID 為位置位。

3.例項

如果一個系統管理員建立了一個資料夾10.04,那麼我們最好所有人授權對這個檔案有讀寫許可權,可以使用命令:

井號chmod 777 10.04

上面程式碼中,這個 666 數字是如何計算出來的呢?0001為所有者的執行許可權,0002 為所有者的寫許可權,0004 為所有者的讀許可權,0010為組的可執行許可權,0020 為組的寫許可權,0040 為組的讀許可權,0100為其他的人的執行許可權,0200 為其他人的寫許可權,0400 為其他人的讀許可權,這 6 個數字相加就是 666(注以上數字都是八進位制數),結果見圖 所示。
這裡寫圖片描述

從圖 可以看出,10.04檔案的許可權是wxr-xr-x,即使用者對這個檔案有讀寫許可權。如果用字元許可權設定使用下面命令:

井號chmod a=wxr  10.04

chown

1.作用

更改一個或多個檔案或目錄的屬主和屬組。使用許可權是超級使用者。

2.格式

chown [選項] 使用者或組 檔案

3.主要引數

–dereference:受影響的是符號連結所指示的物件,而非符號連結本身。
-h, –no-dereference:會影響符號連結本身,而非符號連結所指示的目的地(當系統支援更
改符號連結的所有者,此選項才有效)。
–from=目前所有者:目前組只當每個檔案的所有者和組符合選項所指定的,才會更改所有者和組。其中一個可以省略,這己省略的屬性就不需要符合原有的屬性。
-f, –silent, –quiet:去除大部分的錯誤資訊。
-R, –recursive:遞迴處理所有的檔案及子目錄。
-v, –verbose:處理任何檔案都會顯示資訊。

4.說明

chown 將指定檔案的擁有者改為指定的使用者或組,使用者可以是使用者名稱或使用者 ID:組可以是組名或組 ID:檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。系統管理員經常使用 chown 命令,在將檔案拷貝到另一個使用者的目錄下以後,讓使用者擁有使用該檔案的許可權。

5.應用例項

(1).把檔案 shiyan.c 的所有者改為 wan

$ chown wan shiyan.c

(2).把目錄/hi 及其下的所有檔案和子目錄的屬主改成 wan,屬組改成 users。

$ chown - R wan.users /hi

chattr

1.作用

修改 ext2 和 ext3 檔案系統屬性(attribute),使用許可權超級使用者。

2.格式

chattr [-RV] [-+=AacDdijsSu] [-v version]  檔案或目錄

3.主要引數

-R:遞迴處理所有的檔案及子目錄。
-V:詳細顯示修改內容,並列印輸出。
-:失效屬性。
+:啟用屬性。
= :指定屬性。
A:Atime,告訴系統不要修改對這個檔案的最後訪問時間。
S:Sync,一旦應用程式對這個檔案執行了寫操作,使系統立刻把修改的結果寫到磁碟。
a:Append Only,系統只允許在這個檔案之後追加資料,不允許任何程序覆蓋或截斷這個檔案。如果目錄具有這個屬性,系統將只允許在這個目錄下建立和修改檔案,而不允許刪除任何檔案。
i:Immutable,系統不允許對這個檔案進行任何的修改。如果目錄具有這個屬性,那麼任何的程序只能修改目錄之下的檔案,不允許建立和刪除檔案。
D:檢查壓縮檔案中的錯誤。
d:No dump,在進行檔案系統備份時,dump 程式將忽略這個檔案。
C:Compress,系統以透明的方式壓縮這個檔案。從這個檔案讀取時,返回的是解壓之後的資料:而向這個檔案中寫入資料時,資料首先被壓縮之後才寫入磁碟。
s:Secure Delete,讓系統在刪除這個檔案時,使用 0 填充檔案所在的區域。
u:Undelete,當一個應用程式請求刪除這個檔案,系統會保留其資料塊以便以後能夠恢
復刪除這個檔案。

4.說明

chattr 命令的作用很大,其中一些功能是由 Linux 核心版本來支援的,如果 Linux 核心版本低於 2.2,那麼許多功能不能實現。同樣 D 檢查壓縮檔案中的錯誤的功能,需要 2.5. 9 以上核心才能支援。另外,通過 chattr 命令修改屬效能夠提高系統的安全性,但是它並不適合所有的目錄。chattr 命令不能保護/、/dev、/tmp、/var 目錄。

5.應用例項

(1).恢復/root 目錄,即子目錄的所有檔案

 井號chattr -R +u/root

(2).用 chattr 命令防止系統中某個關鍵檔案被修改

在 Linux 下,有些配置檔案(passwd ,fatab)是不允許任何人修改的,為了防止被誤刪除或修改,可以設定該檔案的“不可修改位(immutable) ,命令如下:

井號chattr +i /etc/fstab

sudo

1.作用

sudo 是一種以限制配置檔案中的命令為基礎,在有限時間內給使用者使用,並且記錄到日誌中的命令,許可權是所有使用者。

2.格式

sudo [-bhHpv] [1-] [-u<使用者>] [指令]

3.主要引數

-V 顯示版本編號
-h 會顯示版本編號及指令的使用方式說明
-l 顯示出自己(執行 sudo 的使用者)的許可權
-v 因為 sudo 在第一次執行時或是在 N 分鐘內沒有執行(N 預設為五)會問密碼,這個引數是重新做一次確認,如果超過 N 分鐘,也會問密碼
-k 將會強迫使用者在下一次執行 sudo 時問密碼(不論有沒有超過 N 分鐘)
-b 將要執行的指令放在背景執行
-p prompt 可以更改問密碼的提示語,其中 %u 會代換為使用者的帳號名稱, %h 會顯示主機名稱
-u username/#uid 不加此引數,代表要以 root 的身份執行指令,而加了此引數,可以以 username 的身份執行指令(#uid 為該 username 的使用者號碼)
-s 執行環境變數中的 SHELL 所指定的 shell ,或是 /etc/passwd 裡所指定的 shell
-H 將環境變數中的 HOME (家目錄)指定為要變更身份的使用者家目錄(如不加 -u 引數就是系統管理者 root )command 要以系統管理者身份(或以 -u 更改為其他人)執行的指令

4.說明

sudo 命令的配置在/etc/sudoers 檔案中。當用戶使用 sudo 時,需要輸入口令以驗證使用者身份。隨後的一段時間內可以使用定義好的命令,當使用配置檔案中沒有的命令時,將會有報警的記錄。sudo 是系統管理員用來允許某些使用者以 root 身份執行部分/全部系統命令的程式。一個明顯的用途是增強了站點的安全性,如果需要每天以超級使用者的身份做一些日常工作,經常執行一些固定的幾個只有超級使用者身份才能執行的命令,那麼用 sudo 是非常適合的。

ps

1.作用

ps 顯示瞬間程序 (process) 的動態,使用許可權是所有使用者。

2.格式

ps [options] [--help]

3.主要引數

ps 的引數非常多, 此出僅列出幾個常用的引數。
這裡寫圖片描述

4.說明

要對程序進行監測和控制,首先要了解當前程序的情況,也就是需要檢視當前程序。ps 命令就是最基本、也是非常強大的程序檢視命令。使用該命令可以確定有哪些程序正在執行、執行的狀態、程序是否結束、程序有沒有殭屍、哪些程序佔用了過多的資源等。圖 2 給出了ps-aux 命令詳解。大部分資訊都可以通過執行該命令得到。最常用的三個引數是 u、a、x。下面就結合這三個引數詳細說明 ps 命令的作用:ps aux

這裡寫圖片描述

圖中 第 2 行程式碼中,USER 表示程序擁有者:PID 表示程序標示符:%CPU 表示佔用的CPU 使用率:%MEM 佔用的實體記憶體使用率:VSZ 表示佔用的虛擬記憶體大小:RSS 為程序佔用的實體記憶體值:TTY 為終端的次要裝置號碼。STAT 表示程序的狀態,其中D 為不可中斷的靜止(I/O 動作):R 正在執行中:S 靜止狀態:T 暫停執行:Z 不存在,但暫時無法消除:W 沒有足夠的記憶體分頁可分配:高優先序的程序:N 低優先序的程序:L 有記憶體分頁分配並鎖在記憶體體內 (實時系統或 I/O)。START為程序開始時間。TIME 為執行的時間。COMMAND 是所執行的指令。

4.應用例項

在進行系統維護時,經常會出現記憶體使用量驚人,而又不知道是哪一個程序佔用了大量程序的情況。除了可以使用 top 命令檢視記憶體使用情況之外,還可以使用下面的命令:

ps aux | sort +5n

who

1.作用

who 顯示系統中有哪些使用者登陸系統,顯示的資料包含了使用者 ID、使用的登陸終端、上線時間、呆滯時間、CPU 佔用,以及做了些什麼。 使用許可權為所有使用者。

2.格式

who - [husfV] [user]

3.主要引數

這裡寫圖片描述

4.說明

該命令主要用於檢視當前在線上的使用者情況。如果使用者想和其它使用者建立即時通訊,比如使用 talk 命令,那麼首先要確定的就是該使用者確實在線上,不然 talk 程序就無法建立起來。又如,系統管理員希望監視每個登入的使用者此時此刻的所作所為,也要使用 who 命令。who 命令應用起來非常簡單,可以比較準確地掌握使用者的情況,所以使用非常廣泛。