1. 程式人生 > >Centos 建立一個新使用者 詳細講解

Centos 建立一個新使用者 詳細講解

轉載: http://www.centoscn.com/CentOS/help/2013/0725/597.html

建立一個新使用者

  修改使用者的個人設定

檔案目錄的許可權設定

兩個重要檔案:passwd與group

建立一個新使用者

建立一個新的使用者包括兩個步驟,第一步是使用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的更詳細的說明,請參考下面的修改使用者的個人設定相關內容。

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,可以使用如下命令:

usermod -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的指令碼檔案設定許可權,對所有使用者都可以讀和執行,檔案所有者還允許寫許可,那麼我們可以使用如下命令:

chmod a+rx,u+w *.pl

注意:如果要使用多個訪問字串,它們之間要用逗號隔開,各個許可字串之間不允許有空格。正如上例所示。

如果要修改目錄中所有檔案和子目錄的許可權屬性,可以使用chmod提供的-R引數來遞迴修改。例如,下列命令將/www/site1目錄及其下面的子目錄的許可權屬性設定為所有者和組可讀、寫、執行,其它使用者不可訪問:

chmod -R a+rwx,o-rwd /www/site1

注意,不要輕易使用-R選項,這可能會帶來安全隱患。

使用字串方便了理解,單輸入那麼多字母還是有點累,如果你對8進位制有些概念的話,可以使用下面介紹的方法來做許可權設定。

◆使用八進位制數設定檔案目錄許可權

我們知道,在ls -l的輸出中,檔案許可權表示為“-rw-rw-r--”,前一位只和是否為目錄有關,其它九位正好可以分成三段,每段三位,“rw-”、“rw-”和 “r--”,“-”代表無效“0”,其它字元代表有效“1”,那麼這個檔案的許可權就是“110”、“110”、“100”,把這個2進位制串轉換成對應的8 進位制數就是6、6、4,也就是說該檔案的許可權為664(三位八進位制數)。我們也可以使用類似這種三位八進位制數來設定檔案授權,如上邊兩個例子,就也可以寫 為:

chmod 755 *.pl

chmod -R 770 /www/site1

是不是很簡潔?關鍵在於你能根據你需要設定的許可權正確的選擇八進位制數(利用八進位制數的二進位制表示可以非常輕易的做到這一點)。

◆讀、寫、執行的許可權說明

1、所謂寫的許可權,也就是對檔案修改和刪除的許可權。如果目錄的寫許可權也對你開放了,則可以建立、刪除或修改該目錄下的任何檔案或自目錄——即使該檔案和子目錄並不屬於你。

2、對目錄有隻讀許可的使用者,不能用cd命令進入該目錄;還必須同時有執行許可才可以進入該目錄。

3、必須同時擁有讀和執行許可權才可以使用ls這樣的程式列出目錄內容清單。

4、只對目錄有執行許可權的使用者,想訪問該目錄下的檔案有讀許可權的檔案,必須知道該檔名才可以訪問。

兩個重要檔案:passwd與group

在linux的安全機制裡,/etc/passwd與/etc/group這兩個檔案佔著非常重要的地位。它們控制著linux的使用者和組一些重要設定。

◆/etc/passwd檔案說明

下面是一個RHlinux裡普通的passwd檔案的例子:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:

daemon:x:2:2:daemon:/sbin:

……

operator:x:11:0perator:/root:

games:x:12:100:games:/usr/games:

gopher:x:13:30:gopher:/usr/lib/gopher-data:

ftp:x:14:50:FTP User:/home/ftp:

nobody:x:99:99:Nobody:/:

xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false

named:x:25:25:Named:/var/named:/bin/false

postgres:x:26:26ostgreSQL Server:/var/lib/pgsql:/bin/bash

lanf:x:500:500::/home/hujm:/bin/bash

mysql:x:101:101:MySQL server:/var/lib/mysql:/bin/bash

imnotroot:x:0:0::/home/imnotroot:/bin/bash

在這個檔案裡只有一個普通帳號lanf。其它都是系統或系統服務的程序需要的帳號,包括我們非常熟悉的root這個超級使用者。在passwd的檔案裡,每一行被冒號(":")分成7個部分,分別是:

[使用者名稱]:[密碼]:[UID]:[GID]:[身份描述]:[主目錄]:[登入shell]

其中:

⒈[使用者名稱]是passwd檔案裡各記錄行唯一的有"唯一性"要求的域。也就是說每一行的第一個區域的內容都不能相同,其它區域就無所謂了。

⒉[密碼]區域在以前,儲存著一個經過不可逆的雜湊演算法進行DES加密的13位字元,但不包括單引號和冒號。這13位字元中,前兩位是金鑰,在加密的 時候隨機生成的。由於這個字串不包括單引號,所以以前有一種不修改密碼又禁止使用者登入的方式就是在密碼前面加一個單引號。值得注意的是,現在由於使用了 shadow口令,在密碼區域只有一個x字元。

⒊[UID]雖然是系統用來標誌檔案歸屬,確定各種許可權的標誌,但這個區域的內容並不要求唯一的。比較常見而又與安全問題相關的一個例子是有多個 UID和GID均為0的使用者帳號。注意到在該檔案最後一行還有一個UID和GID為0的使用者imnotroot,雖然它聲稱自己不是root,但是它卻有 和root完全相同的許可權,因為系統並非根據[使用者名稱],而是根據UID和GID來分使用者的權力的。所以,這種情況無疑為系統埋下了安全的炸彈。但是,當 imnorroot做鎖定螢幕等操作的時候,如果它的密碼和root的不一樣,它將無法解鎖,因為系統只是查到第一個UID為0的使用者(自然是root) 後,就不在往下查找了——它當UID也是唯一的。

⒋[GID]使用者預設的組ID,這個ID可以在檔案/etc/group裡查到對應的組名。

⒌[身份描述]:就是使用者的身份說明,預設的是無任何說明,可人工新增。

⒍[主目錄]:使用者的主目錄,可以使用前面介紹的命令修改。

⒎[登入shell]:使用者登入時系統提供的shell,請參考前面的有關內容。

<注意>:[UID]和[GID]小於500的一般都是系統自己保留,不做普通使用者和組的標識的,所以新增加的使用者和組一般都是UID和GID大於500的。

◆/etc/group檔案說明

下面是RH的一個group檔案的例子:

root:x:0:root,hujm,hjm

bin:x:1:root,bin,daemon

daemon:x:2:root,bin,daemon

sys:x:3:root,bin,adm

adm:x:4:root,adm,daemon

tty:x:5:

disk:x:6:root

lp:x:7:daemon,lp

mem:x:8:

kmem:x:9:

wheel:x:10:root

mail:x:12:mail

news:x:13:news

uucp:x:14:uucp

……

hujm:x:503:root,mynoshell,hjm

mysql:x:101:

mynoshell:x:505:

ftpusers:x:506:

它總共分四個部分:

[組名]:[密碼域]:[GID]:[組員列表]

意思非常明顯,需要說明一下的是,由於組一般都不用密碼保護,所以雖然看起來密碼域有個X字元,其實那隻表示使用了SHADOW(對應檔案為 gshadow)。組員列表用逗號分隔各個帳號。另外,一個組的組員如果預設登入組就是它的話,那麼在組員列表裡將不顯示這個組員的帳號,例如用如下命令 增加的使用者:

useradd -g ftpusers floatboat

在/etc/group檔案裡ftpusers的組員列表將不顯示這個組員(真是失敗),而只是在passwd檔案中的GID被設定為506。而使用如下命令:

usermod -G ftpusers,mysql,webusers floatboat

就可以看見相關的組後邊加上了floatboat帳號。當然,你可以直接用vi來直接編輯這個檔案。

group檔案和passwd檔案是通過GID聯絡在一起的,這有點象關係資料庫。根據passwd檔案中一個帳戶的GID,可以在group檔案中 找到對應的組名。如果採用了使用者私有組機制的話,那麼一般新增一個帳號,就會有對應的一個與帳號同名的組增加到group檔案中。雖然這時passwd文 件中具有唯一性的[使用者名稱]欄位和group檔案中具有唯一性的[組名]欄位一樣,並不代表著它們是通過這兩個欄位形成一一對應的關係的。千萬別忘記,系 統對數字(UID,GID)更加敏感^_^。

再有一點應該注意,你統計一個組的組成員的時候,千萬別隻記得看組成員列表哦,還應該查詢預設登入組也是這個組的使用者——它們可不一定在列表裡。

〈提示〉新組的增加可以使用groupadd newgroupname