Linux學習——用戶管理
1用戶/組概覽
Linux系統是多用戶、多任務的分時操作系統,系統上每一個進程都有一個特定的文件,每個文件都被一個特定的用戶所擁有。如果需要使用系統資源,首先必須向系統超級用戶申請成為普通用戶,然后以普通用戶的身份進入系統。超級用戶可以對普通用戶進行跟蹤,并設置他們的訪問權限,這樣可以保證系統的安全。
每個用戶都屬于一個用戶組或者多個組,系統可以對—個用戶組中的所有用戶進行集中管理。組與組的控制權限是不同的,系統根據不同的需求,把用戶分別放在不同的組中,
3.1.1 用戶標識 :UID與GID
每個用戶都有唯一的系統可識別的UID,它類似與居民身份證編號。
” id “ ——查看當前用戶登錄信息,UID為用戶的ID,GID為用戶所屬組的ID,groups為用戶所屬于的所有組的ID
[root@localhost ~]# id uid=0(root) gid=0(root) 組=0(root) 環境=unconfined_uunconfined_tc0.c1023
” ll “——查看文件的所有者
[root@localhost ~]# ll /home 總用量 12 drwxrwxrwx. 2 root root 31 10月 18 15:21 dir01 drwxr-sr-x. 2 root hr 19 10月 18 15:11 hr drwx------. 3 linux linux 78 11月 1 15:19 linux drwx------. 3 linux01 linux01 78 11月 1 15:22 linux01 drwx------. 3 linux02 linux02 78 11月 1 15:22 linux02 drwx------. 3 linux03S linux03S 78 11月 1 15:22 linux03S drwx------. 17 none none 4096 11月 15 15:19 none drwx------. 5 qf01 qf01 123 10月 18 14:50 qf01 drwx------. 3 qf02 qf02 78 10月 11 14:15 qf02 drwx------. 15 siso siso 4096 11月 8 14:50 siso drwx------. 3 tom tom 78 10月 18 14:05 tom drwx------. 3 1003 user06 78 9月 27 14:34 user03 drwx------. 15 user05 user05 4096 9月 27 15:19 user05 drwx------. 6 user06 user06 120 9月 27 15:21 user06 drwx------. 3 ysq ysq 78 11月 14 22:22 ysq
” ps aux |less “ 查看進程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 193908 7060 ? Ss 12:00 0:26 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S 12:00 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 12:00 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 12:00 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 12:00 0:20 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 12:00 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/0] root 12 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/1] root 13 0.0 0.0 0 0 ? S 12:00 0:00 [migration/1] root 14 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/1] root 16 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/1:0H] root 17 0.0 0.0 0 0 ? S 12:00 0:00 [watchdog/2] root 18 0.0 0.0 0 0 ? S 12:00 0:00 [migration/2] root 19 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/2] root 21 0.0 0.0 0 0 ? S< 12:00 0:00 [kworker/2:0H] root 22 0.0 0.0 0 0 ? S 12:00 0:02 [watchdog/3] root 23 0.0 0.0 0 0 ? S 12:00 0:00 [migration/3] root 24 0.0 0.0 0 0 ? S 12:00 0:00 [ksoftirqd/3]
安裝Apache服務器,重啟服務后,使用”ps aux “命令可以查看運行的http進程的用戶名
[root@localhost ~]# yum -y install httpd //安裝軟件包 [root@localhost ~]# systemctl start httpd //重啟服務 [root@localhost ~]# ps aux | grep httpd root 43382 0.0 0.0 112824 988 pts/1 S+ 21:56 0:00 grep --color=auto httpd
3.1.2 用戶/組相關文件
在Linux系統中,所有用戶的用戶名和密碼都存放在/etc/passw和/etc/shadow這兩個文件中。
在/etc/passwd文件中,一行記錄對應一個用戶,每行記錄又被冒號(:)分隔為7個字段, 依次為用戶名稱、密碼占位符、用戶UID、主組GID、注釋性描述、用戶主目錄、用戶的Shell,具體如下所示。
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt
在/etc/shadow 文件中,每行記錄也由冒號分隔為9個字段, 依次為用戶名稱、加密后的密碼、最近改動密碼時間、密碼不可變更時間(99999 為沒有限制)、密碼重新變更時間、密碼過期時間、密碼過期寬恕時間、用戶失效時間、保留,具體如下所示。
[root@localhost ~]# cat /etc/shadow root:$6$B5PGgwIX$1O51A5REbQ7GGaD71YI/vNEUNQIRebdO3cRWSLwt7Ezt91JEKiYo3uu8ATKETRYfV99YzIa/jjvzCZZ./K51x1:19655:0:99999:7::: bin:*:18353:0:99999:7::: daemon:*:18353:0:99999:7::: adm:*:18353:0:99999:7::: lp:*:18353:0:99999:7::: sync:*:18353:0:99999:7::: shutdown:*:18353:0:99999:7::: halt:*:18353:0:99999:7:::
第 2個字段又分為三部分: $6 表示加密算法的$id, $id 包括$1(MD5)、$5(SHA-256)、$6(SHA-512), $id號越大加密程度越高; $iXOPTKmyXMvd/uDJ表示 salt值(這個值是由系統隨機生成的,若兩個用戶使用同一個密碼,由于系統為它們生成的 salt值不同,哈希值也是不同的); 最后一個$后的內容是系統產生的哈希值。$id+salt值+哈希值就是最終的加密密碼。
例如,創建密碼一樣的兩個用戶,查看哈希值,具體如下所示。
qf1:$6$8FtewMfM$RPD0aIuDGmpE. rAMt7GKCWP8jNs2TtG3nmxbRFqdwm/r3T91R7A4jfTimRj/qbEH PbXQ6ncIcZtryXV2E5MPK.: qf2:$6$FRsRAaAa$WJuDA0I8w7aM5t. L8484mVRd/defTv44xi. PNjxv1G7XpKJQGCvH8R492ZDs6Bdo PIMjoMTpn18f15c5Ipwtt0:
注意,從CentOS 6開始, UID為0是特權用戶, UID為1~499是系統用戶, UID為500 以上是普通用戶。
3.1.3 用戶管理類型
1.超級管理員用戶
超級管理員主要識別是否是root和#這兩個必備的條件來確定當前狀態下是否為管理員用戶
超級管理員用戶的權限的特點是可以使用所有系統及程序命令在Linux操作系統中,UID是指用戶ID(User ID),是Linux系統中用來標識用戶的數字ID。每個用戶在Linux系統中都有一個唯一的UID,這個UID是系統內部用來識別不同用戶的數字編號,系統管理員可以用這個UID來對不同用戶進行管理和授權。
在Linux中,UID為0的用戶是超級管理員(也就是root用戶),其余用戶通常是從1000開始分配的非特權用戶。當一個用戶創建了一個文件或目錄時,該文件或目錄的所有者UID就會設置為該用戶的UID。UID也用于系統安全性方面的考慮,因為只有UID為0的超級管理員才能進行關鍵系統操作,其他用戶只能按照分配給他們的權限執行相應的操作。因此,使用UID和權限機制可以保證系統的安全性和穩定性。
2.普通用戶
普通用戶主要是以#標識來參考當前狀態下是否為普通用戶,與超級管理員不同的是普通用戶只可以使用有限的系統命令和具有使用權限的程序命令。
在Linux系統中,UID從0到999是保留給系統內部特定用戶(例如,root用戶)和特殊組的,因此,普通用戶的UID通常從1000開始。在大多數Linux發行版中,普通用戶的UID編號范圍通常是1000到65535。
3.程序用戶
程序用戶是比較特殊的一種用戶、程序用戶可以運行指令但不允許登錄系統和創建家目錄
UID編號范圍也與普通用戶和超級管理員用戶大不相同,程序用戶的UID編號范圍通常是1到999。
3.2 管理用戶/組
管理用戶與用戶組主要是創建、更改、刪除等操作
3.2.1 創建用戶/組
“useradd”——創建用戶
[root@localhost ~]# useradd qf1 [root@localhost ~]# grep "qf1" /etc/passwd /etc/passwd /etc/group /etc/passwd:qf1:x:1015:1015::/home/qf1:/bin/bash /etc/passwd:qf1:x:1015:1015::/home/qf1:/bin/bash /etc/group:qf1:x:1015: [root@localhost ~]# ls /home/ dir01 linux linux02 none qf02 siso user03 user06 hr linux01 linux03S qf01 qf1 tom user05 ysq [root@localhost ~]# ls /var/spool/mail/ linux linux02 none qf02 root siso user03 user06 linux01 linux03S qf01 qf1 rpc tom user05 ysq
useradd命令中的參數
參數 | 說明 |
---|---|
-d | 指定用戶的主目錄 |
-u | 指定用戶特定的UID(整數) |
-g | 指定用戶主組的名稱或UID |
-G | 指定用戶的附加組列表 |
-s | 指定用戶的登錄shell |
“ groupadd ”——創建用戶組
“useradd -G”——創建用戶,并指定已存在的附加組
[root@localhost ~]# groupadd hh [root@localhost ~]# groupadd hhh [root@localhost ~]# useradd qf2 -G hh [root@localhost ~]# useradd qf3 -G hh,hhh [root@localhost ~]# id qf2 uid=1016(qf2) gid=1016(qf2) 組=1016(qf2),2006(hh) [root@localhost ~]# id qf3 uid=1017(qf3) gid=1017(qf3) 組=1017(qf3),2006(hh),2007(hhh)
“groupadd -g/gid”——指定組的GID
[root@localhost ~]# groupadd hhhh -g 2000 groupadd:GID “2000”已經存在 [root@localhost ~]# groupadd hhhh -g 1802 [root@localhost ~]# grep "hhhh" /etc/group hhhh1802:
“usermod/gpasswd” ——修改一些錯誤的設置數據
[root@localhost ~]# useradd qf4 -G hh [root@localhost ~]# id qf4 uid=1018(qf4) gid=1018(qf4) 組=1018(qf4),2006(hh) [root@localhost ~]# gpasswd -d qf4 hh 正在將用戶“qf4”從“hh”組中刪除 [root@localhost ~]# id qf4 uid=1018(qf4) gid=1018(qf4) 組=1018(qf4) [root@localhost ~]# gpasswd -a qf4 hhh 正在將用戶“qf4”加入到“hhh”組中 [root@localhost ~]# id qf4 uid=1018(qf4) gid=1018(qf4) 組=1018(qf4),2007(hhh)
用戶組的信息存在/etc/group文件中
[root@localhost ~]# tail /etc/group sie2004:ysq robot2005:ysq mysql27: qf011014: qf11015: hh2006:qf2,qf3 hhh2007:qf3,qf4 qf21016: qf31017: qf41018:
3.2.2 刪除用戶/組
“userdel” ——刪除用戶
“userdel -r”——同時在/home目錄與mail spool中刪除用戶
“userdel rm -rf ”——用戶不存在,手動刪除
root@localhost ~]# id qf4 uid=1018(qf4) gid=1018(qf4) 組=1018(qf4),2007(hhh) [root@localhost ~]# userdel qf4 [root@localhost ~]# id qf4 id: qf4: no such user [root@localhost ~]# ls /home dir01 linux linux02 none qf02 qf2 qf4 tom user05 ysq hr linux01 linux03S qf01 qf1 qf3 siso user03 user06 [root@localhost ~]# ls /var/spool/mail linux linux02 none qf02 qf2 qf4 rpc tom user05 ysq linux01 linux03S qf01 qf1 qf3 root siso user03 user06 [root@localhost ~]# userdel -r qf3 [root@localhost ~]# ls /home dir01 linux linux02 none qf02 qf2 siso user03 user06 hr linux01 linux03S qf01 qf1 qf4 tom user05 ysq [root@localhost ~]# ls /var/spool/mail linux linux02 none qf02 qf2 root siso user03 user06 linux01 linux03S qf01 qf1 qf4 rpc tom user05 ysq
“groupdel”——刪除用戶組,如果某個初始用戶正在使用該用戶組,則無法刪除,此時需要修改該用戶的GID或者直接刪除該用戶
[root@localhost ~]# grep "hhhh" /etc/group hhhh1802: [root@localhost ~]# groupdel hhhh [root@localhost ~]# grep "hhhh" /etc/group
3.2.3 修改用戶密碼
任何用戶都可以通過 passwd 命令修改自己的密碼。只有root 用戶可以修改其他用戶的密碼。普通用戶修改密碼需要提供原密碼,對新密碼要求也比較苛刻,root 用戶修政普通用戶的密碼則不需要提供原密碼。當新密碼個足 8位時,系統給予警告。
[root@localhost ~]# passwd qf1
3.2.4 安全用戶
“ userdd -s ”——指定用戶的登錄Shell為sbin/nologin,可以將其設置為安全用戶
[root@localhost ~]# useradd qf8 -s /sbin/nologin [root@localhost ~]# tail -2 /etc/passwd qf2:x:1016:1016::/home/qf2:/bin/bash qf8:x:1017:1017::/home/qf8:/sbin/nologin
查看可登錄當前系統的用戶
[root@localhost ~]# grep "bash$" /etc/passwd root:x:0:0:root:/root:/bin/bash none:x:1000:1000:None:/home/none:/bin/bash user05:x:1004:1006::/home/user05:/bin/bash qf02:x:1006:2002::/home/qf02:/bin/bash tom:x:1007:1007::/home/tom:/bin/bash linux:x:1008:1008::/home/linux:/bin/bash linux01:x:1009:1009::/home/linux01:/bin/bash linux02:x:1010:1010::/home/linux02:/bin/bash linux03S:x:1011:1011::/home/linux03S:/bin/bash siso:x:1012:1012::/home/siso:/bin/bash ysq:x:1013:1013::/home/ysq:/bin/bash qf01:x:1014:1014::/home/qf01:/bin/bash qf1:x:1015:1015::/home/qf1:/bin/bash qf2:x:1016:1016::/home/qf2:/bin/bash
“which reboot ”——查看reboot命令的絕對路徑
[root@localhost ~]# which reboot /usr/sbin/reboot [root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash [root@localhost ~]# setenforce 0 //臨時關閉Selinux [root@localhost ~]# getenforce //查看Selinux狀態 Permissive
3.2.5 配置文件
/etc/login.defs與/etc/default/useradd是命令useradd的配置文件,決定useradd創建用戶默認的數,文件中的配置對root用戶無效。
第15行為郵件目錄
#QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # Password aging controls:
第25~28行為密碼相關配置
PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7
第71行為密碼加密算法配置
# Use SHA512 to encrypt password. ENCRYPT_METHOD SHA512
/etc/default/useradd文件:
# useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
3.2.6 su/sudo 命令
" su "——切換用戶
[none@localhost ~]$ whoami none [none@localhost ~]$ su - 密碼: 上一次登錄:五 11月 24 23:29:31 CST 2023pts/2 上 [root@localhost ~]# su none [none@localhost root]$
“ sudo ”——只有加入wheel組才可以使用此命令,用戶在使用sudo時,必須先輸入密碼,之后有五分鐘的有效時間,超過時限必須重新輸入密碼。
[root@localhost ~]# useradd qf9 -G wheel [root@localhost ~]# id qf9 uid=1018(qf9) gid=1018(qf9) 組=1018(qf9),10(wheel) [root@localhost ~]# su none [none@localhost root]$ useradd qf10 useradd: Permission denied. useradd:無法鎖定 /etc/passwd,請稍后再試。 [none@localhost root]$ sudo useradd qf10 [sudo] none 的密碼: [none@localhost root]$ sudo id qf10 uid=1019(qf10) gid=1019(qf10) 組=1019(qf10)
3.3 本章小結
本章首先介紹了用戶與用戶組標識符的意義,用戶的shell作用以及如何對用戶/用戶組進行增、刪、改、查等操作;其次,講解了如何設置/etc/passwd與/etc/shadow這兩個重要文件以及useadd的文件配置;最后演示了用戶如何使用su命令進行身份切換,普通用戶如何使用sudo命令提權。
-
Linux
+關注
關注
87文章
11335瀏覽量
210086 -
操作系統
+關注
關注
37文章
6874瀏覽量
123568
原文標題:Linux學習——用戶管理
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論