在Linux 系統(tǒng)中,所有的用戶和組像一個國家。如果國家要繁榮昌盛的話,需要治理得當(dāng),需要有主席或者總統(tǒng),以及地方官員和老百姓組成。在linux 中如果你對安全需求比較苛刻,完全可以限制用戶的各種行為,不同用戶的權(quán)限是不同的。
在linux中系統(tǒng)中,它并不認(rèn)識帳號名稱。它認(rèn)識的是我們的帳號ID,帳號ID保存在/etc/passwd文件中。我們在登錄linux主機(jī)時,在輸入完帳號和密碼時,linux會先查找/etc/passwd文件中是否有這個帳號,如果沒有則跳出,如果有的話,他會讀取該帳號的user ID和group ID同時該帳號的根目錄和shell也讀了出來。然后在去核對密碼表,在/etc/shadow中找出我們剛剛輸入的帳號和userID,核對我們輸入密碼是否正確。一切正確我們可以登錄到當(dāng)前用戶shell。那么,我們首先了解一下用戶帳號文件。
用戶管理一般需要知道 /etc/passwd /etc/shadow /etc/group
add by warden2010 20100104
1./etc/passwd我們使用more查看一下這個文件
我們首先看第一行root這一行,一共有七項,每一項使用:分開,他們代表的意思如下:
帳號名稱:帳號名稱由于對應(yīng)用戶ID,這個是系統(tǒng)默認(rèn)用戶root超級管理員,在同一個系統(tǒng)帳號名稱是唯一的,長度根據(jù)不同的linux系統(tǒng)而定,一般是8位。
密碼:由于系統(tǒng)中還有一個/etc/shadow文件用于存放加密后的口令,所以在這里這一項是“x”來表示,如果用戶沒有設(shè)置口令,則該項為空。
用戶ID:這個是系統(tǒng)內(nèi)部用于來識別不同的用戶的,不同的用戶識別碼不同,其中用戶ID有以下幾種:
0代表系統(tǒng)管理員,如果你想建立一個系統(tǒng)管理員的話,可以建立一個普通帳戶,然后將該賬戶的用戶ID改為0即可。
1-500系統(tǒng)預(yù)留的ID,500以上是普通用戶使用。
組ID:其實這個和用戶ID差不多,用來規(guī)范群組,他與/etc/group有關(guān)。
描述信息:這個字段幾乎沒有什么作用,只是用來解釋這個帳號的意義。
用戶根目錄:就是用戶登錄系統(tǒng)的起始目錄,用戶登錄系統(tǒng)后將首先進(jìn)入該目錄。root用戶默認(rèn)的是/root,普通用戶的是/home/用戶名。
用戶登錄shell:就是用戶登錄系統(tǒng)時使用的shell,關(guān)于shell我們會在以后專門的研究一下。
2./etc/shadow
在早期的unix操作系統(tǒng)中,用戶的帳號信息和口令信息都保存在passwd文件中,盡管系統(tǒng)已經(jīng)對口令進(jìn)行了加密,并且以密文的方式保存在passwd文件中,但是由于passwd文件對于系統(tǒng)中的所有用戶是可讀的,口令比較容易破解,存在較大的安全隱患。現(xiàn)在使用“shadow”文件保存密文的用戶口令,使用passwd文件保存用戶帳號其它信息。“shadow”文件只有管理員用戶才可以讀取其中的內(nèi)容。由于這個文件可能被破解,所以一定不要將該文件內(nèi)容泄露給他人,保證系統(tǒng)安全。
同樣,我們還是分析第一行,一共有九項,分別說明一下:
帳戶名稱:和passwd對應(yīng),和passwd的意思相同。
密碼:這才是真正的密碼,并且已經(jīng)加密過了,只能看到一些特殊符號。需要注意的是這些密碼很難破解,但是不等于不能。還有密碼欄的第一個字符為“*”表示這個用戶不用來登錄,如果那個用戶不想讓他登錄了,可以在他前面加個星。
上次改動密碼的日期:這段記錄了改動密碼的最后日期,為什么是13798呢?這是因為linux計算日期的方法是以1970年1月1日作為1,1971年1月1日就是366,依次類推到我修改密碼的日期表示為13798了。
密碼不可被改動的天數(shù):由于害怕密碼被人盜取而危害到整個系統(tǒng)的安全,所以安排了這個字段,你必須在這個時間內(nèi)重新修改密碼,否則這個帳號將暫時失效。上面的99999,表示密碼不需要重新輸入,最好設(shè)定一段時間修改密碼。確保系統(tǒng)安全。
密碼變更期期限快到前的警告期:當(dāng)帳號的密碼失效期限快到時,系統(tǒng)依據(jù)這個字段的設(shè)定發(fā)出警告,提醒用戶“再過n天您的密碼將過期,請盡快重新設(shè)定密碼。默認(rèn)的是七天。
帳號失效期:如果用戶過了警告期沒有重新輸入密碼,使得密碼失效,而該用戶在這個字段限定的時間內(nèi)又沒有向管理員反映,讓帳號重新啟用,那么這個帳號將暫時失效。
帳號取消日期:這個日期跟第三個字段一樣,都是使用1970年以來的日期設(shè)定方法。這個字段表示:這個帳號在此字段規(guī)定的日期之后將無法再使用。這個字段通常用于收費服務(wù)系統(tǒng)中,可以規(guī)定一個日期讓該帳號不能再使用。
保留:最后一個字段是保留的,看以后有沒有新功能加入。
3. /etc/group查看一下這個文件
我們還是分析第一行,一共有四項,依次為:
群組名稱:就是群組的名稱了。
群組密碼:通常不需設(shè)定,因為我們很少使用群組登錄。不過這個密碼也被記錄在/etc/gshadow中了。
群組ID:也就是組ID了。
支持帳號的名稱:這個群組的所有帳號。如果你想讓用戶qiuri也屬于root這個群組,就在第一行最后加上“,qiuri”注意添加的時候沒有空格。
4. adduser添加用戶
如果沒有特殊的要求,通常我們使用adduser 用戶名稱直接創(chuàng)建用戶帳號。例如我們創(chuàng)建qiuri帳戶:
由于一般新創(chuàng)建的帳號都會在剛才我們說的三個文件的最后一行添加一行內(nèi)容,我們驗證一下:
我們使用這條命令是通過/etc/login.defs和/etc/default/useradd這兩個默認(rèn)帳號設(shè)定文件來實現(xiàn)創(chuàng)建用戶的。
這個文件中我們有必要了解一下,SKEL這個選項,用戶的根目錄內(nèi)容是從/etc/skel這個目錄下復(fù)制過去的。在手動添加用戶的時候有用。查看一下這個目錄下的內(nèi)容:
這條命令還有好多的參數(shù)舉例幾個,供大家參考一下:
adduser [-u uid][-g group][-d home][-s shell]
-u:直接給出userID -g:直接給出GID
-d:直接將根目錄建立在已存在目錄 -s:定義shell
5.passwd設(shè)置用戶密碼
默認(rèn)的情況下,在添加完用戶后并沒有設(shè)置用戶的密碼,因此建立的用戶帳號即使存在也不能登陸系統(tǒng)。需要使用passwd命令對用戶帳號設(shè)置密碼才可以用于登陸系統(tǒng)。這條命令分為管理員給用戶修改密碼和用戶自己登錄系統(tǒng)自己修改密碼。
管理員root給用戶修改密碼,例如:創(chuàng)建用戶qiuri,然后設(shè)置密碼
管理員給用戶設(shè)置密碼以命令passwd [用戶名]來設(shè)置密碼,在輸入密碼的過程中為了避免輸入錯誤,將連續(xù)輸入兩次。如果兩次輸入的密碼相同,表示輸入的密碼正確,同時將密碼以加密的方式保存到了shadow文件中。設(shè)置完以后我們可以使用用戶qiuri登錄。qiuri用戶自己修改一下密碼。
. 增加一個新用戶
以下是操作一些具體的語法,可以通過man useradd 查看幫助命令
在Linux系統(tǒng)中,只有root用戶才能夠創(chuàng)建一個新用戶,如下的命令將新建一個登錄名user1的用戶。
# useradd user1
但是,這個用戶還不能夠登錄,因為還沒給它設(shè)置初始密碼,而沒有密碼的用戶是不能夠登錄系統(tǒng)的。在默認(rèn)情況下,將會在/home目錄下新建一個與用戶名相同的用戶主目錄。如果需要另外指定用戶主目錄的話,那么可以使用如下命令:
# useradd -d /home/xf user1
同時,該用戶登錄時將獲得一個Shell程序:/bin/bash,而假如你不想讓這個用戶登錄,也就可以指定該用戶的Shell程序為:/bin/false,這樣該用戶即使登錄,也不能夠執(zhí)行Linux下的命令:
# useradd -s /bin/false user1
在Linux中,新增一個用戶的同時會創(chuàng)建一個新組,這個組與該用戶同名,而這個用戶就是該組的成員。如果你想讓新的用戶歸屬于一個已經(jīng)存在的組,則可以使用如下命令:
# useradd -g user user1
這樣該用戶就屬于user組的一員了。而如果只是想讓其再屬于一個組,那么應(yīng)該使用:
# useradd -G user user1
完成了這一操作后,你還應(yīng)該使用passwd命令為其設(shè)置一個初始密碼。
2. 刪除一個用戶
刪除用戶,只需使用一個簡單的命令“userdel 用戶名”即可。不過最好將它留在系統(tǒng)上的文件也刪除掉,你可以使用“userdel -r 用戶名”來實現(xiàn)這一目的。
3. 修改用戶屬性
在前面我們看到了在新建一個用戶的時候如何指定它的用戶主目錄,如何指定它的Shell,如何設(shè)置它所屬的組…等等。在Linux中提供了一個命令來實現(xiàn):
usermod -g組名 -G 組名 -d 用戶主目錄 -s 用戶Shell
還有一種直接的方法,那就是修改/etc/passwd文件,在這個文件中每個用戶占用一行,它的內(nèi)容為:
用戶名:密碼:用戶ID:組ID:用戶全名:用戶主目錄:用戶Shell
不過值得注意的是,密碼這一項通常是用一個*號代替的,你是看不到的。
4. 增加一個組
還記得Linux的文件可以為同組的人、非同組的人設(shè)置不同的訪問權(quán)限嗎?我們可以根據(jù)自己的需要創(chuàng)建用戶組:
groupadd 組名
5. 刪除一個組
同樣的,我們有時會需要刪除一個組,它的命令就是groupdel 組名。
6. 修改組成員
如果我們需要將一個用戶加入一個組,只需編輯/etc/group文件,將用戶名寫到組名的后面。例如將newuser用戶加入到softdevelop組,只需找到softdevelop這一行:
softdevelop:x:506:user1,user2
然后在后面加上newuser,形成:
softdevelop:x:506:user1,user2,newuser
另外,在Red Hat Linux中還提供一個圖形化的用戶管理工具:userconf,通過它可以更直接地進(jìn)行用戶管理。