linux 用戶、用戶組及相關命令(useradd 、passwd、userdel 、groupadd 、groupdel、usermod 、gpasswd 、 id、su)


linux是一個多用戶系統,用於權限管理(權限最小化);

相關命令:

7 8 9 10 11 12 13 14 15
useradd passwd userdel groupadd groupdel usermod gpasswd id su

1、linux系統中主組和附加組

在Linux系統中創建每個用戶時,將自動創建一個與其同名的基本用戶組,而且這個基本用戶組只有該用戶一個人。如果該用戶以后被歸納入其他用戶組,則這個其他用戶組稱之為擴展用戶組。一個用戶只有一個基本用戶組,但是可以有多個擴展用戶組;

用戶的基本組(主組)
用戶的附加組:用戶額外屬於的組,一個用戶可以加入多個附加組

2、Linux中的用戶類別

在linux系統中共有3種用戶:

管理員用戶(root) uid=0 可以登錄系統 有管理權限
普通用戶 1000<uid 可登錄系統 沒有管理權限
系統用戶 1<uid<999 不可以登錄用戶 沒有管理權限

注意:是否可以登錄系統由shell類型決定,詳見:本文中useradd命令講解

3、用戶管理相關文件

文件位置 文件信息
/etc/passwd 用戶基本信息
/etc/shadow 用戶密碼信息、過期時間等
/etc/group 用戶組信息
/etc/gshadow 用戶組密碼
/etc/default/useradd 創建用戶的默認配置信息
/etc/skel/ 用戶家目錄模板
/etc/login.defs 全局用戶設定信息

4、/etc/passwd文件詳解

/etc/passwd: 每行是一個用戶,用來記錄用戶的基本信息,每行的格式

account:password:UID:GID:GECOS:directory:shell
其中:
accout:用戶名
password:用戶密碼,密碼位置默認是x
UID:用戶身份id,用來唯一的標識一個用戶
GID:用戶組id,用來在系統中唯一的標識一個用戶組(這里指的是其基本組的組ID)
GECOS:用戶描述信息,可以空白,也可以隨意寫(useradd -c )
directory:用戶家目錄
shell:用戶所使用的shell類型
/bin/bash–>可以登錄系統
/sbin/nologin–>該用戶一定無法登錄系統

╭─root@localhost.localdomain ~  
╰─➤  cat /etc/passwd
root:x:0:0:root:/root:/bin/zsh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
du:x:1000:1000:du:/home/du:/bin/bash

root   :   x   :    0    :       0       :   newuser  :  /root  :  /bin/bash
用戶名  :  密碼  :  用戶id  :  用戶所在組的id :  描述信息  :  家目錄  :  shell類型

5、/etc/group文件詳解

用戶組信息

linux,用戶一定是屬於一個組的在linux中,創建用戶的時候,會自動創建一個組,組名和組id都和所創建的用戶相同,而且,該用戶會自動加入到這個組中;

groupname:password:GID: [user1, user2…..]
組成:
groupname:組名
password:組密碼
GID:組id
[user1, user2…..]:該組中的用戶列表

╭─root@localhost.localdomain ~  
╰─➤  cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
mail:x:12:postfix
tcpdump:x:72:
du:x:1000:du

6、/etc/shadow文件詳解

zxhk:  $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 :  7  :   :   :

第一段:用戶名:
第二段:加密后的密碼
第三段:上次修改密碼舉例元年經過的天數1970年1月1日(如果該字段空,意味着該用戶密碼被禁用)
第四段:密碼最短使用時間(0表示不限制)
第五段:密碼最長有效期(99999表示不限制)(如果第5的值小於第四段,那么用戶無法修改自己的密碼)
第六段:密碼到期前幾天開始發送告警,提示密碼即將過去,請立即修改
第七段:非活動期間,密碼到期后的寬限時間(登錄系統的時候必須先修改密碼,才能登錄)
第八段:密碼過期時間(也是舉例計算機元年經過的天數)(這里和前面的幾個時間沒有聯系)
第九段:保留字段

╭─root@localhost.localdomain ~  
╰─➤  cat /etc/shadow
root:$6$8.xhQ.jTum4dlHEi$fM.SZ2c7mEx7pfCNRJbOrwGBDM5OUySnv7pXIGrjhDbCWEk8Omba3atvGw8GexM/IhEyxskiPx4sE4beJPVKK.::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
du:$6$0RkDAuAfxyCuINAA$3PokksZIeoqccUXseqJBhhHoQEjT0G97IvztZNupUwBC4cxN3JtZkLlsaExH7Api0GTmDcASMZnCG/mVsa3dJ.::0:99999:7:::

7、Useradd命令

