官术网_书友最值得收藏!

2.2 Linux賬號管理

Linux賬號管理是Linux系統(tǒng)管理員的一個(gè)重要工作,具體來說,涉及賬號的添加、刪除和修改等操作。從賬號類型來說,Linux用戶按照使用方式分為三種:一是根用戶,二是系統(tǒng)用戶,三是普通用戶。

2.2.1 新增和刪除用戶

1.新增用戶:useradd

useradd命令用于添加新的用戶。其使用方式很簡單,通常情況下可直接在該命令后跟上新增的用戶名。比如,需要新建一個(gè)叫john的用戶,直接輸入命令useradd john即可。但是對于系統(tǒng)來說,完成這個(gè)命令需要在后臺執(zhí)行很多對用戶來說毫無感知的行為。

[root@localhost ~]# useradd john

首先,系統(tǒng)需要將用戶信息記錄在/etc/passwd中,一般會(huì)在/etc/passwd和/etc/shadow末尾追加一條記錄,同時(shí)會(huì)分配給該用戶一個(gè)UID。

接著,要為該用戶自動(dòng)創(chuàng)建家目錄。家目錄以創(chuàng)建的用戶名為目錄名,創(chuàng)建的路徑在/home目錄中。比如,在上述案例中,創(chuàng)建的目錄將是/home/john。

然后,復(fù)制/etc/skel下所有的文件至/home/john。說明一下,如果你使用ls-l /etc/skel命令查看,可以發(fā)現(xiàn)這個(gè)目錄下“什么都沒有”,但事實(shí)上,該目錄下面有很多隱藏文件,使用命令ls-la /etc/skel就可以看到其中還是有好幾個(gè)文件的。

最后,新建一個(gè)與該用戶名一樣的用戶組,也就是說當(dāng)創(chuàng)建用戶john的時(shí)候,也同時(shí)創(chuàng)建了一個(gè)叫john的用戶組,而用戶john默認(rèn)屬于john用戶組(關(guān)于用戶組的概念將在下一節(jié)中講到)。

這里需要對/etc/skel目錄做一些說明。系統(tǒng)在添加用戶時(shí),需要預(yù)先為這個(gè)用戶創(chuàng)建一些默認(rèn)的“配置文件”,而默認(rèn)配置的就是/etc/skel目錄下的幾個(gè)隱藏文件。可以說,/etc/skel實(shí)際上是創(chuàng)建用戶時(shí)的“模板”。

做一個(gè)小實(shí)驗(yàn),實(shí)驗(yàn)過程如下所示:

[root@localhost ~]# cd /etc/skel/
[root@localhost skel]# touch TempFile
[root@localhost skel]# useradd john01
[root@localhost skel]# cd /home/john01/
[root@localhost john]# ls-l
total 0
-rw-r--r-- 1 john john 0 Oct 25 23:41 TempFile

也就是說,手工在/etc/skel中創(chuàng)建一個(gè)文件TempFile(touch命令就是創(chuàng)建文件的命令),然后再添加用戶john01時(shí),在家目錄/home/john01中也會(huì)同樣發(fā)現(xiàn)這個(gè)文件。這說明其實(shí)在創(chuàng)建用戶后,會(huì)將/etc/skel中的所有文件直接復(fù)制過來。

在使用useradd添加用戶時(shí),系統(tǒng)會(huì)給該用戶自動(dòng)分配一個(gè)UID,但是也可以通過使用-u參數(shù)實(shí)現(xiàn)指定UID,當(dāng)然,必須要指定的UID不與其他用戶沖突才可以。下面的例子就創(chuàng)建了一個(gè)UID為555的賬號:

[root@localhost skel]# useradd-u 555 user1

既然可以指定新創(chuàng)建用戶的UID,也應(yīng)該可以指定GID吧?答案是肯定的,使用-g參數(shù)可以做到這點(diǎn)。下面就是創(chuàng)建用戶user2時(shí),指定了該用戶所屬的Group是user1。

[root@localhost skel]# useradd-g user1 user2

還可以使用-d參數(shù)指定該用戶的家目錄,而不是使用系統(tǒng)默認(rèn)創(chuàng)建的家目錄。像下面這樣就可以指定/home/mydir3作為user3用戶的家目錄:

[root@localhost skel]# useradd-d /home/mydir3 user3

useradd命令還有很多其他一些并不常用的參數(shù),具體的參數(shù)和說明可以使用命令man useradd獲得幫助。

2.修改密碼:passwd

創(chuàng)建用戶后,該用戶實(shí)際上還沒有登錄系統(tǒng)的權(quán)限,因?yàn)樵诓辉O(shè)置密碼的情況下,在/etc/shadow中該用戶記錄中以冒號分隔的第二列將顯示為兩個(gè)感嘆號“!!”,這說明不允許該用戶登錄系統(tǒng)。因此,需要同時(shí)設(shè)置用戶的密碼才行,設(shè)置命令是passwd后接用戶名,如下所示:

[root@localhost skel]# passwd john
Changing password for user john.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

