由于實(shí)驗(yàn)室?guī)讉€(gè)老師的學(xué)生要共同使用一臺(tái)服務(wù)器,所以需要規(guī)范一下服務(wù)器的使用,并且給各位學(xué)生配置相關(guān)的用戶和權(quán)限,之前一直都是自己用,所以借此機(jī)會(huì)學(xué)習(xí)和總結(jié)一下Linux服務(wù)器的用戶管理與權(quán)限管理。
用戶與用戶組
根用戶——root用戶
在Ubuntu下,終端提示符里$表示普通管理員,#表示系統(tǒng)管理員(也就是root用戶),root用戶默認(rèn)是沒有密碼的,啟用root用戶,就需要給root用戶設(shè)置密碼,命令如下:
$ sudo passwd root
系統(tǒng)會(huì)先驗(yàn)證當(dāng)前普通管理員的密碼,然后要求輸入兩次root用戶的密碼,之后就可以進(jìn)入root用戶了,關(guān)于用戶和權(quán)限的管理,最好是在root用戶下操作。進(jìn)入root用戶下的命令如下:
$ su root
輸入密碼后就進(jìn)入root用戶了。
用戶組創(chuàng)建與刪除
很多時(shí)候在創(chuàng)建新用戶的時(shí)候,希望把一些用戶歸為一個(gè)組,以便后續(xù)的管理,例如我就打算把學(xué)生的賬號(hào)都放到StudentGroup里面去,在Ubuntu中,一個(gè)用戶是可以同時(shí)在幾個(gè)組里面的,會(huì)指定一個(gè)主要組。
- 1.查看用戶所在組情況
可以通過id命令查看當(dāng)前用戶或通過id user1來查看用戶user1的用戶組情況,例如:
id user1
uid=1001(user1) gid=1001(userGroup) groups=1001(userGroup),4(adm),27(sudo)
上面的命令可以看到,id user1命令的結(jié)果為顯示用戶名及id(uid),顯示用戶所在主組(gid),顯示用戶所在的組列表(groups),這里例子中,用戶user1所在的主組為userGroup,同時(shí)也在adm,sudo用戶組中。
- 2.創(chuàng)建用戶組
創(chuàng)建用戶組的命令是groupadd,普通管理員需要加sudo來執(zhí)行,root用戶不用。具體命令語法如下:
$ sudo groupadd [options] GroupName
其中的選項(xiàng)可以通過命令groupadd --help來查看,一般用的不多,就不細(xì)說了,需要的自己看。
- 3.刪除用戶組
刪除用戶組的命令語法如下:
$ sudo groupdel GroupName
- 4.修改用戶組信息
修改用戶組的命令語法如下:
$ sudo groupmod [options] GroupNameOld
其中的選項(xiàng)可以通過命令groupmod --help來查看,常用的主要是以下兩個(gè):
-g NewID:為GroupNameOld用戶組指定新的組id
-n NewGroupName:為GroupNameOld用戶組指定新的組名稱
例如下面一條命令:
$ sudo groupmod -g 10001 -n group2 group1
即為將用戶組group1改名為group2,同時(shí)組id設(shè)置為10001。
- 4.用戶組管理
用戶組管理的命令是gpasswd,通常用來給用戶組添加或移除用戶,其基本語法如下:
gpasswd [option] GroupName
可以通過gpasswd --help來查看選項(xiàng)列表,其中常用的選項(xiàng)有:
-a:添加用戶到該用戶組,例如下面命令:
gpasswd -a user1 Group2 #將用戶user1添加到用戶組Group2中;
-d:從用戶組移除用戶,例如下面命令:
gpasswd -d user1 Group1 #將用戶user1從用戶組Group1中移除;
少部分Ubuntu發(fā)行版中沒有g(shù)passwd命令,但是其功能可以用更為常用的usermod來完成(詳見下面的用戶管理)。
創(chuàng)建新用戶
創(chuàng)建新用戶可以用兩個(gè)命令,一個(gè)是adduser,一個(gè)是useradd,這兩個(gè)命令一個(gè)是通過系統(tǒng)提示配置密碼等信息由系統(tǒng)以默認(rèn)目錄配置創(chuàng)建用戶(adduser,會(huì)把用戶主目錄建立在\home目錄下,僅配置密碼和一些用戶信息,其他的配置如權(quán)限用戶組等都是默認(rèn)的);一個(gè)是用戶自己通過參數(shù)配置來添加用戶(useradd,可以自行輸入?yún)?shù)來確定用戶的主目錄、用戶組等配置)
為了避免搞混這兩個(gè)命令,我是這么記的:
(系統(tǒng))添加用戶——System add user,add在前,user在后,由系統(tǒng)自動(dòng)完成,system省略了,所以是adduser;
用戶添加(用戶)——User add user,用戶添加用戶,可以自定義參數(shù)配置,省略后面的users,所以是useradd。
- 使用
adduser:
在普通管理員權(quán)限下,需要加sudo來執(zhí)行命令:
$ sudo adduser UserName
在root用戶下,可以不加sudo直接執(zhí)行。
之后,系統(tǒng)會(huì)提示輸入并二次確認(rèn)用戶名的密碼,設(shè)置完成后,會(huì)默認(rèn)建立一個(gè)新的用戶組以及在\home目錄下創(chuàng)建新的用戶目錄\home\abc\。最后會(huì)要求為新用戶設(shè)置信息(全名、電話等),一路回車不用管這些都可以。
- 使用
useradd:
useradd命令的基本語法是:
useradd [options] UserName
可以使用useradd --help來查看系統(tǒng)給出的幫助文檔。常用的選項(xiàng)如下(注意嚴(yán)格區(qū)分大小寫):
-d DirPath:指定DirPath為新用戶的主目錄;
-m:不需要帶值,與-d合用,表示當(dāng)上述DirPath目錄不存在時(shí),創(chuàng)建目錄DirPath;
-g GroupName:指定新用戶主要所在的用戶組(指定的組不存在時(shí)會(huì)報(bào)錯(cuò),需要先創(chuàng)建用戶組;
-G GroupName1 GroupName2:指定新用戶所在的用戶組(可以列出多個(gè));
-s ShellPath:指定用戶的登錄shell為文件ShellPath。
例如下面這一條命令:
useradd -d /media/StudentGroup/stu1/ -m -g StudentGroup -G adm,root stu1
創(chuàng)建用戶stu1,主用戶組為StudentGroup(需要提前創(chuàng)建好),同時(shí)也屬于用戶組adm和root,主目錄為/media/StudentGroup/stu1/。這樣創(chuàng)建好的用戶是沒有密碼的,可以在root用戶下給它設(shè)置密碼(passwd stu1命令,詳見后面的用戶修改部分)。
這里要注意一點(diǎn),這樣操作的時(shí)候,需要先手動(dòng)創(chuàng)建目錄/media/StudentGroup/或者確保這個(gè)目錄存在,因?yàn)檫@條命令中的創(chuàng)建目錄是不支持多級(jí)目錄同時(shí)創(chuàng)建的,好像mkdir這個(gè)命令也是?
修改用戶
1.配置相關(guān)
修改用戶的配置需要在root用戶下或者管理員權(quán)限,命令的基本語法如下:
usermod [options] UserName
具體的選項(xiàng)可以參考usermod --help,常用的選項(xiàng)和useradd類似,這里需要注意的有兩個(gè):
- 一個(gè)是
-m選項(xiàng),在修改用戶配置的時(shí)候,同樣需要和-d選項(xiàng)合用,此時(shí)的-m選項(xiàng)就不是創(chuàng)建用戶主目錄了,而是移動(dòng)舊用戶主目錄的內(nèi)容到-d所指定的新用戶主目錄中去。 - 另一個(gè)是
-G選項(xiàng),如果要將用戶添加到一個(gè)或幾個(gè)組里去,-G后面的用戶組列表應(yīng)當(dāng)包含之前用戶所在的組列表和新的組列表,否則,用戶將從之前的組列表中移除,要查看用戶在哪些組里面,可以通過命令cat /etc/group | grep UserName查看(UserName是要查看的用戶名)。
有時(shí)候用戶所在組比較多,只用-G選項(xiàng)會(huì)比較麻煩,需要把之前所在的組都列出來,這時(shí)候可以添加-a選項(xiàng)(append)和-G選項(xiàng)合用,表示附加一個(gè)組,用的時(shí)候如下列命令所示:
usermod -a -G newGroup user1 #將user1添加到newGroup組中,即向user1原有的組列表中添加newGroup
如果要在用戶的組列表中刪除一個(gè),可以參考上面說的的用戶組管理命令gpasswd在組內(nèi)刪除對應(yīng)用戶組即可達(dá)到目的,同樣的也可以通過gpasswd達(dá)到一次或多次使用usermod -a -G的作用
2.口令相關(guān)
口令相關(guān)的修改命令基本語法如下:
passwd [options] UserName
如果只是當(dāng)前用戶修改自己的口令,則可以只用passwd,如果是root用戶或者其他管理員用戶修改其他用戶的口令配置,則需要管理員權(quán)限sudo或者root用戶本身。跟上面的命令一樣,可以用passwd --help來查看選項(xiàng)詳情。常用的選項(xiàng)如下:
不使用任何選項(xiàng):直接修改口令
-l:鎖定口令,即禁用用戶,用戶可以通過ssh登錄,但是不能修改口令
-u:解鎖口令,即解除禁用
-d:清除口令,使賬戶不需要密碼
3.切換組
有時(shí)候一個(gè)用戶同時(shí)屬于多個(gè)用戶組的時(shí)候,默認(rèn)是會(huì)使用主用戶組的權(quán)限配置,如果需要切換當(dāng)前用戶當(dāng)前使用的用戶組,例如,用戶stu1同時(shí)在用戶組StudentGroup和adm中,默認(rèn)是StudentGroup,在stu1下,使用如下命令可以切換到adm組中:
newgrp adm
與用戶賬號(hào)有關(guān)的系統(tǒng)文件(查看用戶/用戶組)
1. /etc/passwd——用戶賬戶文件
每個(gè)用戶都在文件/etc/passwd中有一個(gè)對應(yīng)的記錄行,它記錄了這個(gè)用戶的一些基本屬性。這個(gè)文件對所有用戶可讀,查看命令為:
cat /etc/passwd
可以看到如下所示的輸出:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
stu1:x:1001:1001::/media/StudentGroup/stu1/:
stu2:x:1002:1001:I_love_this_test:/media/StudentGroup/stu2/:/bin/bash
可以看出,一行記錄對應(yīng)著一個(gè)用戶,每行記錄又被冒號(hào)(:)分隔為7個(gè)字段,其格式和具體含義如下:
用戶名:口令:用戶標(biāo)識(shí)號(hào):組標(biāo)識(shí)號(hào):注釋性描述:主目錄:登錄Shell
2. /etc/group——用戶組文件
每個(gè)用戶組會(huì)對應(yīng)文件/etc/group中的一行記錄,查看方式如下:
cat /etc/group
此文件的格式也類似于/etc/passwd文件,由冒號(hào)(:)隔開若干個(gè)字段,這些字段有:
組名:口令:組標(biāo)識(shí)號(hào):組內(nèi)用戶列表
**3. /etc/shadow
/etc/shadow中的記錄與/etc/passwd中的記錄一一對應(yīng),并且只有超級(jí)管理員才有權(quán)限查看,記錄著每個(gè)用戶更為隱私的信息。
它的文件格式與/etc/passwd類似,由若干個(gè)字段組成,字段之間用":"隔開。這些字段是:
登錄名:加密口令:最后一次修改時(shí)間:最小時(shí)間間隔:最大時(shí)間間隔:警告時(shí)間:不活動(dòng)時(shí)間:失效時(shí)間:標(biāo)志。
文件/目錄權(quán)限管理
在Linux系統(tǒng)中,一切皆文件,就是目錄(或文件夾)、文檔、程序等所有的都統(tǒng)一為文件,文件的權(quán)限控制包括讀、寫、執(zhí)行三種,同時(shí)還有所屬權(quán)的概念。
查看權(quán)限
文件/目錄的權(quán)限查看命令為:ls -l,該命令會(huì)列出當(dāng)前目錄下所有文件(包括子目錄)的詳情,結(jié)果如下圖所示:

