用戶和組
1.用戶、組、家目錄的概念
linux系統支持多用戶,除了管理員,其他用戶一般不應該使用root,而是應該向管理員申請一個賬號。組類似於角色,系統可以通過組對有共性的用戶進行統一管理。每個用戶應該至少屬於一個組,不能游離於組外;且在創建用戶時,系統會在/home目錄下自動生成一個目錄作為該用戶的“家目錄”,該用戶在登錄后會首先進入家目錄。家目錄可以在添加用戶時指定,如果不指定,默認會以用戶名來命名。例如,用戶bob的家目錄默認是/home/bob,他在登錄linux系統后,會首先進入/home/bob。
2.添加用戶
useradd username [-d homePath] [-g groupName]
其中,username為用戶名, homePath為家目錄(可選,不指定時默認為/home目錄下同用戶名),groupName為組名(可選,不指定時默認為同用戶名)。例如,要新建一個名為zhangsan的用戶,家目錄為/home/zhang3,屬於sales組,命令為:useradd zhangsan -d /home/zhang3 -g sales。
3.設置或修改用戶密碼
passwd username
其中,username為要設置或修改密碼的用戶名,回車之后,會要求輸入兩次新密碼。
4.刪除用戶
userdel [-r] username
其中,username為要刪除的用戶名,-r是可選項,表示同時刪除該用戶的家目錄。一般情況下刪除用戶時並不需要刪除他的家目錄。
5.查看用戶信息
id username
其中,username為要查看的用戶名,回車之后,會顯示用戶id、組id等信息。
6.切換用戶
su - newUsername
其中,newUsername為要切換的用戶名,如果是從高權限用戶切換到低權限用戶,例如從root切換到普通用戶,不需要密碼;反之則需要輸入密碼。經測試,切換到用戶本身時,從root到root不需要密碼,從普通用戶到他自己時需要密碼。
7.添加組
groupadd groupName
其中,groupName為要添加的組名,注意不能重復添加同名的組,如果groupName已經存在,會返回錯誤提示。
8.刪除組
groupdel groupName
其中,groupName為要添加的組名,注意如果這個組是一個或多個用戶的主組,則不能刪除。
9.修改用戶所屬的組
usermod -g groupname userName
其中,groupname為新組名,userName為要修改的用戶名。
10.修改用戶的家目錄
usermod -d homepath username
其中homepath為新的家目錄,username為要修改的用戶名。
11.與用戶、組相關的文件
/etc/passwd:用戶的配置文件,存放用戶信息;從左至右:用戶名,密碼(不顯示明文),用戶id,組id,家目錄,登錄shell。
/etc/shadow:口令的配置文件,用於存放加密口令、修改事件、失效時間等信息。
/etc/group:組配置文件,用於存放組名、組id。
12.文件與用戶、組的關系
一個用戶創建了一個文件,則這個用戶就自動成為這個文件的"所有者",這個用戶所在的組就成為文件的"所在組",除了所有者和所在組的用戶,系統中的其他用戶對於文件都是"其他組"的用戶。可以通過ls -l命令查看文件的所有者和所在組。但是文件的所有者和所在組並不是固定不變的,可以修改。
13.修改文件或目錄的所有者
chown [-R] username source
其中,username為修改后的用戶名,source為文件或目錄的路徑名稱,-R表示級聯修改目錄下面的子目錄和文件的所有者。
14.修改文件或目錄的所在組
chgrp [-R] groupname source
其中,groupname為修改后的組名,source為文件或目錄的路徑名稱,-R表示級聯修改目錄下面的子目錄和文件的所在組。注意修改文件的所有者和所在組是相互獨立的事件,互不影響。
15.同時修改文件或目錄的所有者和所在組
chown [-R] username:groupname source
其中,username為修改后的用戶名,groupname為修改后的組名,source為文件或目錄的路徑名稱,-R表示級聯修改目錄下面的子目錄和文件的所在組。這里的用戶和組沒有必然聯系,即username不一定要屬於groupname的那個組。
權限
1.文件和目錄的權限簡介
在目錄和文件管理一節中我們了解到,用ls -l命令可以以列表形式展示當前目錄下的子目錄和文件。但是這個列表到底展示了哪些信息,上一節並未詳細介紹。下面以一個例子來說明:
家目錄下有一個animal/目錄,還有一個description.txt文件,下面用不同顏色來划分列表字段。
drwxr-xr-x. 3 dubhlinn engineer 47 6月 19 22:26 animal
-rw-r--r--. 1 dubhlinn police 52 6月 19 22:25 description.txt
(1) 第一組只有1個字符,表示條目的類型:
-:普通文件
d:目錄
l:軟鏈接
c:字符設備,例如鍵盤、鼠標
b:塊文件,例如硬盤;
(2) 第二組有9個字符,每3個表達一個意思:
第1-3個表示文件所有者的權限,
第4-6個表示文件所在組的用戶的權限,
第7-9個表示文件其他組的權限。
那么這些字符代表什么意思呢?總的來說,r表示可讀,w表示可寫,x表示可執行,但是對於文件和目錄,表達的意思又不盡相同,下面分別描述。
文件 | 目錄 | |
- | 無權限 | 無權限 |
r | 可以用cat、more、less等命令查看文件內容 | 可以用ls命令查看目錄下的內容 |
w | 可以用vi、vim編輯器修改文件,但不代表可刪除 | 可以在目錄內增加、刪除、重命名文件或子目錄 |
x | 可執行 | 可以用cd命令進入該目錄 |
(3) 第三組是一個數字,對於文件來說是硬鏈接數,通常是1,對於目錄是其下的子目錄數量(包含隱藏子目錄)。
(4) 第四組表示文件的所有者。
(5) 第五組表示文件的所在組。
(6) 第六組是一個數字,表示其大小(KB)。
(7) 第七組是日期時間,表示文件或目錄的最后修改時間。
(8) 第八組是文件名或目錄的名字。
根據上這些理論知識,我們再來看上面的示例
drwxr-xr-x. 3 dubhlinn engineer 47 6月 19 22:26 animal
這是一個名為animal的目錄;其所有者有讀、寫、執行的權限,其所在組的用戶有讀、執行的權限,其他組有讀、執行的權限;它下面有3個子目錄;其所有者是dubhlinn,所在組是engineer;其大小為47KB,最后編輯時間是6月19日22:26。
2.修改文件或目錄的權限
(1) 使用權限代碼賦值
chmod role1=auth source
其中,role為角色代碼,可以設置其中的一個或多個,多個角色之間用逗號(,)分隔且不能有空格,其取值范圍如下:
u-文件或目錄的所有者;
g-文件或目錄所在組的用戶;
o-其他用戶;
a-所有用戶,包含u、g、o,只能單獨使用。
auth為權限碼組合,例如讀寫執行權限為rwx,讀和執行權限為rx,寫權限為w,根據需要選擇。
source為文件或目錄的路徑名稱。
下面是幾個實例:
chmod u=rwx,g=rx,o=rx /home/dubhlinn
chmod o=r /home/dubhlinn/description.txt
chmod a=rwx /home/public
(2) 使用加減號添加或減少權限
chmod role+auth source
chmod role-auth source
role、auth、source的含義同上,同樣可以設置一個或多個角色,以下是幾個實例:
chmod u-x,g+rw /home/dubhlinn/description.txt
chmod a+w /home/public
chmod u+rwx,g-x,o-x /home/dubhlinn
(3) 使用數字賦值
chmod xyz source
其中,x、y、z是三個數字,分別表示文件或目錄的所有者、所在組的用戶、其他組的用戶的"權限值"。
權限值是這樣計算的:
r=4
w=2
x=1
將這個用戶的權限代碼對應的數字加起來就是"權限值",所以其取值范圍可能是0、1、2、3、4、5、6、7。
例如,chmod 754 /home/void 等價於 chmod u=rwx,g=rx,o=r /home/void。