liunx 使用者管理
建立一個新的使用者包括兩個步驟,第一步是使用useradd指令完成一個新使用者的初始化設定工作;第二步是用passwd為這個新使用者設定密碼。例如,我們要給系統添加一個使用者叫floatboat,密碼為fan2001z,那相關的操作是:
useradd floatboat
這時候系統沒有任何顯示。接着:
passwd floatboat
系統顯示:
Changing password for user floatboat
New UNIX password:
你輸入:
fan2001z
注意,由于linux并不采用類似windows的密碼回顯(顯示為*号)――為避免你輸入密碼時被人注意到有多少位――是以,輸入的這些字元你是看不見的。
系統顯示:
Retype new UNIX password:
你再重新輸入一次密碼,然後回車确認,這時系統會顯示:
passwd:all authentication tokens updated successfully
表示你修改密碼成功了。
到這裡,新使用者的建立工作就算完成了。下面,我們再補充一些有關增加新使用者的常識:
1、useradd所做的初始化操作已經包括在/home目錄下為floatboat帳号建立一個名為floatboat的主目錄。如果你不想使用這個預設的目錄,而希望把他的主目錄放在/home/goal裡(還放在/home下,隻是一種良好的習慣,沒有其他什麼特别的要求),可以使用useradd的參數-d,指令如下:
useradd -d /home/goal floatboat
2、useradd的初始化操作還包括為使用者單獨建立一個與使用者名同名的組(floatboat組)。這叫使用者私有組的機制,與預設組機制相對應。對使用者分組一是友善管理,二是可以明确權限。複雜的我們将在以後的深入内容中探讨。我們如果想讓此使用者加入一個已有的組的話,可以使用-g參數。例如我們想讓floatboat加入webusers組,那麼可以使用以下指令:
useradd -g webusers floatboat
同樣的,我們還可以使用-G參數使他同時加入多個組,例如webusers和ftpusers:
useradd -G ftpusers,webusers floatboat
3、passwd指令為一個使用者設定密碼,但它實質上是一個修改密碼的程式。隻有超級使用者和使用者自己可以修改密碼,其它的普通使用者沒有給他修改密碼的權利。使用者密碼的組成要盡量的複雜,最好包括字母、數字和特殊符号,而且最好設成6位以上。太短passwd程式不允許,隻是單純的字母或單純的數字,passwd也會有意見。你都會看見passwd出現的提示的,不要害怕,仔細看看到底它是怎麼說的:)
4、你在增加一個新使用者的時候,也可以設定使用者登入的shell。預設的,系統提供了/bin/bash。你如果非要指定的話,可以使用-s 參數就可以了。例如
useradd -d /www -s /usr/bin/passwd floatboat
注意,這些參數是可以一塊使用的,如上例所示,它表示增加新使用者,并把其主目錄路徑設定在/www,登入的shell為/usr/bin/passwd。關于shell的更詳細的說明,請參考下面的修改使用者的個人設定相關内容。
建立一個和ROOT一樣的使用者
useradd -u 0 -o -g 0 floatboat 這樣就有一個和ROOT一樣的使用者了
-u -g 都是0級 即ROOT 級 -O 是允許有相同的ID 也可以使用usemod 中同樣的參數即其它的參數了。這樣就可以利用下面介紹的方法(pam.d/ssh)禁止ROOT使用者遠端登陸了
5、删除一個使用者可以使用userdel指令,直接帶使用者名做參數就可以了。
修改使用者的設定
對現有使用者的修改,比較常用的主要是修改密碼(使用passwd就好了),修改使用者的登入shell,修改使用者所屬的預設組,設定帳号有效期,修改使用者的說明資訊等等,偶爾也會用到修改使用者主目錄。
修改使用者的登入shell
使用chsh指令可以修改自己的shell,隻有超級使用者才能用chsh username為其它使用者修改shell設定。注意,指定的shell必須是列入/etc/shells檔案中的shell,否則該使用者将不能登陸。
一般,比較常見的shells檔案包括下面這些shell:
/bin/bash2
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
而網管們還喜歡在裡面加上/usr/bin/passwd,這是為了不然使用者通過控制台或telnet登入系統,卻可以使用修改帳戶密碼(比如在FTP裡用)。以及/bin/false,也就是不讓這個使用者登入的意思喽^&^,連FTP也不能用。
你也可以使用usermod指令修改shell資訊,如下所示:
usermod -s /bin/bash floatboat
其中/bin/bash和floatboat應取相應的shell路徑檔案名及使用者名。
還有一種情況,就是你為使用者設定了一個空的shell(就是""),也就是說,這個使用者沒有shell。呵呵,絕對沒有在我還未曾見過,因為這種使用者登入後,系統還是會給它一個shell用的。不信你試試:
usermod -s "" floatboat
這種使用者根據系統的不同,會有一個sh或bash進行操作,我也沒有看出功能上和其它普通使用者登入有什麼不同。
修改使用者所屬的預設組
這個功能也可以通過usermod指令來實作,使用-g參數,例如把floatboat的預設組改為nobody,可以使用如下指令:
username -g nobody floatboat
nobody在類UNIX系統中一般都意味着沒有任何權限。
設定帳号有效期
如果使用了影子密碼,則可以使用如下指令來修改一個帳号的有效期:
usermod -e MM/DD/YY username
例如把使用者floatboat的有效期定為2001年12月31日:
usermod -e 12/31/01 floatboat
如果把該使用者的有效期設為已經過去的時間,就可以暫時禁止該使用者登入系統。
修改使用者的說明資訊
修改使用者的說明資訊,最簡單的方法莫過于直接修改/etc/passwd檔案,找到對應的使用者記錄行,例如下列行:
floatboat:x:503:503::/home/floatboat:/bin/bash
你可以直接在第四個冒号和第五個冒号之間插入該使用者的說明就可以了。其實,很多使用者設定都可以在這修改,比如該行最後一部分/bin/bash就是使用者登入shell的設定。關于這個/etc/passwd檔案,我們後面将進一步的深入探讨。
修改使用者主目錄
修改使用者的主目錄主要使用usermod指令的-d參數,例如:
usermod -d /www floatboat
這一行将floatboat的主目錄改到/www。如果想将現有主目錄的主要内容轉移到新的目錄,應該使用-m開關,如下所示:
usermod -d -m /www floatboat
檔案目錄的權限
linux下,每一個檔案、每一個目錄都有一個屬主,并針對使用者自己、使用者所在組、其它所有帳号(組)分别設定讀、寫、執行三種權限。例如,我(假定是webusers組的floatboat帳戶的擁有者)使用如下指令建立一個新的檔案
touch mytestfile
然後我們使用ls -l mytestfile這一指令來檢視這個檔案的權限狀态(關于ls指令,可以查閱本站的指令查詢),可以得到如下的螢幕輸出顯示:
-rw-rw-r-- 1 floatboat webusers 0 Feb 6 21:37 mytestfile
輸出由空格分為9個部分,我們比較關心第一、三、四個字段,分别表示檔案權限屬性、檔案所有者帳戶、檔案所屬組。
◆使用chown指令修改檔案的主人
當你建立立一個檔案的時候,檔案的所有者當然就是你了。這一事實隻有超級使用者(比如說root)才可以通過chown指令改變(例如 chown otheruser mytestfile,把mytestfile檔案的屬主改為otheruser)。普通使用者不能把自己的檔案“送”給别人,不然你把有特殊目的的程式給了root怎麼辦?:)
chown指令的用法比較簡單。這裡我先假設你現在擁有超級使用者權限,那麼你就可以使用如下指令将一個檔案“送給”floatboat了:
chown floatboat /home/floatboat/thefileisrootcreate.txt (假定該檔案是由root建立的)
修改一個目錄的所有者也是類似的:
chown floatboat /home/newboat
當然,如果這個目錄還有子目錄及檔案需要同時送給floatboat,chown也是支援-R參數的:
chown -R floatboat /home/newboat
如果你同時想修改檔案/目錄所屬的組的話,你可以使用以下指令友善的達到目的:
chown -R floatboat.ftpusers /home/newboat
這樣,不但檔案主人得到了修改,檔案所屬的組也變成了ftpusers
◆ 修改檔案的組屬性
檔案所屬組你倒是可以改變,前提是:
1、你的超級使用者。
2、你同時屬于兩個或兩個以上的組。
兩個條件你至少具備一個,你才能夠把檔案所屬舊組變為新組。使用如下的指令将目前目錄下所有html檔案所屬的組改為httpd:
chgrp httpd *.html
和chown指令一樣,chgrp也可以使用-R參數對一個目錄内的所有檔案和子目錄進行遞歸的修改組屬性。
:你可以使用不帶參數的groups指令檢視自己屬于哪個組。
檔案權限的設定是我們這一小節讨論的核心,我們主要介紹chmod指令的兩種用法。
◆使用通路字元串設定檔案目錄權限
正如前面所說的,每一個檔案、目錄都針對使用者自己、使用者所在組、其它所有帳号(組)分别有讀、寫、執行三種權限及其組合。當一個普通使用者建立一個檔案的時候,它預設的通路權限顯示就如我們剛才所舉例子的第一個字段所示。總共十位字元“-rw-rw-r--”,第一位是目錄區分标志,如果是d的話,表示這是一個目錄。第二到四位分别表示檔案所有者的讀(r:read)、寫(w:write)、執行(x:execute)屬性,第五到七位是檔案所屬組的讀、寫、執行權限,第八到第十位則是其它使用者的讀、寫、執行權限。如果對應的位是相應的字母,就是有這相應權限,否則為“-”,表示沒有獲得這個許可。象剛才例子中的檔案就是自己可讀寫,本組可讀寫,其它使用者可讀,所有的使用者(包括自己)都不能執行它。
我們的用u、g、o分别來指代使用者(user)、組(group)、其它帳戶(other),就可以友善的設定檔案和目錄的權限了。當然,我們也可以用a來表示所有的這三項。
例如,我們要對所有perl的腳本檔案設定權限,對所有使用者都可以讀和
ROOT權限控制
Linux是目前比較流行的網絡伺服器作業系統,它繼承了UNIX系統安全、穩定、高效等優點。在Linux系統中Root擁有最高權限,正因如此攻擊者往往以擷取Root權限為目标。作為管理者如何有效地對Root進行有效管理呢?本文将從權限控制的角度,提供幾個安全技巧。
示範環境