第一行是列出了當(dāng)前目錄下所有文件數(shù)量(包括子目錄中所有文件),然后緊接著每一行都是當(dāng)前目錄下的一個(gè)文件。每一行中各部分含義如下:
| 權(quán)限 | incode | 所屬用戶 | 所屬用戶組 | 文件大小 | 修改時(shí)間 | 名稱 |
|---|---|---|---|---|---|---|
| drwxrwxrwx | 0 | user | group | 512 | 月日時(shí)間 | name |
其中第一個(gè)字段如drwxrwxrwx或drwxr-xr-x這種就表示該文件的權(quán)限,這個(gè)字段的值一共有10位字符,每一位的含義如下:
| 位置 | 含義 | 取值說明 |
|---|---|---|
| 第1位 | 是否為目錄 | d表示該文件為目錄,-表示該文件不是目錄 |
| 2~4位 | 所屬用戶對該文件的權(quán)限 | 2,3,4位分別對應(yīng)讀、寫、執(zhí)行權(quán)限,如果對應(yīng)位置為“-”符號(hào)表示不具備該權(quán)限,為對應(yīng)字母r、w、x則表示具備該權(quán)限 |
| 5~7位 | 所屬用戶組對該文件的權(quán)限 | 5,6,7位分別對應(yīng)讀、寫、執(zhí)行權(quán)限,如果對應(yīng)位置為“-”符號(hào)表示不具備該權(quán)限,為對應(yīng)字母r、w、x則表示具備該權(quán)限 |
| 8~10位 | 其他用戶對該文件的權(quán)限 | 8,9,10位分別對應(yīng)讀、寫、執(zhí)行權(quán)限,如果對應(yīng)位置為“-”符號(hào)表示不具備該權(quán)限,為對應(yīng)字母r、w、x則表示具備該權(quán)限 |
舉個(gè)例子,如下圖所示結(jié)果:
-rwxr-xr-- 0 user1 Group1 512 May 23 14:23 AFile
這個(gè)結(jié)果表示的是文件AFile的信息,其權(quán)限為:
- 文件屬于用戶user1,該用戶對該文件有讀、寫、執(zhí)行權(quán)限;
- 文件屬于用戶組Group1,該用戶組對AFile具有讀、執(zhí)行權(quán)限,沒有寫權(quán)限(不能修改);
- 其他用戶對文件AFile僅有只讀權(quán)限,沒有寫(修改)和執(zhí)行權(quán)限。
注意:這里針對目錄(即文件夾),可執(zhí)行權(quán)限表示能否進(jìn)入該目錄,可讀權(quán)限代表能否查看該目錄內(nèi)容。
修改/設(shè)置權(quán)限
修改權(quán)限的命令為chmod,基本語法如下:
chmod 權(quán)限操作 文件名
其中權(quán)限操作有兩種寫法:
- 字符操作
以[用戶標(biāo)識(shí)][操作符][權(quán)限內(nèi)容]為語法規(guī)則,具體如下:- 用戶標(biāo)識(shí):
-
u——表示文件所屬用戶(user) -
g——表示所屬用戶組(group) -
o——表示其他用戶(other) -
a——表示以上三個(gè)所有(all);
-
- 操作符:
-
+——增加權(quán)限 -
-——?jiǎng)h除權(quán)限 -
=——將權(quán)限設(shè)置為;
-
- 權(quán)限內(nèi)容:(權(quán)限內(nèi)容可以多項(xiàng)一起)
-
r——讀權(quán)限 - ``w
——寫權(quán)限 -
x——執(zhí)行權(quán)限
-
- 用戶標(biāo)識(shí):
舉幾個(gè)例子:(這里省略了可能需要的管理員權(quán)限,如果需要就在下列命令前加
sudo)
’chmod u+w aFile:給aFile的所屬用戶增加對aFile的寫權(quán)限
chmod g-w aFile:使aFile的所屬用戶組對aFile不能寫
chmod a+rwx aFile:給所有用戶對aFile增加讀、寫、執(zhí)行權(quán)限
chmod u=rw:將aFile的所屬用戶對aFile的權(quán)限設(shè)置為讀、寫(這里沒有x所以相當(dāng)于rw-,即使修改之前所屬用戶有執(zhí)行權(quán)限,執(zhí)行該命令后執(zhí)行權(quán)限會(huì)被刪除)。
- 數(shù)值操作
數(shù)值操作是一種更加簡便的用法,熟練用戶用的更多。其含義是把表示權(quán)限的九位(第一位表示是否為目錄的不算)視作9個(gè)二進(jìn)制位(事實(shí)上系統(tǒng)正是這樣理解的),分別對應(yīng)9個(gè)權(quán)限位,取值為1表示具備該權(quán)限,取值為0則表示不具備該權(quán)限。
然后這9個(gè)二進(jìn)制位中每三位可以轉(zhuǎn)化為一個(gè)八進(jìn)制位,這樣,恰好可以將所屬用戶、所屬用戶組、其他用戶三類的權(quán)限分別用一個(gè)八進(jìn)制數(shù)字來表示,對于每類用戶(每個(gè)八進(jìn)制位)的每種獨(dú)立權(quán)限可表示如下:
r--——100——4
-w-——010——2
--x——001——1
---——000——0
然后各種組合權(quán)限如此類推,也可以簡單的計(jì)算為以上權(quán)限對應(yīng)數(shù)值的加和,例如:
rw-——110——6=4+2
這種方法修改的時(shí)候需同時(shí)列出三類用戶的權(quán)限值,例如下列命令:
chmod 777 aFile
這條命令就是將aFile的權(quán)限修改為所有用戶對它具有所有權(quán)限。
再比如下面這條命令:
chmod 754 aFile
這條命令是將aFile權(quán)限設(shè)置為:所屬用戶對aFile具有全部權(quán)限,所屬用戶組有可讀可執(zhí)行權(quán)限但不可寫,其他用戶僅有可讀權(quán)限。
修改文件所屬權(quán)
上面提到的文件權(quán)限的修改都是針對文件屬性中文件的擁有者(所屬用戶)以及所屬用戶組的,如果需要修改文件的所屬權(quán)(即擁有者用戶及所屬用戶組)則需要使用命令chown(change owner?),具體用法如下示例:
#遇到權(quán)限不足的情況自行添加sudo,沒sudo權(quán)限就聯(lián)系管理員吧
chown user1 aFile #修改aFile的所屬用戶為user1;
chown user1: aFile #修改aFile的所屬用戶為user1,所屬用戶組為user1所在的主組;
chown :Group1 aFile #修改aFile的所屬用戶組為Group1,所屬用戶不變;
chown user1:Group2 aFile #修改aFile的所屬用戶為user1,所屬用戶組為Group2;
以上就是Ubuntu中關(guān)于用戶和權(quán)限管理的基本用法,對于大多數(shù)用戶來講已經(jīng)足夠了,也基本滿足了實(shí)驗(yàn)室現(xiàn)在對Linux服務(wù)器的管理,當(dāng)然還有更加高階一些的功能和用途,例如修改系統(tǒng)配置文件,修改系統(tǒng)默認(rèn)的用戶組和管理權(quán)限以及多用戶登錄和環(huán)境變量切換這些,下次再專門整理關(guān)于多用戶遠(yuǎn)程登錄的內(nèi)容。
歡迎訪問博主的個(gè)人主頁——靜葉思的隨筆