useradd [options] username
options:
-d:指定用戶家目錄 –home
-c:用戶說明信息–comment
-e: 指的賬號的過期時間–expiredate ;時間格式 YYYY/MM/DD
-g:指的用戶的基本組的組id –gid #1
-G:指的用戶的附加組列表 –groups #2
-u :指的用戶的uid #3
-r :創建一個系統用戶 #4 不創建家目錄,不會復制 /etc/skel 下的文件;
-s :指定用戶的shell類型(/bin/bash/,/sbin/nologin) #5
/bin/bash–>可以登錄系統
/sbin/nologin–>該用戶一定無法登錄系統

useradd -s /sbin/nologin  -r user1                       #創建一個系統用戶user1

8、passwd 修改用戶密碼

passwd [[options] username]

options:
-l:鎖定用戶
-u:解鎖用戶
-d:刪除用戶密碼
-e:讓用戶密碼過期
:如果不指定用戶名,那么就是修改當前用戶的密碼
--stdin

echo “ 123“ | passwd --stdin user1        #表示給user1 用戶設置密碼123 (user1 用戶必須存在)

9、Userdel命令

userdel [-r] username #-r:在刪除用戶的時候,連同用戶數據一並刪除
rm -rf /home/username 刪除用戶名
rm -rf /var/spool/mail/* 刪除郵件mail

10、 groupadd 創建用戶組

groupadd [-g] groupname # -g 指定組ID

11、 groupdel 刪除用戶組

groupdel groupname

12、Usermod命令

usermod [options] username
options:
-g, –gid 基本組組id #1
-G, –groups 附加組組id #2
-u, –uid user的id #3
-s, –shell 更改shell類型 #4
-L, –lock: 鎖定用戶賬號
-U : 解鎖用戶賬號
-l, –login變更使用者login時的名稱為login_name
-e, –expiredate 加上使用者帳號停止日期 ,日期格式為MM/DD/YY.
-d, –home 更新使用者新的登入目錄
-m, –move-home:移動用戶家目錄至新的位置

╭─root@localhost.localdomain ~  
╰─➤  useradd -s /sbin/nologin test1
╭─root@localhost.localdomain ~  
╰─➤  usermod -s /bin/bash test1
╭─root@localhost.localdomain ~  
╰─➤  id test1
uid=1001(test1) gid=1001(test1) group=1001(test1)

13、gpasswd 命令

option:
-a, --adduser
向名為 group 的組中添加用戶 user
-d, --deleteuser
從名為 group 的組中移除用戶 user

╭─root@localhost.localdomain ~  
╰─➤  usermod -G root du
╭─root@localhost.localdomain ~  
╰─➤  id du
uid=1000(du) gid=1000(du) 組=1000(du),0(root)
╭─root@localhost.localdomain ~  
╰─➤  usermod -G du du
╭─root@localhost.localdomain ~  
╰─➤  id du
uid=1000(du) gid=1000(du) 組=1000(du)
╭─root@localhost.localdomain ~  
╰─➤  man gpasswd 
╭─root@localhost.localdomain ~  
╰─➤  gpasswd -a du root
正在將用戶“du”加入到“root”組中
╭─root@localhost.localdomain ~  
╰─➤  id du
uid=1000(du) gid=1000(du) 組=1000(du),0(root)
╭─root@localhost.localdomain ~  
╰─➤  gpasswd -a root du
正在將用戶“root”加入到“du”組中
╭─root@localhost.localdomain ~  
╰─➤  gpasswd -d du root
正在將用戶“du”從“root”組中刪除
╭─root@localhost.localdomain ~  
╰─➤  gpasswd -d root du
正在將用戶“root”從“du”組中刪除

14、id命令

作用:用來查看指定的用戶的信息(或判斷用戶是否存在)

id [-u|-g|-G] username
option:
-u:僅僅顯示用戶uid
-g:僅僅顯示用戶gid
-G:僅僅顯示用戶全部組id

15、su命令(switch user)

  • 作用:進行切換用戶
  • 格式:su – 目標用戶
  • su命令和su -命令最大的本質區別就是:
    前者只是切換了root身份,但Shell環境仍然是普通用戶的Shell;而后者連用戶和Shell環境一起切換成root身份了;只有切換了Shell環境才不會出現PATH環境變量錯誤;su切換成root用戶以后,pwd一下,發現工作目錄仍然是普通用戶的工作目錄;而用su -命令切換以后,工作目錄變成root的工作目錄了;用echo $PATH命令看一下su和su -以后的環境變量有何不同;以此類推,要從當前用戶切換到其它用戶也一樣,應該使用su -命令.
╭─root@localhost.localdomain ~  
╰─➤  su - du
上一次登錄:五 5月 10 20:30:49 CST 2019pts/0 上
[du@localhost ~]$ 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM