Linux用戶管理

用戶相關命令

1.1 useradd 命令創建用戶
語法格式:useradd [options] [login]
useradd [選項] [用戶名]
選項:
-n 不創建以用戶名爲名的組
-c 創建用戶時,添加個人信息
-u 用戶ID值,這個值必須是唯一的
-s 用戶登錄後使用的shell
-g 指定用戶對應的組,對應的組必須在系統中存在
範例1:useradd命令不使用任何選項
[root@localhost ~]# useradd agan
[root@localhost ~]# grep -w "agan" /etc/passwd
agan:x:504:504::/home/agan:/bin/bash
[root@localhost ~]# grep -w "agan" /etc/group
agan:x:504:
注:創建用戶的同時,並創建了一個以自己爲名的組
範例2:-n 選項
[root@localhost ~]# useradd -n agan1
[root@localhost ~]# grep -w "agan1" /etc/passwd
agan1:x:505:100::/home/agan1:/bin/bash
[root@localhost ~]# grep -w "agan1" /etc/group
[root@localhost ~]#
注:創建用戶時,使用-n參數,不創建以自己爲名的組
範例3:-c 選項
[root@localhost ~]# useradd -c oldboy,15810516499,河北 agan2
[root@localhost ~]# grep -w "agan2" /etc/passwd
agan2:x:506:506:oldboy,15810516499,河北:/home/agan2:/bin/bash
注:創建用戶的同時,添加agan2用戶的個人信息,個人信息使用逗號隔開。
範例4:-u 選項
[root@localhost ~]# useradd -u 888 agan3
[root@localhost ~]# grep -w "agan3" /etc/passwd
agan3:x:888:888::/home/agan3:/bin/bash
注:創建用戶的同時,修改用戶默認的UID
範例5: -s選項
[root@localhost ~]# useradd -s /sbinlogin tian
[root@localhost ~]# grep -w "tian" /etc/passwd
tian:x:8892:8892::/home/tian:/sbinlogin
注:-s指定用戶登錄後的shell,/sbinlogin 表示禁止登錄,此例在企業中部署nginx、mysql等服務時經常用到。
範例6:-g選項
[root@localhost ~]# groupadd edu
[root@localhost ~]# useradd -g edu agan6
[root@localhost ~]# grep -w "agan6" /etc/passwd
agan6:x:8893:8893::/home/agan6:/bin/bash
[root@localhost ~]# id agan6
uid=8893(agan6) gid=8893(edu) groups=8893(edu)
注:讓agan6用戶,隸屬於到edu組,這裏通過id 命令來查看用戶,所屬於的組。因爲使用-g 組信息記錄在/etc/passwd中。事實上系統確認一個用戶的所屬組的時候是根據/etc/passwd的組ID。 因此,"useradd -g"僅僅修改/etc/passwd,而不會修改/etc/group。 加"-G"參數會把修改記錄在/etc/group
1.2 usermod 修改系統已經存在的用戶信息

語法:usermod   [options]    [login]
     usermod    [選項]       [用戶名]
選項:
-c   修改用戶的個人信息,同useradd 的-c功能  
-g   修改用戶對應的用戶組,同  useradd的-d功能
-s   修改用戶登錄後使用的shell名稱,同useradd的-s功能
-u   修改用戶的uid ,同useradd 的-u功能
-l    修改用戶的名稱

 範例1:-l選項,把agan6的用戶名改爲u1
[root@localhost ~]# usermod   -l   u1   agan6
                                                     新名   已存在的名

1.3 userdel 刪除用戶
語法:userdel [options] [login]
userdel [選項] [用戶名]

  選項:
  -f     強制刪除用戶
  -r     刪除用戶的同時,刪除與用戶相關的所有文件(包含郵箱信息)

 範例1:不加參數刪除用戶
  userdel 用戶名

