雖然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
Changing password for user cao.
Changing password for cao
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
從上面可以看到,使用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文件,就可控制該用戶後續所建文件的存取許可。它告訴系統在創建文件時不給誰存取許可。使用權限是所有用戶。
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.應用實例
umask -S
u=rwx,g=rx,o=rx
umask -p 177
umask -S
u=rw,g=,o=
上述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.實例
如果一個系統管理員寫了一個表格(tem)讓所有用戶填寫,那麼必須授權用戶對這個文件有讀寫權限,可以使用命令:#chmod 666 tem
上面代碼中,這個666數字是如何計算出來的呢?0002為所有者的寫權限,0004為所有者的讀權限,0020為組的寫權限,0040為組的讀權限, 0200為其他人的寫權限,0400為其他人的讀權限,這6個數字相加就是666(注以上數字都是八進制數),tem文件的權限是-rw-rw-rw-,即用戶對這個文件有讀寫權限。
如果用字符權限設定使用下面命令:
#chmod a =wx tem