這里輸入兩遍需要設(shè)置的密碼即可。如果不輸入密碼而是直接按回車鍵兩次,密碼會(huì)設(shè)置失敗,如果輸入了太過簡單的密碼,系統(tǒng)將會(huì)顯示“BAD PASSWORD: it is too simplistic/systematic”。雖然系統(tǒng)會(huì)提示密碼太過簡單,但還是會(huì)接受其作為該用戶的密碼。

普通用戶也可以使用passwd來修改自己的密碼,但是需要提供當(dāng)前用戶的密碼才可以,并且密碼不能太過簡單,因?yàn)橄到y(tǒng)會(huì)拒絕普通用戶設(shè)置過于簡單的密碼。命令如下所示:

[john@localhost ~]$ passwd
Changing password for user john.
Changing password for john
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

與root用戶使用這個(gè)命令的方式不同,普通用戶在運(yùn)行這個(gè)命令時(shí),后面不能跟參數(shù),哪怕是自己的用戶名也不行。比如說使用john登錄,然后采用passwd john命令,系統(tǒng)就會(huì)立刻報(bào)錯(cuò),提示只有root用戶才可以在后面跟上用戶名,如下所示:

[john@localhost ~]$ passwd john
passwd: Only root can specify a user name.

3.修改用戶:usermod

有時(shí)候可能會(huì)由于某些具體的場景,而需要對已存在的用戶進(jìn)行修改,這時(shí)候就需要使用usermod命令了。比如說,下面創(chuàng)建了一個(gè)用戶并設(shè)置了密碼:

[root@localhost ~]# useradd alice
[root@localhost ~]# passwd alice
Changing password for user alice.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

現(xiàn)在看一下用戶alice在/etc/passwd中的記錄:

[root@localhost ~]# cat /etc/passwd | grep alice
alice:x:503:503::/home/alice:/bin/bash

冒號隔開的第五列是用戶alice的家目錄,如果希望修改家目錄為/home/alice_new,可使用以下命令對alice的家目錄做修改:

[root@localhost ~]# usermod-d /home/alice_new-m alice

其中,-m參數(shù)的作用是,如果指定用戶的家目錄存在,就自動(dòng)創(chuàng)建新目錄/home/alice_new,并使用該目錄作為alice的新家目錄。如果沒有這個(gè)參數(shù),系統(tǒng)會(huì)報(bào)一個(gè)錯(cuò)誤:usermod: user /home/alice_new does not exist。再看一下alice在/etc/passwd中的記錄,大家可以發(fā)現(xiàn),第五列的家目錄發(fā)生了變化:

[root@localhost ~]# cat /etc/passwd | grep alice
alice:x:503:503::/home/alice_new:/bin/bash

也許會(huì)因?yàn)槟承┰颍~號alice現(xiàn)在還不適合使用(如發(fā)現(xiàn)賬號異常),需要暫時(shí)將這個(gè)賬號凍結(jié)起來,這時(shí),可以使用-L參數(shù)實(shí)現(xiàn)此目的。在操作之前先看一下/etc/shadow中關(guān)于alice的內(nèi)容,然后再進(jìn)行凍結(jié)操作,最后再看一下/etc/shadow,看看有什么不同。

[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::
[root@localhost ~]# usermod-L alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:!$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

你可能已注意到,在冒號隔開的第二列,也就是密碼處多了一個(gè)感嘆號,這表示該賬號已被凍結(jié)。使用-U參數(shù)可以解鎖,而且可以看到密碼又恢復(fù)如從前了。

[root@localhost ~]# usermod-U alice
[root@localhost ~]# cat /etc/shadow | grep alice
alice:$1$Doi70VUY$Gmjq6HijgNLsm7xnys4Lw/:15642:0:99999:7:::

其實(shí)usermod命令就是在對/etc/passwd和/etc/shadow文件做一些修改而已。明白了這個(gè)道理之后,就算不使用這個(gè)命令依然可以手工對用戶進(jìn)行修改操作。usermod還有其他一些不常用的參數(shù),具體的參數(shù)和說明可以使用man usermod命令獲得幫助。

4.刪除用戶:userdel

用戶管理除了創(chuàng)建、修改用戶之外,有時(shí)候也需要?jiǎng)h除用戶。對應(yīng)的命令是userdel。例如現(xiàn)在需要?jiǎng)h除alice用戶:

[root@localhost ~]# userdel alice

使用這個(gè)命令會(huì)將刪除alice在/etc/passwd和/etc/shadow中的記錄。但是從數(shù)據(jù)安全方面考慮,默認(rèn)情況下,刪除用戶時(shí)并不會(huì)刪除原來用戶的家目錄和郵件信息。可以使用-r參數(shù)同時(shí)刪除用戶家目錄和該用戶的郵件。注意,一旦執(zhí)行了這條命令,該用戶的相關(guān)文件就會(huì)被全部刪除。

2.2.2 新增和刪除用戶組

1.增加用戶組:groupadd

