目錄
Linux常規操縱 : 多用戶操作
1.1 linux的用戶與用戶組理論
1.1.1 概述
Linux是一個真實的、完整的多用戶多任務操作系統,多用戶多任務就是可以在系統上建立多個用戶,而多個用戶可以在同一時間內登錄同一個系統執行各自不同的任務,而互不影響。
root :系統維護
www:網頁修改
ftp:文件上傳
mysql:SQL查詢
不同用戶具有不同的權限,每個用戶是在權限允許的範圍內完成不同的任務,linux正是通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。
1.1.2 linux的用戶分類
1. root 用戶(linux的超級管理員)
擁有最高權限,可以登錄系統,進行任何操作。
2. 虛擬用戶(某項技術運行期間需要的用戶,根我們沒啥關係)
這類用戶也被稱爲僞用戶或假用戶,以與真實用戶區分開來。這類用戶不具有登錄系統的能力,但卻是系統運行不可缺少的用戶,比如bin、daemon、adm、ftp、mail等,這類用戶都是系統自身擁有的,而非後來添加的。
3. 普通真實用戶(我們可以操作的)
這類用戶等登錄系統,權限有限,由管理員添加。
注意 : linux是區分用戶進行各種操作的,也就是說如果你想做任何操作都是必須先登錄某個用戶纔可以做相關的操作,所以我們想要操作linux必須有自己的用戶!
那怎麼創建用戶呢?
1.1.3 linux的用戶組
Linux是一個多用戶多任務的分時操作系統,如果要使用系統資源,就必須向系統管理員申請一個賬戶,然後通過這個賬戶進入系統。這個賬戶和用戶是一個概念,通過建立不同屬性的用戶,一方面,可以合理的利用和控制系統資源,另一方面也可以幫助用戶組織文件,提供對用戶文件的安全性保護。
每個用戶都用一個唯一的用戶名和用戶口令,在登錄系統時,只有正確輸入了用戶名和密碼,才能進入系統和自己的主目錄。
用戶組是具有相同特徵用戶的邏輯集合,有時我們需要讓多個用戶具有相同的權限。
比如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,如果有10個用戶的話,就需要授權10次,顯然這種方法不太合理。
另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然後將所有需要訪問此文件的用戶放入這個組中,那麼所有用戶就具有了和組一樣的權限。這就是用戶組,將用戶分組是Linux 系統中對用戶進行管理及控制訪問權限的一種手段,通過定義用戶組,在很大程度上簡化了管理工作。
說白了用戶組就是對linux中同一類對象進行統一管理一種技術手段,將同一類用戶放到一個組中去,封裝成一個更大的整體;
就好比 同一類學生封裝到一個班級裏面,學生就是用戶,班級就是組;對班級進行操作其實就是對這個班級的所有學生的操作;
1.1.4 用戶與組的關係
用戶和用戶組的對應關係有:一對一、一對多、多對一和多對多;下圖展示了這種關係:
一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。
一對多:即一個用戶可以存在多個用戶組中。那麼此用戶具有多個組的共同權限。
多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。
多對多:多個用戶可以存在多個組中。其實就是上面三個對應關係的擴展。
1.1.5 用戶與組對linux的影響
假如 我們現在有這麼幾個用戶 : zwm 、sjg、 wxh
假設 zwm 和 sjg 用戶 是 g1 組 ,wxh 是 g2 組
我們用 zwm 用戶創建了一個文件 file1
那麼對於這個file1來說 就有 三種權限的設置
1. User --> 文件所有者 完全權限 讀 寫 執行 4 2 1 = 7
直接創建這個文件的用戶(zwm),對這個文件享有很高的權限
2. Group --> 文件所有者同組權限 讀
這個用戶所屬組(g1組),與上面用戶同組的用戶對這個文件有什麼樣的操作權限
3. Others --> 除文件所有者和所有者組之外那些個用 0
其他用戶(wxh),除了上面的用戶和上面的組以外的其他人對這個文件有什麼權限操作
舉個例子
其中:
天神:root 用戶,無所不能。
王大毛家:某個用戶組
王大毛:某個用戶組中的用戶
王大毛房間的所有者是王大毛,裏面的東西,其他人不能亂動,表示爲所有者權限 (User)。
王大毛家內公共區域三兄弟可以共享,表示爲所有者同組權限(Group)。
對於王大毛來說,張小豬就不是他們家的人,表示爲所有者非同組權限(others)。
1.2 linux的用戶與用戶組實戰
因爲用戶組與用戶是一對多的關係,用戶肯定是要從屬於某個組的,所以我們先從用戶組操作起來
1.2.1 Linux用戶組的CURD操作
1.2.1.1 GR 組的查詢
1. 組信息的查詢
執行 :
#cat 命令,查看某個文件的內容 /etc(配置文件目錄)/group(配置文件)
[root@localhost ~]# cat /etc/group
用戶組的所有信息都存放在/etc/group文件中。
此文件的格式是由冒號(:)隔開若干個字段,這些字段具體如下:
組名:口令:組標識號:組內用戶列表
具體解釋:
組名:
組名是用戶組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重複。
口令:
口令字段存放的是用戶組加密後的口令字。一般Linux系統的用戶組都沒有口令,即這個字段一般爲空,或者是*,有口令默認是x。
因爲涉及到對組的管理所以linux的組也是有自己的密碼的
組標識號 主鍵ID(可以重複的):
組標識號與用戶標識號類似,也是一個整數,被系統內部用來標識組。別稱GID.
組內用戶列表:
是屬於這個組的所有用戶的列表,不同用戶之間用逗號(,)分隔。這個用戶組可能是用戶的主組,也可能是附加組。
2. 組密碼的查詢
執行
[root@localhost ~]# cat /etc/gshadow
由冒號(:)隔開若干個字段,這些字段具體如下:
用戶組名:用戶組密碼:用戶組管理者:支持的賬號名稱
具體解釋:
用戶組名:
是用戶組的名稱,由字母或數字構成。
用戶組密碼:
這個段可以是空的或!,如果是空的或有!,表示沒有密碼。
用戶組管理者:
這個字段也可爲空,如果有多個用戶組管理者,用,號分割。
組成員:
如果有多個成員,用,號分割。
當你每次創建的時候 爲了保證這個賬戶歸屬某個組 所以 創建一個賬戶的同時 / 創建一個與用戶同名的組
root 賬戶 root組
1.2.1.2 GC 添加組
groupadd
語法 :
groupadd [選項] 組名
命令功能:
添加羣組。
選項和參數:
-g GID:後面接某個特定的 GID ,用來直接給予某個GID;
-h :顯示此幫助信息並退出
-r :創建一個系統羣組。
-o :允許創建有重複 GID 的組
實例:
1)創建一般羣組(GID 從 1000 ! 1000以下代表是系統組)
[root@localhost ~]# groupadd group1
[root@localhost ~]# cat /etc/group | grep group1
group1:x:1000:
| N個命令的管道連接符 ,它的意義就是在於 ,將前一個命令的結果作爲原始數據傳入下一個命令 ,此處我們將 cat /etc/group 命令的執行結果 ,通過 | 傳入給 grep 命令 ,
grep命令的作用是,在指定內容中查找給定的關鍵字,因爲我們要用grep查找 group1 關鍵詞 ,所以通過上面命令的執行將包含group1 關鍵詞的那行查詢出來;
2)創建一個自定義GID的組名
GID : 和我們之間數據庫的主鍵ID一樣,用來定位一個組的有效標識,但是linux的GID可以重複(使用-o 參數指定即可);
GID的編號 : 0~999 傳統上是保留給系統帳號使用。自定義的組是1000以上的,剛纔我們創建的group1組的ID就是1000;
[root@localhost ~]# groupadd -g 1003 group3
[root@localhost ~]# cat /etc/group | grep group3
group3:x:1003:
此處需要注意一個問題,因爲我們自定義的組ID已經指定到了1003, 所以按照ID遞進原則之後我們如果創建group3組的話,ID不會是我們沒有用到的1002 ,而是 1003+1 --> 1004
[root@localhost ~]# cat /etc/group | grep group4
group4:x:1004:
3)創建系統羣組
[root@localhost ~]# groupadd -r sysop1
[root@localhost ~]# cat /etc/group | grep sysop1
sysop1:x:995:
注意
系統羣組的ID是 0-999 所以此處分配了一個 995的ID
此時大家就要考慮一個問題了,如果系統保留ID用沒了,但是我還是想創建系統羣組怎麼辦呢?
這個時候我們可以使用 -o 參數來設定GID相同的羣組
[root@localhost ~]# groupadd -r -o -g 995 sysop2
[root@localhost ~]# cat /etc/group | grep sysop2
sysop2:x:995:
根據觀察我們可以看出,sysop2和sysop1使用了相同的GID;
1.2.1.3 GU 修改組
groupmod
命令格式:
groupmod [選項] 組名
命令功能:
修改羣組相關參數。
選項和參數:
-g GID :將組 ID 改爲 GID
-h :顯示此幫助信息並退出
-n NEW_GROUP :改名爲 NEW_GROUP
-o :允許使用重複的 GID
實例:
修改 sysop2 組的名稱爲 sysug1 並且修改這個組的ID爲 996
[root@localhost ~]# groupmod -g 996 -n sysug1 sysop2
groupmod:GID “996”已經存在
[root@localhost ~]# groupmod -g 997 -n sysug1 sysop2
groupmod:GID “997”已經存在
[root@localhost ~]# groupmod -g 998 -n sysug1 sysop2
groupmod:GID “998”已經存在
[root@localhost ~]# groupmod -g 999 -n sysug1 sysop2
groupmod:GID “999”已經存在
[root@localhost ~]# groupmod -g 994 -n sysug1 sysop2
注意 系統的GID是很緊張的!
1.2.1.4 GD 刪除用戶組
groupdel
命令格式:
groupdel 組名
命令功能:
刪除用戶組時,用戶組必須存在,如果有組中的任一用戶在使用中的話,則不能刪除。
實例:
刪除羣組名爲 sysop1 sysug1 的羣組和
[root@localhost ~]# groupdel sysop1
[root@localhost ~]# groupdel sysug1
1.2.2 Linux用戶的CURD操作
1.2.2.1 UR 用戶查看
執行 :
[root@localhost ~]# cat /etc/passwd
是的,沒有錯,不要懷疑,這個就是查看用戶信息的文件 叫 passwd
內容如下
內容說明 :
/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔爲7個字段,其格式和具體含義如下:
用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登錄Shell
用戶名:
是代表用戶賬號的字符串。通常長度不超過8個字符,並且由大小寫字母和/或數字組成。
口令:
一些系統中,存放着加密後的用戶口令字。雖然這個字段存放的只是用戶口令的加密串,不是明文,但是由於/etc/passwd文件對所有用戶都可讀,所以這仍是一個安全隱患。因此,現在許多Linux系統都使用了shadow技術,把真正的加密後的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,例如“x”或者“*”。
用戶標識號:UID
用戶標識號(User ID),是一個整數,系統內部用它來標識用戶。
0是系統管理員賬號,1-999是系統保留賬號,1000+即一般賬號。useradd 命名默認生成UID=1000。
組標識號:GID
GID:用戶組標識號(Group ID),是一個整數,系統內部用它來標識用戶組。
註釋性描述:
字段記錄着用戶的一些個人情況,例如用戶的真實姓名、電話、地址等,這個字段並沒有什麼實際的用途。
主目錄:
也就是用戶的起始工作目錄,它是用戶在登錄到系統之後所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用戶主目錄的名稱就是該用戶的登錄名。各用戶對自己的主目錄有讀、寫、執行(搜索)權限,其他用戶對此目錄的訪問權限則根據具體情況設置。
登錄Shell:
用戶登錄後,要啓動一個進程,負責將用戶的操作傳給內核,這個進程是用戶登錄到系統後運行的命令解釋器或某個特定的程序,即Shell。Shell是用戶與Linux系統之間的接口。
查看用戶密碼可以執行 :
[root@localhost ~]# cat /etc/shadow
用戶(user)影子口令文件,存放賬戶密碼相關信息。該文件的權限必須設置爲:400 或者600,即:Linux /etc/shadow文件是隻有系統管理員纔有權利進行查看和修改的文件。
每行內容按:分隔。
登錄名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
登錄名:
是與/etc/passwd文件中的登錄名相一致的用戶賬號
口令:
存放的是加密後的用戶口令字,如果爲空,則對應用戶沒有口令,登錄時不需要口令;
星號代表帳號被鎖定;
雙歎號表示這個密碼已經過期了。
$6$開頭的,表明是用SHA-512加密的,
$1$ 表明是用MD5加密的
$2$ 是用Blowfish加密的
$5$ 是用 SHA-256加密的。
最後一次修改時間:
表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。
最小時間間隔:
指的是兩次修改口令之間所需的最小天數。
最大時間間隔:
指的是口令保持有效的最大天數。
警告時間:
字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
不活動時間:
表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。
失效時間:
字段給出的是一個絕對的天數(1970年到現在的天數),如果使用了這個字段,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登錄了。
1.2.2.2 用戶創建
useradd
命令格式:
useradd [選項] 使用者賬號名
命令功能:
用來建立用戶帳號和創建用戶的起始目錄,使用權限是超級用戶。
選項和參數:
-u UID: 直接指定一個特定的 UID 給這個賬號;
-g 初始羣組名:該羣組的 GID 會被放置到 /etc/passwd 的第四個字段內。
-G 附加羣組名:後面接的組名則是這個賬號還可以加入的附加羣組。這個選項與參數會修改 /etc/group 內的相關資料。
-M :強制!不要建立用戶家目錄!(系統賬號默認值)
-m :強制!要建立用戶家目錄!(一般賬號默認值)
-c 描述性字符串:註釋性描述,這個就是 /etc/passwd 的第五欄的說明內容
-d 目錄:指定某個目錄成爲家目錄,而不要使用默認值。務必使用絕對路徑!一般情況下linux除了執行shell腳本之外 很少使用相對路徑
-r :建立一個系統的賬號,系統賬號不建立家目錄;
-s shell:後面接一個 shell ,若沒有指定則預設是 /bin/bash
實例
1)創建一個最普通的賬號(用戶名 user1 用戶描述 這個一個普通賬戶)
[root@localhost ~]# useradd -c 這是一個最普通的賬戶 user1
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1005:這是一個最普通的賬戶:/home/user1:/bin/bash
此處我們需要關心的問題是 ,普通賬戶的UID起始是1000,那UID後面的 1005 的 GID是哪個組呢?我們查詢一下
[root@localhost ~]# cat /etc/group | grep 1005
user1:x:1005:
通過觀察我們發現創建普通用戶的時候還會創建一個按用戶名命名的組,並且把該用戶添加到了這個同名的組裏面
如果是這樣的話,我們想在創建用戶的時候指定組該怎麼辦呢?此時可以用 -G 和 -g 參數
2)創建一個賬戶歸屬 GID=1000 的用戶組
[root@localhost ~]# useradd -g 1000 user2
[root@localhost ~]# useradd -g group1 user3
[root@localhost ~]# cat /etc/passwd | grep user*
user1:x:1000:1005:這是一個最普通的賬戶:/home/user1:/bin/bash
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
上面的代碼我們可以用-g 來初始化用戶的組 -g 後面加需要歸屬的 組的 ID 和 名稱 都可以
那麼既然已經設置了基礎組還會創建用戶同名組麼?
[root@localhost ~]# cat /etc/group | grep user*
users:x:100:
user1:x:1005:
通過觀察我們發現並沒有!
3)創建一個賬戶歸屬自己同名組並歸屬 GID爲1000的組
[root@localhost ~]# useradd -G 1000 user4
[root@localhost ~]# useradd -G group1 user5
[root@localhost ~]# cat /etc/passwd | grep user*
user1:x:1000:1005:這是一個最普通的賬戶:/home/user1:/bin/bash
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
通過觀察我們可以發現上面的user4 和 user5 有兩個不同的GID爲 1006 和 1007
那麼它歸屬 GID=1000的組了麼?我們查查看
[root@localhost ~]# cat /etc/group | grep -E '1000|1006|1007'
group1:x:1000:user4,user5
user4:x:1006:
user5:x:1007:
通過觀察我們發現 group1 GID=1000 這個組裏添加了user4和user5兩個用戶
並且系統也幫助我們創建了以user4和user5命名的組
這個就是附加! -G
4)創建一個系統賬戶
[root@nn1 ~]# useradd -r sysuser1
[root@localhost ~]# cat /etc/passwd | grep sysuser1
sysuser1:x:997:995::/home/sysuser1:/bin/bash
此處我們可以發現 UID是 997(1000以下) GID 995
[root@localhost ~]# cat /etc/group | grep 995
sysuser1:x:995:
5)創建一個不能使用shell 並且要設置用戶的家目錄到其他位置
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一個特殊的普通用戶 nologinuser1
useradd:無法創建目錄 /userhome/user1
[root@localhost ~]# mkdir -p /userhome/user1 創建這個目錄
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一個特殊的普通用戶 nologinuser1
useradd:用戶“nologinuser1”已存在
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user1 -c 一個特殊的普通用戶 nologinuser2
useradd:警告:此主目錄已經存在。
不從 skel 目錄裏向其中複製任何文件。
[root@localhost ~]# useradd -s /sbin/nologin -d /userhome/user3 -c 一個特殊的普通用戶 nologinuser3
[root@localhost ~]# ll /userhome/
總用量 0
drwxr-xr-x. 2 root root 6 5月 30 16:47 user1
drwx------. 2 nologinuser3 nologinuser3 62 5月 30 16:47 user3
[root@localhost ~]# cat /etc/passwd | grep nologinuser*
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一個特殊的普通用戶:/userhome/user3:/sbin/nologin
此處需要注意 : 用戶的默認家目錄在 /home/用戶名 這個目錄裏
舉個例子 : 我創建了一個user 叫user1
那麼這個用戶的家目錄 對應應該就是 /home/user1
那麼問題來了 --> 什麼是家目錄呢?
家目錄 和 windows中用戶的我的文檔類似 用戶登陸成功進入的第一個目錄就是自己得家目錄;
家目錄對於用戶來說 用戶具有最大的管理權限 所以家目錄對於用戶來說 是 700 權限的;
那啥是700權限呢? 不着急我們一會再說,此處我們主要還是針對用戶操作;
1.2.2.3 UU 用戶修改
usermod
命令格式:
usermod [選項] 使用者賬號名
命令功能:
usermod命令用於修改用戶的基本信息。usermod命令不允許你改變正在線上的使用者帳號名稱。
選項和參數:
-c 備註:修改用戶帳號的備註文字;
-d 家目錄:修改用戶登入時的主目錄,前提:已存在要修改的家目錄;
-g 初始羣組:修改用戶所屬的羣組;
-G 附加羣組;修改用戶所屬的附加羣組;
-h:顯示幫助信息;
-l 帳號名稱 :修改用戶帳號名稱;
-s shell:修改用戶登入後所使用的shell;
-u UID:修改用戶ID;
實例:
1)將現有用戶添加到現有組中
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1005:這是一個最普通的賬戶:/home/user1:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
[root@localhost ~]# cat /etc/group | grep 1005
user1:x:1005:
[root@localhost ~]# usermod -g group1 user1
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:1000:1000:這是一個最普通的賬戶:/home/user1:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
上面的操作可以觀察到之前user1的GID 是1005 修改了之後變成了 1000
2)修改用戶名
[root@localhost ~]# usermod -l userop1 -c 'web管理員' user1
[root@localhost ~]# cat /etc/passwd | grep user*
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一個特殊的普通用戶:/userhome/user3:/sbin/nologin
userop1:x:1000:1000:web管理員:/home/user1:/bin/bash
修改了用戶名 順便也修改了備註信息
3)修改用戶的家目錄位置
[root@localhost ~]# cat /etc/passwd | grep userop1
userop1:x:1000:1000:web管理員:/home/user1:/bin/bash
[root@localhost ~]# usermod -d /userhome/user4 userop1
[root@localhost ~]# cat /etc/passwd | grep userop1
userop1:x:1000:1000:web管理員:/userhome/user4:/bin/bash
修改完用戶名及家目錄之後,不能正常的登錄,需要拷貝正常家目錄下的三個文件,命令如下:
cp ./.bash* /home/新用戶的家目錄
4)修改用戶的登錄密碼
passwd
命令格式:
passwd [選項] [使用者賬號名]
命令功能:
passwd命令用於設置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。
root用戶可以設置及修改其他用戶的密碼,普通修改自己的密碼。
選項:
-d:刪除密碼,僅有系統管理者才能使用;
-f :強制執行;
實例:
因爲useradd的用戶並沒密碼可以通過此命令進行設置
1) 修改管理員密碼
[root@localhost ~]# passwd
更改用戶 root 的密碼 。
新的 密碼:
無效的密碼: 密碼是一個迴文
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
passwd 如果不帶參數就是修改當前用戶的,所以root身份登錄修改的也是root的密碼,此處需要注意當你在輸入密碼的時候是不會顯示密碼的
2) 修改其他用戶密碼
[root@localhost ~]# passwd userop1
更改用戶 userop1 的密碼 。
新的 密碼:
無效的密碼: 密碼是一個迴文
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost ~]# passwd -f userop1
更改用戶 userop1 的密碼 。
新的 密碼:
無效的密碼: 密碼是一個迴文
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
切換驗證
[root@localhost ~]# su - userop1
su: 警告:無法更改到 /userhome/user4 目錄: 沒有那個文件或目錄
-bash-4.2$ ll
ls: 無法打開目錄.: 權限不夠
-bash-4.2$ cd /
-bash-4.2$ ll
總用量 16
lrwxrwxrwx. 1 root root 7 5月 30 12:25 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 5月 30 12:28 boot
drwxr-xr-x. 20 root root 3220 5月 30 12:29 dev
drwxr-xr-x. 74 root root 8192 5月 30 17:14 etc
drwxr-xr-x. 7 root root 71 5月 30 16:36 home
lrwxrwxrwx. 1 root root 7 5月 30 12:25 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 30 12:25 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 112 root root 0 5月 30 12:29 proc
dr-xr-x---. 2 root root 114 5月 30 12:28 root
drwxr-xr-x. 23 root root 720 5月 30 12:29 run
lrwxrwxrwx. 1 root root 8 5月 30 12:25 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 5月 30 12:29 sys
drwxrwxrwt. 8 root root 211 5月 30 14:05 tmp
drwxr-xr-x. 4 root root 32 5月 30 16:47 userhome
drwxr-xr-x. 13 root root 155 5月 30 12:25 usr
drwxr-xr-x. 19 root root 267 5月 30 12:29 var
-bash-4.2$ su - root
密碼:
上一次登錄:四 5月 30 12:31:03 CST 2019從 192.168.92.1pts/0 上
用戶自己改密碼
-bash-4.2$ passwd
更改用戶 userop1 的密碼 。
爲 userop1 更改 STRESS 密碼。
(當前)UNIX 密碼:
新的 密碼:
重新輸入新的 密碼:
抱歉,密碼不匹配。
新的 密碼:
重新輸入新的 密碼:
passwd:所有的身份驗證令牌已經成功更新。
用戶自己修改密碼的時候必須遵守密碼修改原則
1. 先輸入當前密碼驗證
2. 新密碼要求由數字和字母組成長度要大於8位
3. 密碼中要包含大小寫字母
所以自己修改密碼的時候還是要花費一定經歷的
1.2.2.4 UD 用戶刪除
userdel
命令格式:
userdel [選項] 使用者賬號名
命令功能:
userdel刪除一個用戶賬號和相關的文件。 userdel命令修改系統賬號文件/etc/passwd,刪除所有條目有關用戶登錄名。該用戶名必須存在。
選項和參數:
-f,--force 該選項強制刪除用戶賬號,即使該用戶仍在登錄。
-r, --remove 在用戶家目錄裏面的文件將被刪除並且家目錄本身和用戶的郵件池也會被刪除。文件位於其他文件系統的必須手動搜索和刪除。
建議不要用 -r 直接刪除,用普通刪除,家目錄先保留一段時間,然後在手動刪除,以免家目錄內的文件找不回來。
實例:
刪除指定的用戶
[root@localhost ~]# cat /etc/passwd | grep user
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一個特殊的普通用戶:/userhome/user3:/sbin/nologin
userop1:x:1000:1000:web管理員:/userhome/user4:/bin/bash
[root@localhost ~]# userdel userop1
userdel: user userop1 is currently used by process 9251
上面提示userop1 正在使用不能刪除;
那麼要是就想刪呢?
[root@localhost ~]# userdel -rf userop1
userdel: user userop1 is currently used by process 9251
userdel:未找到 userop1 的主目錄“/userhome/user4”
[root@localhost ~]# cat /etc/passwd | grep user
user2:x:1001:1000::/home/user2:/bin/bash
user3:x:1002:1000::/home/user3:/bin/bash
user4:x:1003:1006::/home/user4:/bin/bash
user5:x:1004:1007::/home/user5:/bin/bash
sysuser1:x:997:995::/home/sysuser1:/bin/bash
nologinuser1:x:1005:1008:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser2:x:1006:1009:一個特殊的普通用戶:/userhome/user1:/sbin/nologin
nologinuser3:x:1007:1010:一個特殊的普通用戶:/userhome/user3:/sbin/nologin
強制刪除了userop1
注意 : linux沒有回退功能,所以刪除了就是刪除了,就再也找不回來了!
1.2.3 Linux羣組管理員功能
gpasswd
gpasswd命令是Linux下工作組文件/etc/group和/etc/gshadow管理工具。
命令格式:
gpasswd [選項] 要管理的工作組
命令功能:
管理羣組。
選項:
-a 用戶:添加用戶到組;
-d 用戶:從組刪除用戶;
-A 用戶:指定管理員;
-h:幫助信息;
-r:刪除密碼;
實例:
1) 給組設置密碼
[root@localhost ~]# gpasswd group1
正在修改 group1 組的密碼
新密碼:
請重新輸入新密碼:
1)指定組的管理員
[root@localhost ~]# gpasswd -A user4 group1
2)添加新用戶到組
[root@localhost ~]# su - user4
[user4@localhost ~]$ gpasswd -a user2,user3 group1
gpasswd:用戶“user2,user3”不存在
[user4@localhost ~]$ gpasswd -a user2 group1
正在將用戶“user2”加入到“group1”組中
[user4@localhost ~]$ gpasswd -a user3 group1
正在將用戶“user3”加入到“group1”組中
[user4@localhost ~]$ cat /etc/group | grep group
group1:x:1000:user4,user5,user2,user3
group3:x:1003:
group4:x:1004:
3)將用戶移出組
[user4@localhost ~]$ gpasswd -d user2 group1
正在將用戶“user2”從“group1”組中刪除
[user4@localhost ~]$ cat /etc/group | grep group1
group1:x:1000:user4,user5,user3
1.3 linux的用戶相關命令
1.3.1 id 命令 查看用戶信息
命令格式:
id [選項][用戶名稱]
命令功能:
id命令可以顯示真實有效的用戶ID(UID)和組ID(GID)。UID 是對一個用戶的單一身份標識。組ID(GID)則對應多個UID。
id命令已經默認預裝在大多數Linux系統中。要使用它,只需要在你的控制檯輸入id。不帶選項輸入id會顯示如下。結果會使用活躍用戶。
選項:
-g 顯示用戶所屬羣組的ID。
-G 顯示用戶所屬,附加羣組的ID。
--help 顯示幫助。
實例:
1)查看當前信息
[user4@localhost ~]$ id
uid=1003(user4) gid=1006(user4) 組=1006(user4),1000(group1) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
2) 查看其他用戶
[root@localhost ~]# id user2
uid=1001(user2) gid=1000(group1) 組=1000(group1),1003(group3)
[root@localhost ~]# id -g user2
1000
[root@localhost ~]# id -G user2
1000 1003
1.3.2 su 命令 用戶切換
命令格式:
su [-] [要切換的用戶名稱]
命令功能:
su命令用於切換當前用戶身份到其他用戶身份,變更時須輸入所要變更的用戶帳號與密碼。
選項:
- :切換用戶後,環境變量也切換成用戶的環境變量;
不加- :切換用戶,不切換環境變量
實例:
1)切換到目標用戶
su - 會隨着用戶的切換環境變量
su 不會隨着用戶的切換環境變量
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# su - user4
上一次登錄:四 5月 30 17:33:47 CST 2019pts/0 上
[user4@localhost ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user4/.local/bin:/home/user4/bin
[user4@localhost ~]$ su root
密碼:
[root@localhost user4]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user4/.local/bin:/home/user4/bin
[root@localhost user4]# su - root
上一次登錄:四 5月 30 17:49:57 CST 2019pts/0 上
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin