linux是一個多用戶系統,用於權限管理(權限最小化);linux
相關命令:shell
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|
useradd | passwd | userdel | groupadd | groupdel | usermod | gpasswd | id | su |
##一、linux系統中主組和附加組bash
在Linux系統中建立每一個用戶時,將自動建立一個與其同名的基本用戶組,並且這個基本用戶組只有該用戶一我的。若是該用戶之後被概括入其餘用戶組,則這個其餘用戶組稱之爲擴展用戶組。一個用戶只有一個基本用戶組,可是能夠有多個擴展用戶組;dom
用戶的基本組(主組) 用戶的附加組:用戶額外屬於的組,一個用戶能夠加入多個附加組tcp
##二、Linux中的用戶類別post
在linux系統中共有3種用戶:ui
管理員用戶(root) | uid=0 | 能夠登陸系統 | 有管理權限 |
---|---|---|---|
普通用戶 | 1000<uid | 可登陸系統 | 沒有管理權限 |
系統用戶 | 1<uid<999 | 不能夠登陸用戶 | 沒有管理權限 |
注意:是否能夠登陸系統由shell類型決定,詳見:本文中useradd命令講解加密
##三、用戶管理相關文件3d
文件位置 | 文件信息 |
---|---|
/etc/passwd | 用戶基本信息 |
/etc/shadow | 用戶密碼信息、過時時間等 |
/etc/group | 用戶組信息 |
/etc/gshadow | 用戶組密碼 |
/etc/default/useradd | 建立用戶的默認配置信息 |
/etc/skel/ | 用戶家目錄模板 |
/etc/login.defs | 全局用戶設定信息 |
##四、/etc/passwd文件詳解 /etc/passwd: 每行是一個用戶,用來記錄用戶的基本信息,每行的格式code
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類型
##五、/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
##六、/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:::
##七、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
##八、passwd 修改用戶密碼
passwd [[options] username]
options: -l:鎖定用戶 -u:解鎖用戶 -d:刪除用戶密碼 -e:讓用戶密碼過時 :若是不指定用戶名,那麼就是修改當前用戶的密碼 --stdin
echo 「 123「 | passwd --stdin user1 #表示給user1 用戶設置密碼123 (user1 用戶必須存在)
##九、Userdel命令
userdel [-r] username #-r:在刪除用戶的時候,連同用戶數據一併刪除 rm -rf /home/username 刪除用戶名 rm -rf /var/spool/mail/* 刪除郵件mail
##十、 groupadd 建立用戶組
groupadd [-g] groupname # -g 指定組ID
##十一、 groupdel 刪除用戶組
groupdel groupname
##十二、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)
##1三、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」組中刪除
##1四、id命令
###做用:用來查看指定的用戶的信息(或判斷用戶是否存在)
id [-u|-g|-G] username option: -u:僅僅顯示用戶uid -g:僅僅顯示用戶gid -G:僅僅顯示用戶所有組id
##1五、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 ~]$