時間:2023-06-26 10:54:01 | 來源:網(wǎng)站運營
時間:2023-06-26 10:54:01 來源:網(wǎng)站運營
[Linux 安全運維] 第三章 Linux 用戶以及權(quán)限管理:命令速查:/etc/passwd 存儲用戶信息的文件/etc/shadow 存儲用戶密碼信息文件/etc/group 存儲了組信息/etc/sudoers sudo 命令配置文件groupadd 添加組 -g 指定組IDgroupmod 修改組的屬性groupdel 刪除組useradd 添加用戶 -u 指定uid 號 -g 指定基本組 -G 指定附加組 -s 指定用戶登錄的命令解釋器 -s /sbin/nologin -s /bin/bash -M 不創(chuàng)建家目錄usermod 更新用戶信息userdel 刪除用戶 -r 刪除用戶時,同時刪除家目錄passwd 修改用戶密碼 -S 查看用戶密碼狀態(tài) -l 鎖定用戶 -u 解鎖用戶chage 修改密碼過期時間 -M 修改密碼最長有效期為多少天ln -s /tmp/ajest.txt /root/Desktop/ajest.txt 將/tmp/ajest.txt 文件創(chuàng)建快捷方式到/root/Desktop/ajest.txtchmod 修改文件或者目錄的權(quán)限 u-r 撤銷讀權(quán)限 u-w 撤銷寫權(quán)限 o=--- 其他用戶權(quán)限全部撤銷 o-r 撤銷其他用戶列出目錄的權(quán)限 o=rwx 修改其他用戶的權(quán)限 g=--- 修改所屬組的權(quán)限chmod 1777 /tmp/ 對目錄設(shè)置粘滯位chmod 2777 /tmp/rootDir 對目錄設(shè)置sgid 標識chown root /tmp/ajestDir/ajest.txt 修改文件所屬者為rootls -ld /tmp/rootDir/ 查看目錄的權(quán)限sudo 以其他用戶身份執(zhí)行命令su 切換用戶
/etc/passwd
文件中存儲了所有用戶信息。:
為分隔符,一共7 段內(nèi)容。root:x:0:0:root:/root:/bin/bash[--] - - - [--] [---] [--------] | | | | | | | | | | | | | +-> 7. Login shell | | | | | +---------> 6. Home directory | | | | +---------------> 5. GECOS | | | +-------------------> 4. GID | | +---------------------> 3. UID | +-----------------------> 2. Password +---------------------------> 1. Username
字段序號 | 示例 | 解釋 | 說明 |
---|---|---|---|
1 | root | 用戶名 | |
2 | x | 密碼占位符 | 用戶的密碼 x 代表有密碼 無內(nèi)容,用戶登錄系統(tǒng)無需密碼 |
3 | 0 | UID | 當前用戶的身份標識 0 就是超級管理員 |
4 | 0 | GID | 當前用戶的基本組ID |
5 | root | 用戶的身份信息 大名 | 現(xiàn)已廢棄 |
6 | /root | 用戶家目錄 | 超管:/root 普通用戶:/home/用戶名 |
7 | /bin/bash | 用戶登錄系統(tǒng)后 (默認)命令解釋器 | /sbin/nologin 不允許登錄系統(tǒng) /bin/sh |
[root@localhost ~]# id rootuid=0(root) gid=0(root) groups=0(root)[root@localhost ~]#
用戶分類 | UID |
---|---|
普通用戶 | > 1000 |
程序用戶 | 1 - 1000 |
超級管理員用戶 | 0 |
/etc/shadow
記錄了系統(tǒng)中用戶的密碼信息。:
作為分隔符,一共9 段內(nèi)容。root:$6$.IOzaCZc$f.u0fVe5QZb0mhm6UZvjcfa.un7vRXw8frfyoURLrOHmo7JsTI40a/iaQuHm/uCFqRuljfAyBCJDvOk7ZsCEM.:18765:0:99999:7:::passwd rootroot:$6$T07ge8Py$.tZXOZIOpWq2sGZKEkKn2KMahL.mcyNrQrd3C3PIqNt8kA0p/K3JtG4Dwn4vyU2kSvyEg1K2xArTs61AG1Qo1/:18766:0:99999:7:::
字段序號 | 示例 | 含義 | 說明 |
---|---|---|---|
1 | root | 用戶名 | |
2 | $6$T07ge8 | 密碼密文 | sha-512 HASH 散列算法 salt 值 加密后的密文 |
3 | 18766 | 密碼修改時間 | 距離1970 年1 月1 日 密碼最近一次的修改時間(天) |
4 | 0 | 密碼最短有效期 | 在最短有效期之內(nèi)不能修改密碼 3:三天之內(nèi)不可以修改自己的密碼 root 用戶不受此限制 |
5 | 99999 | 密碼最長有效期 | 密碼可以使用多長時間 建議設(shè)置成90 天 |
6 | 7 | 密碼過期時間 | 密碼過期前7 天會有警告提示 |
7 | 密碼的不活躍期 | 過了密碼有效期沒有修改密碼, 處于不活躍期,仍然可以登錄系統(tǒng)。 | |
8 | 賬戶失效時間 | 密碼距離1970 年1 月1 日的失效時間(天) | |
9 | 未分配功能 |
| 正常登錄系統(tǒng) | 仍然可以登錄系統(tǒng) |0 用戶不能修改密碼 3 用戶可以修改密碼 83 提示修改密碼 90 登錄 密碼鎖定|---------------------|------------------|--------------|---------|-------------->^ ^ ^ ^ ^密碼修改時間 密碼最短有效期 密碼過期時間 密碼最長有效期 密碼不活躍期
$6$T07ge8Py$.tZXOZIOpWq2sGZKEkKn2KMahL.mcyNrQrd3C3PIqNt8kA0p/K3JtG4Dwn4vyU2kSvyEg1K2xArTs61AG1Qo1/$id$salt$encrypted$加密方式$鹽值(隨機的)$密碼密文
密碼密文加密方式:man crypt
shadow 文件爆破原理:[root@localhost ~]# pythonPython 2.7.5 (default, Apr 11 2018, 07:36:10)[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import crypt>>> crypt.crypt("123.com","$6$T07ge8Py")'$6$T07ge8Py$3/./MkHtBbziE5UiB/PvR0vkcwtvCoV0G2uYuFfIpbDleXrPJ0BPPNkFZfOY1iTsap.pdxaMrkyXJ/jQ5nxiH0'>>> crypt.crypt("123456","$6$T07ge8Py")'$6$T07ge8Py$JFrusYYpGVwWWiqt99Zjs1SJ6h0k.68kigzB5RIswP64SvGeGTY5MlpSwuThUw3dPKcUT214xnReGwPvlbjU41'>>>
/etc/group
保存了組信息。:
作為分隔符,一共4 段內(nèi)容。ajest:x:1000:ajest
字段數(shù) | 示例 | 含義 | 說明 |
---|---|---|---|
1 | ajest | 組名 | 用戶組的名稱,由字母或數(shù)字構(gòu)成。 |
2 | x | 密碼 | x 是密碼標識, 組密碼默認保存在 /etc/gshadow 文件中。 |
3 | 1000 | GID | Group ID |
4 | ajest | 群組用戶 |
[root@localhost ~]# groupadd class01[root@localhost ~]# tail -1 /etc/groupclass01:x:1001:[root@localhost ~]#
新建class01 組,指定gid 為3000:[root@localhost ~]# groupadd class01 -g 3000[root@localhost ~]# tail -1 /etc/groupclass01:x:3000:[root@localhost ~]#
[root@localhost ~]# groupmod class01 -g 2000[root@localhost ~]# tail -1 /etc/groupclass01:x:2000:[root@localhost ~]#
[root@localhost ~]# groupdel class01[root@localhost ~]#
[root@localhost ~]# useradd tom[root@localhost ~]# id tomuid=1001(tom) gid=1001(tom) groups=1001(tom)[root@localhost ~]# tail -1 /etc/grouptom:x:1001:[root@localhost ~]#
由以上命令結(jié)果可知,在創(chuàng)建tom 用戶時,沒有指定基本組,Linux 創(chuàng)建了一個名為tom 的組。可以通過查看日志,印證觀察到的結(jié)果。[root@localhost ~]# grep "tom" /var/log/secure Feb 23 11:44:23 localhost useradd[57489]: new group: name=tom, GID=1001Feb 23 11:44:23 localhost useradd[57489]: new user: name=tom, UID=1001, GID=1001, home=/home/tom, shell=/bin/bash[root@localhost ~]#
[root@localhost ~]# usermod tom -u 1500[root@localhost ~]# id tomuid=1500(tom) gid=1001(tom) groups=1001(tom)[root@localhost ~]#
修改基本組為class01:[root@localhost ~]# usermod tom -g class01[root@localhost ~]# id tomuid=1500(tom) gid=2000(class01) groups=2000(class01)[root@localhost ~]#
修改附加組為class02:[root@localhost ~]# groupadd class02[root@localhost ~]# usermod tom -G class02[root@localhost ~]# id tomuid=1500(tom) gid=2000(class01) groups=2000(class01),2001(class02)[root@localhost ~]#
[root@localhost ~]# ls /home/ajest tom[root@localhost ~]# userdel -r tomuserdel: group tom not removed because it is not the primary group of user tom.[root@localhost ~]# ls /homeajest[root@localhost ~]# id tomid: tom: no such user[root@localhost ~]#
[root@localhost ~]# passwd -S AJESTAJEST LK 2023-02-23 0 99999 7 -1 (Password locked.)[root@localhost ~]#
由以上信息可知有AJEST 用戶,用戶信息如下:狀態(tài)值 | 說明 |
---|---|
AJEST | 用戶名 |
LK | 密碼狀態(tài): LK,密碼鎖定 NP,沒有密碼 * PS,有可用密碼 |
2023-02-23 | 創(chuàng)建時間 密碼最近一次修改時間 |
0 | 最短有效期 |
99999 | 最長有效期 |
7 | 警告時間: * 密碼過期前7 天警告 |
-1 | 失效時間: * -1 表示沒有失效時間 |
passwd -d AJEST 刪除AJEST 用戶密碼
[root@localhost ~]# passwd AJEST Changing password for user AJEST.New password: BAD PASSWORD: The password is shorter than 8 charactersRetype new password: passwd: all authentication tokens updated successfully.[root@localhost ~]# passwd -S AJESTAJEST PS 2023-02-23 0 99999 7 -1 (Password set, SHA512 crypt.)[root@localhost ~]# grep "^AJEST" /etc/shadowAJEST:$6$MzB2AgMk$/EDXAAvDD6eOMmoRl2Qn4Ru3MR9qNkuNQTRPxuZKAdqtBUIlJBaqs4QG7Apj8ZRDBEFHsBYOiSnvmOaJA8nr30:19411:0:99999:7:::[root@localhost ~]#
[root@localhost ~]# passwd -l AJEST Locking password for user AJEST.passwd: Success[root@localhost ~]# passwd -S AJEST AJEST LK 2023-02-23 0 99999 7 -1 (Password locked.)[root@localhost ~]# grep "^AJEST" /etc/shadowAJEST:!!$6$MzB2AgMk$/EDXAAvDD6eOMmoRl2Qn4Ru3MR9qNkuNQTRPxuZKAdqtBUIlJBaqs4QG7Apj8ZRDBEFHsBYOiSnvmOaJA8nr30:19411:0:99999:7:::[root@localhost ~]#
[root@localhost ~]# passwd -S AJEST AJEST LK 2023-02-23 0 99999 7 -1 (Password locked.)[root@localhost ~]# passwd -u AJEST Unlocking password for user AJEST.passwd: Success[root@localhost ~]# passwd -S AJEST AJEST PS 2023-02-23 0 99999 7 -1 (Password set, SHA512 crypt.)[root@localhost ~]# grep "^AJEST" /etc/shadowAJEST:$6$MzB2AgMk$/EDXAAvDD6eOMmoRl2Qn4Ru3MR9qNkuNQTRPxuZKAdqtBUIlJBaqs4QG7Apj8ZRDBEFHsBYOiSnvmOaJA8nr30:19411:0:99999:7:::[root@localhost ~]#
ls -lh
命令查看文件或目錄的權(quán)限。Linux 權(quán)限管理,包括調(diào)整文件或目錄的權(quán)限。[root@localhost ~]# ls -lh...drwxr-xr-x. 2 root root 137 Feb 23 10:25 Desktop...-rw-r--r--. 1 root root 1.8K Feb 20 17:50 initial-setup-ks.cfg...[root@localhost ~]#
ls -lh
命令結(jié)果中,每一行以空格為分隔符分為9 個字段(列)。字段數(shù) | 例子 | 說明 |
---|---|---|
1 | drwxr-xr-x. | 文件或目錄權(quán)限 |
2 | 2 | 如果文件類型是文件,表示文件的節(jié)點數(shù) 如果文件類型是目錄,表示子目錄的個數(shù) |
3 | root | 所有者的名字 |
4 | root | 所有組的名字 |
5 | 137 | 文件大小 注意:不是目錄的大小。 |
6 7 8 | Feb 23 10:25 | 文件最后一次修改時間 |
9 | Desktop | 文件或者目錄的名字 |
d rwx r-x r-x .
字段數(shù) | 示例 | 含義 | 說明 |
---|---|---|---|
1 | d | 文件類型 | - 文件 d 目錄 l 符號鏈接 c 字符型設(shè)備 b 塊設(shè)備 |
2 | rwx | 所有者權(quán)限 | u 所有者 |
3 | r-x | 所屬組的權(quán)限 | g 所屬組 |
4 | r-x | 其他用戶的權(quán)限 | o 其他用戶 |
5 | . |
權(quán)限 | 文件 | 目錄 |
---|---|---|
r | 讀取文件內(nèi)容 | 列出目錄內(nèi)容 |
w | 修改文件內(nèi)容 | 創(chuàng)建、刪除目錄中的文件 |
x | 執(zhí)行程序或腳本 | 可以進入該目錄 |
[root@localhost ~]# su - ajestLast login: Fri Feb 24 09:51:06 CST 2023 on :0[ajest@localhost ~]$ touch /tmp/ajest.txt[ajest@localhost ~]$ echo "i love linux" >> /tmp/ajest.txt [ajest@localhost ~]$ cat /tmp/ajest.txt i love linux[ajest@localhost ~]$ /tmp/ajest.txt-bash: /tmp/ajest.txt: Permission denied[ajest@localhost ~]$ ls -l /tmp/ajest.txt -rw-rw-r-- 1 ajest ajest 13 Feb 24 09:57 /tmp/ajest.txt[ajest@localhost ~]$
r = 4
;w = 2
;x = 1
。權(quán)限位 | 2 進制 | 8 進制 |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
chmod 對象 運算符號 權(quán)限 文件或者目錄
權(quán)限運算說明:對象 | 運算符號 | 權(quán)限 |
---|---|---|
u g o a | + - = | r w x t s |
[ajest@localhost ~]$ ls -l /tmp/ajest.txt -rw-rw-r-- 1 ajest ajest 13 Feb 24 09:57 /tmp/ajest.txt[ajest@localhost ~]$ chmod u-r /tmp/ajest.txt [ajest@localhost ~]$ cat /tmp/ajest.txt cat: /tmp/ajest.txt: Permission denied[ajest@localhost ~]$ ls -l /tmp/ajest.txt --w-rw-r-- 1 ajest ajest 13 Feb 24 09:57 /tmp/ajest.txt[ajest@localhost ~]$
測試寫權(quán)限:[ajest@localhost ~]$ echo "can i do it?" >> /tmp/ajest.txt [ajest@localhost ~]$
撤銷寫權(quán)限:[ajest@localhost ~]$ chmod u-w /tmp/ajest.txt [ajest@localhost ~]$ echo "can i do it?" >> /tmp/ajest.txt -bash: /tmp/ajest.txt: Permission denied[ajest@localhost ~]$ ls -l /tmp/ajest.txt ----rw-r-- 1 ajest ajest 26 Feb 24 09:59 /tmp/ajest.txt[ajest@localhost ~]$
思考:[root@localhost ~]# cat /tmp/ajest.txt i love linuxcan i do it?[root@localhost ~]#
權(quán)限從左向右匹配,先匹配,先生效。
[root@localhost ~]# mkdir /tmp/rootdir[root@localhost ~]# ls -ld /tmp/root-rw-r--r-- 1 root root 13 Feb 24 09:55 /tmp/root[root@localhost ~]#
新建文件/tmp/rootdir/root.txt,并輸入內(nèi)容“this is from root”。[root@localhost ~]# echo "this is from root" >> /tmp/rootdir/root.txt[root@localhost ~]# ls /tmp/rootdir/root.txt[root@localhost ~]#
切換ajest 用戶,嘗試進入目錄/tmp/rootdir/,并新建文件ajest.txt,內(nèi)容為“this is from ajest”。[root@localhost ~]# su - ajestLast login: Fri Feb 24 09:56:34 CST 2023 on pts/0[ajest@localhost ~]$ cd /tmp/rootdir/[ajest@localhost rootdir]$ echo "this is from ajest" >> ajest.txt-bash: ajest.txt: Permission denied[ajest@localhost rootdir]$ ls -ld /tmp/rootdir/drwxr-xr-x 2 root root 22 Feb 24 10:05 /tmp/rootdir/[ajest@localhost rootdir]$
發(fā)現(xiàn)操作無法完成,報錯信息為權(quán)限不允許,查看目錄權(quán)限可知,其他用戶對該目錄沒有寫權(quán)限,也就是說,其他用戶不能在該目錄中,創(chuàng)建、刪除文件。[root@localhost ~]# ls -ld /tmp/rootdir/drwxr-xr-x 2 root root 22 Feb 24 10:05 /tmp/rootdir/[root@localhost ~]# chmod o=--- /tmp/rootdir/[root@localhost ~]# su - ajestLast login: Fri Feb 24 10:07:44 CST 2023 on pts/0[ajest@localhost ~]$ cd /tmp/rootdir/-bash: cd: /tmp/rootdir/: Permission denied[ajest@localhost ~]$ ls -ld /tmp/rootdir/drwxr-x--- 2 root root 22 Feb 24 10:05 /tmp/rootdir/[ajest@localhost ~]$
查看/root/rootdir 目錄權(quán)限,發(fā)現(xiàn)其他用戶對該目錄權(quán)限為0,沒有執(zhí)行權(quán)限,即其他用戶不能進入該目錄。[root@localhost ~]# chmod o=rwx /tmp/rootdir/[root@localhost ~]# su - ajestLast login: Fri Feb 24 10:12:46 CST 2023 on pts/0[ajest@localhost ~]$ echo "this is from ajest" >> /tmp/rootdir/ajest.txt[ajest@localhost ~]$ ls /tmp/rootdir/ajest.txt root.txt[ajest@localhost ~]$ rm -rf /tmp/rootdir/ajest.txt [ajest@localhost ~]$ echo "this is from ajest" >> /tmp/rootdir/root.txt -bash: /tmp/rootdir/root.txt: Permission denied[ajest@localhost ~]$ rm -rf /tmp/rootdir/root.txt [ajest@localhost ~]$ ls /tmp/rootdir/[ajest@localhost ~]$
chown 修改后的所屬者 目標文件或者目錄
常用命令選項:[ajest@localhost ~]$ whoamiajest[ajest@localhost ~]$ mkdir /tmp/ajestdir/[ajest@localhost ~]$ echo "My Name is AJEST" >> /tmp/ajestdir/ajest.txt[ajest@localhost ~]$ ls -ld /tmp/ajestdir/drwxrwxr-x 2 ajest ajest 23 Feb 24 09:39 /tmp/ajestdir/[ajest@localhost ~]$ ls -l /tmp/ajestdir/ajest.txt -rw-rw-r-- 1 ajest ajest 17 Feb 24 09:39 /tmp/ajestdir/ajest.txt[ajest@localhost ~]$
切換root 用戶,將文件/tmp/ajestdir/ajest.txt 的所有者修改為root:[root@localhost ~]# chown root /tmp/ajestdir/ajest.txt [root@localhost ~]# ls -l /tmp/ajestdir/ajest.txt -rw-rw-r-- 1 root ajest 17 Feb 24 09:39 /tmp/ajestdir/ajest.txt[root@localhost ~]#
切換ajest 用戶,嘗試向文件/tmp/ajestdir/ajest.txt 追加內(nèi)容“Can I do it?”:[root@localhost ~]# su - ajestLast login: Thu Feb 23 17:31:10 CST 2023 on pts/0[ajest@localhost ~]$ echo "Can I do it?" >> /tmp/ajestdir/ajest.txt [ajest@localhost ~]$ cat /tmp/ajestdir/ajest.txt My Name is AJESTCan I do it?[ajest@localhost ~]$
由以上命令結(jié)果可知,即使將文件/tmp/ajestdir/ajest.txt 的所有者修改為root,ajest 用戶依然可以向該文件中追加內(nèi)容,這是為什么呢?注意到,對該文件擁有寫權(quán)限的,除了所有者,還有所屬組,然而ajest 用戶在所屬組ajest 中,所以ajest 用依然對該文件有寫權(quán)限。[root@localhost ~]# chmod g=--- /tmp/ajestdir/ajest.txt [root@localhost ~]# ls -l /tmp/ajestdir/ajest.txt -rw----r-- 1 root ajest 30 Feb 24 09:43 /tmp/ajestdir/ajest.txt[root@localhost ~]# su - ajestLast login: Fri Feb 24 09:43:12 CST 2023 on pts/0[ajest@localhost ~]$ echo "Can I do it?" >> /tmp/ajestdir/ajest.txt -bash: /tmp/ajestdir/ajest.txt: Permission denied[ajest@localhost ~]$
[root@localhost ~]# su - ajestLast login: Fri Feb 24 10:33:45 CST 2023 on pts/0[ajest@localhost ~]$ touch /tmp/ajest.txt[ajest@localhost ~]$ ls -l /tmp/ajest.txt -rw-rw-r-- 1 ajest ajest 0 Feb 24 10:34 /tmp/ajest.txt[ajest@localhost ~]$ exitlogout[root@localhost ~]# su - AJESTLast login: Thu Feb 23 15:47:21 CST 2023 on pts/0[AJEST@localhost ~]$ touch /tmp/AJEST.txt[AJEST@localhost ~]$ ls -l /tmp/AJEST.txt -rw-r--r-- 1 AJEST class01 0 Feb 24 10:35 /tmp/AJEST.txt[AJEST@localhost ~]$ rm -rf /tmp/ajest.txt rm: cannot remove ‘/tmp/ajest.txt’: Operation not permitted[AJEST@localhost ~]$
撤銷目錄/tmp/ 的粘滯位權(quán)限,切換用戶ajest,嘗試刪除文件/tmp/AJEST.txt。[root@localhost ~]# su - ajestLast login: Mon Feb 27 09:21:19 CST 2023 on pts/0[ajest@localhost ~]$ find / -name "name.txt"find: ‘/run/user/0/gvfs’: Permission denied[ajest@localhost ~]$ find / -name "root.txt"find: ‘/run/user/0/gvfs’: Permission denied/tmp/rootdir/root.txt[ajest@localhost ~]$ chmod u-s /usr/bin/findchmod: changing permissions of ‘/usr/bin/find’: Operation not permitted[ajest@localhost ~]$ exitlogout[root@localhost ~]# chmod u-s /usr/bin/find[root@localhost ~]# su - ajestLast login: Mon Feb 27 10:40:05 CST 2023 on pts/0[ajest@localhost ~]$ find / -name "root.txt"...find: ‘/tmp/rootdir’: Permission denied...
[root@localhost ~]# mkdir /tmp/rootdir[root@localhost ~]# ls -ld /tmp/rootdir/drwxr-xr-x 2 root root 6 Feb 27 09:11 /tmp/rootdir/[root@localhost ~]# chmod a=rwx /tmp/rootdir/[root@localhost ~]# chmod g+s /tmp/rootdir/[root@localhost ~]# ls -ld /tmp/rootdir/drwxrwsrwx 2 root root 6 Feb 27 09:11 /tmp/rootdir/[root@localhost ~]#
切換用戶ajest,新建文件/tmp/rootdir/ajest.txt。[root@localhost ~]# su - ajestLast login: Fri Feb 24 10:39:32 CST 2023 on pts/0[ajest@localhost ~]$ touch /tmp/rootdir/ajest.txt[ajest@localhost ~]$ ls -l /tmp/rootdir/ajest.txt -rw-rw-r-- 1 ajest root 0 Feb 27 09:14 /tmp/rootdir/ajest.txt[ajest@localhost ~]$
可以通過2777 參數(shù)設(shè)置sgid 特殊權(quán)限位。[root@localhost ~]# mkdir /tmp/rootdir[root@localhost ~]# ls -ld /tmp/rootdir/drwxr-xr-x 2 root root 6 Feb 27 09:21 /tmp/rootdir/[root@localhost ~]# chmod 2777 /tmp/rootdir/[root@localhost ~]# ls -ld /tmp/rootdir/drwxrwsrwx 2 root root 6 Feb 27 09:21 /tmp/rootdir/[root@localhost ~]#
[root@localhost ~]# which find/usr/bin/find[root@localhost ~]# ls -l /usr/bin/find-rwxr-xr-x. 1 root root 199200 Nov 20 2015 /usr/bin/find[root@localhost ~]# chmod u+s /usr/bin/find [root@localhost ~]# ls -l /usr/bin/find-rwsr-xr-x. 1 root root 199200 Nov 20 2015 /usr/bin/find[root@localhost ~]#
調(diào)整目錄/tmp/rootdir/ 權(quán)限,并創(chuàng)建文件/tmp/rootdir/root.txt。[root@localhost ~]# chmod g-s /tmp/rootdir/[root@localhost ~]# ls -ld /tmp/rootdir/drwx------ 2 root root 6 Feb 27 09:21 /tmp/rootdir/[root@localhost ~]# touch /tmp/rootdir/root.txt[root@localhost ~]#
切換用戶ajest,在根目錄中查找文件root.txt。root@localhost ~]# su - ajestLast login: Mon Feb 27 09:21:19 CST 2023 on pts/0[ajest@localhost ~]$ find / -name "root.txt"find: ‘/run/user/0/gvfs’: Permission denied/tmp/rootdir/root.txt[ajest@localhost ~]$ exitlogout[root@localhost ~]# chmod u-s /usr/bin/find[root@localhost ~]# su - ajestLast login: Mon Feb 27 10:40:05 CST 2023 on pts/0[ajest@localhost ~]$ find / -name "root.txt"...find: ‘/tmp/rootdir’: Permission denied...
SUID 提權(quán):[root@localhost ~]# su - ajestLast login: Mon Feb 27 10:41:41 CST 2023 on pts/0[ajest@localhost ~]$ ls -l /usr/bin/find-rwsr-xr-x. 1 root root 199200 Nov 20 2015 /usr/bin/find[ajest@localhost ~]$ man find[ajest@localhost ~]$ find / -perm -4000find: ‘/proc/9079/task/9079/fd/5’: No such file or directoryfind: ‘/proc/9079/task/9079/fdinfo/5’: No such file or directoryfind: ‘/proc/9079/fd/6’: No such file or directoryfind: ‘/proc/9079/fdinfo/6’: No such file or directoryfind: ‘/run/user/0/gvfs’: Permission denied/usr/bin/find/usr/bin/fusermount/usr/bin/ksu/usr/bin/chfn/usr/bin/chsh/usr/bin/chage/usr/bin/gpasswd/usr/bin/passwd/usr/bin/newgrp/usr/bin/staprun/usr/bin/su/usr/bin/Xorg/usr/bin/umount/usr/bin/mount/usr/bin/pkexec/usr/bin/crontab/usr/bin/sudo/usr/bin/at/usr/sbin/pam_timestamp_check/usr/sbin/unix_chkpwd/usr/sbin/usernetctl/usr/sbin/userhelper/usr/sbin/mount.nfs/usr/lib/polkit-1/polkit-agent-helper-1/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache/usr/libexec/flatpak-bwrap/usr/libexec/dbus-1/dbus-daemon-launch-helper/usr/libexec/sssd/krb5_child/usr/libexec/sssd/ldap_child/usr/libexec/sssd/selinux_child/usr/libexec/sssd/proxy_child/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper/usr/libexec/qemu-bridge-helper[ajest@localhost ~]$ find /tmp/rootdir/ -exec whoami /;rootroot[ajest@localhost ~]$
[root@localhost ~]# grep -n "^root" /etc/sudoers92:root ALL=(ALL) ALL[root@localhost ~]#
配置文件sudoers 關(guān)于權(quán)限的配置,大概分為5 個字段,具體含義如下:示例 | 字段 | 含義 |
---|---|---|
root | 1 | 授權(quán)用戶| 組 |
ALL | 2 | 主機 |
(ALL:ALL) | 3 | 用戶:組 授權(quán)用戶可以以此用戶身份特權(quán)執(zhí)行命令。 |
NOPASSWD: | 4 | 是否需要輸入密碼驗證 |
ALL | 5 | 命令1,命令2,... |
[root@localhost ~]# grep -n "^ajest" /etc/sudoers1:ajest ALL=(ALL:ALL) NOPASSWD: /usr/bin/whoami, /usr/bin/id[root@localhost ~]#
[ajest@localhost ~]$ sudo -lMatching Defaults entries for ajest on localhost: !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin/:/bin/:/usr/sbin/:/usr/binUser ajest may run the following commands on localhost: (ALL : ALL) NOPASSWD: /usr/bin/whoami, /usr/bin/id[ajest@localhost ~]$ sudo iduid=0(root) gid=0(root) groups=0(root)[ajest@localhost ~]$ sudo ls /home/[sudo] password for ajest: ^C[ajest@localhost ~]$
[root@localhost ~]# grep -n "^ajest" /etc/sudoers1:ajest ALL=(ALL, !root) /usr/bin/whoami, /usr/bin/id[root@localhost ~]#
[ajest@localhost ~]$ sudo -lMatching Defaults entries for ajest on localhost: !visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin/:/bin/:/usr/sbin/:/usr/binUser ajest may run the following commands on localhost: (ALL, !root) /usr/bin/whoami, /usr/bin/id[ajest@localhost ~]$ sudo -u AJEST iduid=1500(AJEST) gid=2000(class01) groups=2000(class01),2001(class02)[ajest@localhost ~]$ sudo -u root idSorry, user ajest is not allowed to execute '/bin/id' as root on localhost.localdomain.[ajest@localhost ~]$ sudo -u#1500 iduid=1500(AJEST) gid=2000(class01) groups=2000(class01),2001(class02)[ajest@localhost ~]$ sudo -u#0 idSorry, user ajest is not allowed to execute '/bin/id' as root on localhost.localdomain.[ajest@localhost ~]$ sudo -u#-1 iduid=0(root) gid=1000(ajest) groups=1000(ajest)[ajest@localhost ~]$
關(guān)鍵詞:權(quán)限,管理,用戶,安全
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。