日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

26 FreeBSD連載:進(jìn)程的權(quán)限

進(jìn)程的權(quán)限由于FreeBSD是多用戶系統(tǒng),因此進(jìn)程必須要受到權(quán)限的控制和保護(hù) 。出于安全性的考慮,一個(gè)用戶不可能殺死其他用戶啟動(dòng)的進(jìn)程,一個(gè)進(jìn)程也不能非法存取其他用戶的文件數(shù)據(jù) 。只有超級(jí)用戶和超級(jí)用戶啟動(dòng)的進(jìn)程才有最大的權(quán)限,普通進(jìn)程就只與進(jìn)程的執(zhí)行者相關(guān),只具有這個(gè)用戶的權(quán)限 。
一些情況下(特別是執(zhí)行系統(tǒng)維護(hù)任務(wù)時(shí)),要求普通用戶也能完成特殊權(quán)限的任務(wù),那么就必須在進(jìn)程執(zhí)行過(guò)程中改變進(jìn)程的身份 。改變進(jìn)程的身份則必須同時(shí)具備兩個(gè)要求:程序文件本身具有SetUID或SetGID屬性,同時(shí)程序中需要相應(yīng)調(diào)用setuid()或setgid()系統(tǒng)調(diào)用,這兩個(gè)系統(tǒng)調(diào)用能夠檢查文件的屬性,并完成更改進(jìn)程權(quán)限的操作 。
通常只有系統(tǒng)程序才需要利用這兩個(gè)屬性,例如系統(tǒng)程序su允許普通用戶成為root用戶,就使用的是這個(gè)能力 。
$ ls -l a*
-rwxr-xr-x1 userwheel3212 Dec4 12:36 a1
-rwxr-xr-x1 userwheel3212 Dec4 12:36 a2
$ chmod u s a1
$ ls -l a*
-rwsr-xr-x1 userwheel3212 Dec4 12:36 a1
-rwxr-xr-x1 userwheel3212 Dec4 12:36 a2
$ chmod g s a2
$ ls -l a*
-rwsr-xr-x1 userwheel3212 Dec4 12:36 a1
-rwxr-sr-x1 userwheel3212 Dec4 12:36 a2上面第一個(gè)chmod(chmod u s a.out)為a.out增加設(shè)置屬主身份權(quán)限,然后列表中對(duì)應(yīng)屬主的執(zhí)行權(quán)限位的 “x” 標(biāo)志將改變?yōu)?“s” (文件屬性顯示為rwsr-xr-x) 。第二個(gè)chmod (chmod g s a.out)為a.out增加設(shè)置組身份權(quán)限,則列表中對(duì)應(yīng)組的執(zhí)行權(quán)限位的 “x” 標(biāo)志將改變?yōu)?“s” (文件屬性顯示為rwxr-sr-x) 。同樣,SetUID和SetGID屬性也都有相應(yīng)的八進(jìn)制表示方式,SetUID為04000,后面的三個(gè)八進(jìn)制位屬于文件的讀寫(xiě)訪問(wèn)屬性設(shè)置,相應(yīng)SetGID為02000,它們兩個(gè)屬性位處于讀寫(xiě)屬性位之前 。下面是一個(gè)更改屬性設(shè)置的例子:
# ls -l /bin/ps
-r-xr-sr-x1 binkmem 163840 May6 06:02 /bin/ps
# chmod a=r /bin/ps
# su user
$ ps
bash: ps: Permission denIEd
$ ^D
# chmod a x /bin/ps
# su user
$ ps
ps: /dev/mem: Permission denied
$ ^D
# chmod g s /bin/ps
# su user
$ ps
PIDTTSTATTIME COMMAND
226p2S0:00.56 bash
239p2R0:00.02 ps
$第一次以u(píng)ser身份執(zhí)行ps時(shí),ps的文件屬性被改為對(duì)所有用戶只有讀權(quán)限,因此不能執(zhí)行,shell報(bào)告Permission denied;第二次以u(píng)ser身份執(zhí)行ps時(shí),ps報(bào)告不能打開(kāi)/dev/mem文件,這是因?yàn)槠胀ㄓ脩魺o(wú)權(quán)存取內(nèi)存映象文件 。而第三次執(zhí)行ps時(shí),由于設(shè)置了setgid位,和kmem同組的進(jìn)程就能夠打開(kāi)/dev/mem文件,從而正確執(zhí)行了ps程序 。
具有SetUID或SetGID屬性的程序,能夠在進(jìn)程執(zhí)行中調(diào)用系統(tǒng)調(diào)用setuid()或setgid(),調(diào)用成功后這個(gè)進(jìn)程就具有了程序文件屬主和組的權(quán)限,就可以完成以前改變身份之前不能完成的任務(wù) 。因?yàn)橥ㄟ^(guò)它們程序可以改變進(jìn)程的用戶標(biāo)識(shí),繞過(guò)系統(tǒng)的權(quán)限設(shè)置,因此這兩個(gè)屬性對(duì)于系統(tǒng)安全非常重要 。尤其是屬于root的文件,并設(shè)置了SetUID屬性的程序,更是系統(tǒng)安全中值得注意的地方 。為了保證系統(tǒng)安全,必須保證沒(méi)有非法的SetUID或SetGID程序的存在,通常管理員可以使用find命令來(lái)完成這個(gè)任務(wù),例如查找具有SetUID的程序,則執(zhí)行:
# find / -perm 4000 -print【26 FreeBSD連載:進(jìn)程的權(quán)限】未完,待續(xù) 。。。

    推薦閱讀