只刪除用戶的個人信息,不能刪除用戶的郵箱信息,在/home下還可以看到用戶名
注: 如果忘記添加-r參數時,想徹底刪除用戶 ,就要進入到郵箱所存在的路徑,刪除郵箱信息
[root@localhost home]# cd /var/spool/mail/
[root@localhost mail]# ls
agan11 agan8 tian u11 u3
agan6 agan9 u1 u2 u6

範例2:加-r參數 刪除用戶
  userdel -r 用戶名 

刪除用戶(刪除用戶的個人信息和郵箱信息,也就是刪除所有信息)
備註:當使用-r 也無法徹底清空用戶內容時,把這兩個配置文件中與要刪除的用戶相關的信息,註釋或刪除掉。
/etc/passwd /etc/group

1.4 修改用戶密碼命令 passwd
語法:passwd [option] [username]
passwd [選項] [用戶名]
選項:
--stdin //從標準輸入讀取密碼字符串

 範例1:修改當前用戶的密碼

[root@localhost ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
 注:普通用戶使用passwd 修改密碼時,必須滿足密碼複雜性要求;root 修改密碼不需要滿足密碼複雜性。

範例2:修改普通用戶的密碼

[root@localhost ~]# useradd u1
[root@localhost ~]# passwd u1
Changing password for user u1.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

範例3:一條命令非人工交互設置密碼(企業使用技巧)
[root@localhost ~]# echo "123456" | passwd --stdin u1
Changing password for user u1.
passwd: all authentication tokens updated successfully.
 注:這個命令在工作中批量設置密碼時很有用

範例4:批量更新用戶的密碼
[root@localhost gj]# chpasswd //命令輸入完,直接回車
root:123456 //格式 用戶名:密碼,用戶必須存在纔可以,一行一個用戶
u1:123456
u2:654321 //輸入完成後,直接ctrl+D 結束輸入
 注:此命令有一個bagel,當一行輸入錯誤後,不能返回修改。
當使用useradd 命令批量創建用戶後,可以使用chpasswd 命令批量設置密碼或批量修改密碼。

範例5:把用戶和密碼字符串放到文件裏執行批量改密碼
[root@localhost gj]# cat passwd.txt
u1:123
u2:321
u3:123
[root@localhost gj]# chpasswd < passwd.txt
1.5 su sudo
su的作用是變更爲其它使用者的身份,超級用戶除外,需要鍵入該使用者的密碼。
su 切換用戶卻不切換工作環境 , su - 同時切換用戶與工作環境

注:
su的缺點造就了sudo的誕生
由於用戶通過 su root 命令直接獲取root權限,從而造成用戶的權限太大,也就可能給系統造成危險。
爲了既保證系統的安全又可以執行相應命令,sudo 也就以此誕生。

1.6 sudo作用:
通過配置文件來限制用戶的權限 ,可以讓普通用戶在執行指定的命令或程序時,擁有超級用戶的權限。
sudo的工作過程如下:
1,當用戶執行sudo時,系統會主動尋找/etc/sudoers文件,判斷該用戶是否有執行sudo的權限
2,確認用戶具有可執行sudo的權限後,讓用戶輸入用戶自己的密碼確認
3,若密碼輸入成功,則開始執行sudo後續的命令
4,root執行sudo時不需要輸入密碼(因爲sudoers文件中有配置root ALL=(ALL) ALL這樣一條規則)

範例1:給普通用戶u1提權,讓普通用戶可以查看root用戶的家目錄;普通用戶可以使用useradd命令,創建新用戶
範例分析步驟:
1) useradd u1
2) visudo=vi打開/etc/sudoers文件 或 vim /etc/sudoers
 注:visudo會檢查內部語法,避免用戶輸入錯誤信息,所以我們一般使用visudo,編輯此文件要用root權限
3) 編輯文件的第98行,編輯完成後,wq! 強制保存退出
root ALL=(ALL) ALL
u1 ALL=(ALL) /bin/ls,/usr/sbin/useradd