上一節(jié)中我們知道,在添加用戶的時(shí)候系統(tǒng)默認(rèn)會(huì)創(chuàng)建一個(gè)與用戶名一樣的用戶組。其實(shí)也可以直接創(chuàng)建用戶組,新增用戶組的命令是groupadd,后接用戶組名稱作為其參數(shù)。在Linux中,使用/etc/group文件來記錄用戶組。如下所示為使用groupadd命令增加一個(gè)group1組:

[root@localhost ~]# groupadd group1

按回車鍵后,注意看/etc/group的最后一行,在本例中,添加的用戶組group1的GID為503。

[root@localhost ~]# cat /etc/group
......(略去內(nèi)容)......
group1:x:503:

在/etc/group文件中,每一行就代表一個(gè)用戶組,其格式是使用3個(gè)分隔號“:”隔開的4列。第一列是用戶組名,第二列代表密碼(但是并不使用),第三列代表用戶組的數(shù)字ID,第四列是組成員,這里為空說明還沒有任何用戶屬于這個(gè)組。

2.刪除用戶組:groupdel

刪除用戶組的命令是groupdel,后接要被刪除的用戶組名作為其參數(shù)。這里需要注意的是,如果已有用戶屬于這個(gè)試圖刪除的組,該操作會(huì)失敗。groupdel命令的使用方式如下:

[root@localhost ~]# groupdel group1

2.2.3 檢查用戶信息

1.查看用戶:users、who、w

使用命令users可以查看當(dāng)前系統(tǒng)有哪些用戶。比如,在當(dāng)前的系統(tǒng)中運(yùn)行users命令,就會(huì)發(fā)現(xiàn)有兩個(gè)root在當(dāng)前機(jī)器上登錄。實(shí)際上,Linux會(huì)把所有來自不同終端的活動(dòng)定義為一個(gè)會(huì)話,從who命令的輸出,可以看出root用戶是通過不同的終端登錄到系統(tǒng)中的。users命令相對比較簡單,所以列出的信息也比較少,可以使用命令who來看到更多信息,如下所示:

[root@localhost ~]# users
root root
[root@localhost ~]# who
root     tty1         2012-11-01 23:00
root     pts/0        2012-11-01 22:56 (192.168.179.1)

命令顯示的結(jié)果有3列,第一列是登錄用戶的用戶名,第二列是用戶登錄的終端,第三列是用戶登錄的時(shí)間。如果是通過遠(yuǎn)程網(wǎng)絡(luò)登錄,則同時(shí)會(huì)顯示遠(yuǎn)程主機(jī)的主機(jī)名或IP地址。還可以使用命令w看到更詳細(xì)的信息,如下所示:

[root@localhost ~]# w
23:21:30 up 27 min,2 users,load average: 0.00,0.00,0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1    -                23:00    7.00s  0.02s  0.02s-bash
root     pts/0    192.168.179.1    22:56    0.00s  0.03s  0.00s w

w命令的第一行會(huì)顯示當(dāng)前時(shí)間、系統(tǒng)運(yùn)行時(shí)間、已登錄的用戶數(shù)量和系統(tǒng)負(fù)載。下面顯示的信息分為8列,每一列解釋如下。

第一列:登錄用戶的用戶名。

第二列:用戶登錄終端。

第三列:如果用戶從網(wǎng)絡(luò)登錄,則顯示遠(yuǎn)程主機(jī)的主機(jī)名或IP地址。

第四列:用戶登錄時(shí)間。

第五列:用戶閑置時(shí)間。

第六列:與終端相關(guān)的當(dāng)前所有運(yùn)行進(jìn)程消耗的CPU時(shí)間總量。

第七列:當(dāng)前WHAT列所對應(yīng)的進(jìn)程所消耗的CPU時(shí)間總量。

第八列:用戶當(dāng)前運(yùn)行的進(jìn)程。

2.調(diào)查用戶:finger

finger命令在不加任何參數(shù)的情況下,同樣會(huì)顯示系統(tǒng)的登錄用戶,如下所示:

[root@localhost ~]# finger
Login     Name       Tty      Idle  Login Time   Office    Office Phone
root      root       tty1       22  Nov  1 23:00
root      root       pts/0          Nov  1 22:56 (192.168.179.1)

如果在finger后跟上某個(gè)用戶名,則顯示該用戶更詳細(xì)的信息,如下所示:

[root@localhost ~]# finger user1
Login: user1                          Name: (null)
Directory: /home/user1                Shell: /bin/bash
Never logged in. #顯示用戶最近一次登錄到系統(tǒng)中的時(shí)間
No mail. #顯示郵件信息
No Plan. #顯示計(jì)劃信息
主站蜘蛛池模板: 沅江市| 同江市| 伽师县| 万州区| 祁门县| 吉水县| 武威市| 石首市| 西城区| 双峰县| 定兴县| 根河市| 泊头市| 无锡市| 施秉县| 华亭县| 佛教| 鄂托克旗| 呼和浩特市| 辉南县| 肥城市| 五常市| 闽侯县| 华安县| 安康市| 措美县| 宣武区| 萨嘎县| 磴口县| 广西| 洛隆县| 汉源县| 璧山县| 丰顺县| 天水市| 于田县| 定西市| 巫溪县| 龙山县| 洪江市| 乐亭县|