4)使用u1 用戶登錄測試
sudo useradd u11 //可成功創建用戶,證明提權成功
sudo ls /root //可查看root的家,證明提權成功
5) sudo -l //-l 參數是列出當前用戶可執行的命令,但只有在sudoers文件裏的用戶才能使用該選項。
第2章 用戶查詢命令
2.1 w命令
w命令用於顯示目前登入系統的用戶信息。
執行這項指令可得知目前登入系統的用戶有哪些人,以及他們正在執行的程序。

範例1:
單獨執行 w 指令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。

2.2 id命令 查看用戶的UID 、GID
[root@bogon /]# id user6
uid=8897(user6) gid=8899(z11) groups=8899(z11)
[root@bogon /]# id -g user6
8899
[root@bogon /]# id -G user6
8899
[root@bogon /]# id -u user6
8897
2.3 last命令用了顯示用戶登錄情況,以下是直接顯示固定行數的記錄:
2.4 lastlog 命令 顯示linux中所有用戶最近一次遠程登錄的信息
第3章 組的相關命令
3.1 添加用戶組命令 groupadd

  語法:groupadd  [options]   [group]
            groupadd   [選項]      [用戶組]
  選項:
  -g   gid         指定用戶組的GID,GID唯一不能爲負數,如果不指定GID從500開始
  -f                  新增一個組,強制覆蓋一個已存在的組,GID、組成員不會改變。

 範例1:添加組z11,查看添加後的組信息
[root@bogon ~]# groupadd z11
[root@bogon ~]# grep "z11" /etc/group
z11:x:8895:
[root@bogon ~]# tail -1 /etc/group
z11:x:8895:

3.2 gpasswd戶加入到組中的命令
將已存在的用戶加入到組中的命令
語法:gpasswd [options] [user] [group]
gpasswd [選項] [用戶名] [組名]
選項:
-a:添加一個用戶到組,可以追加到組
-M:添加多個用戶到組,覆蓋之前的組成員
-d:從組刪除用戶

範例1:把user1用戶添加到z1,並且查看是否添加成功
[root@bogon gj]# groupadd z1
[root@bogon gj]# useradd user1
[root@bogon gj]# gpasswd -a user1 z1
Adding user user1 to group z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user1
注:-a選項只能添加一個用戶,需要同時添加多用戶時,使用-M參數
範例2:同時添加user2、user3用戶到z1組(先創建user2、user3用戶)
[root@bogon gj]# gpasswd -M user2,user3 z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user2,user3
注:使用-M參數添加多個用戶時,多用戶之間使用逗號分割;添加批量用戶時,先使用-a參數,在使用-M參數,就會覆蓋之前添加過的用戶;所以添加多用戶時,先使用-M 參數。
範例3:將user2用戶從組中刪除
[root@bogon gj]# gpasswd -d user2 z1
Removing user user2 from group z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user3

3.3 groupmod修改組信息的命令
語法:groupmod [options] [group]
groupmod [選項] [組名]

           groupmod  -n  新名  舊名
           groupmod  -g  8888  dir
 選項:
 -n        修改組名
 -g       修改GID
 範例1:修改z1組的GID

[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user3
[root@bogon gj]# groupmod -g 8888 z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8888:user3

範例2:修改z1組的組名爲newz1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8888:user3
[root@bogon gj]# groupmod -n z1new z1
[root@bogon gj]# grep "z1" /etc/group
z1new:x:8888:user3
3.4 groupdel刪除組的命令

 語法:groupdel   [group]
           groupdel   [組名]

範例1:
groupdel 組名
刪除組,刪除組後,用戶名依然存在
附加命令: 查看用戶屬於到哪些組,使用命令:groups
語法:groups [user]
groups 用戶名
範例1:
[root@bogon gj]# groups user1
user1 : user1 z2
第4章 批量創建用戶:腳本
1、創建一個文件,此文件的擴展名必須爲*.sh
vim aa.sh
#!/bin/bash
for ((i=1;i<=10;i++));
{
useradd gj$i

}
echo "批量用戶成功創建完成啦!!!"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章