系統(tǒng)安全實(shí)驗(yàn)11110320106李彥琛_第1頁
系統(tǒng)安全實(shí)驗(yàn)11110320106李彥琛_第2頁
系統(tǒng)安全實(shí)驗(yàn)11110320106李彥琛_第3頁
系統(tǒng)安全實(shí)驗(yàn)11110320106李彥琛_第4頁
系統(tǒng)安全實(shí)驗(yàn)11110320106李彥琛_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、系統(tǒng)安全實(shí)驗(yàn)一1110320106李彥琛問題一:設(shè)計(jì)并實(shí)現(xiàn)不同用戶對不同類文件的r、w、x權(quán)限:用戶A具有文本文件流星雨.txt,該用戶允許別人下載;用戶A有編譯了一個(gè)可執(zhí)行文件cal.exe,該用戶想在系統(tǒng)啟動時(shí)運(yùn)行;用戶A有起草了文件demo.txt,想讓同組的用戶幫其修改文件;該用戶分別如何設(shè)置權(quán)限,并驗(yàn)證其設(shè)置的正確與否首先創(chuàng)建一個(gè)用戶sy1,用戶密碼為1,并切換到該用戶身份:操作過程如下:/*lyclyc-Aspire-4750:$ sudo useradd sy1sudo password for lyc: lyclyc-Aspire-4750:$ sudo passwd sy1輸

2、入新的 UNIX 密碼: 重新輸入新的 UNIX 密碼: passwd:已成功更新密碼lyclyc-Aspire-4750:$ su sy1密碼:*/在住文件夾中創(chuàng)建一個(gè)流星雨.txt文檔,存入內(nèi)容為“My name is LYC!”將流星雨.txt文檔權(quán)限設(shè)置為774可執(zhí)行文件cal.exe權(quán)限設(shè)置為771將文件demo.txt權(quán)限設(shè)置為776示例:sh1可以直接讀取流星雨.txt,(如圖1)讀取成功,內(nèi)容為My name is LYC!改變權(quán)限之后: (如圖2)再次以sy1用戶身份來讀取流星雨.txt,(如圖3)讀取失敗,權(quán)限不夠。心得: 文件或目錄權(quán)限的控制分別以讀取,寫入,執(zhí)3種權(quán)限來

3、區(qū)分,另有3種特殊權(quán)限可供運(yùn)用,再搭配擁有者與所屬群組管理權(quán)限范圍??梢允褂胏hmod指令去變更文件或目錄的權(quán)限,設(shè)置方式采用文字或數(shù)字代號皆可。符號連接的權(quán)限無法變更,對符號連接修改權(quán)限,其改變會作用在被連接的原始文件。權(quán)限范圍的表示法如下:u:User,即文件或目錄的擁有者。g:Group,即文件或目錄的所屬群組。o:Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬于這個(gè)范圍。a:All,即全部的用戶,包含擁有者,所屬群組以及其他用戶。有關(guān)權(quán)限代號的部分,列表于下:r:讀取權(quán)限,數(shù)字代號為"4"。w:寫入權(quán)限,數(shù)字代號為"2"。x:執(zhí)行或

4、切換權(quán)限,數(shù)字代號為"1"。-:不具任何權(quán)限,數(shù)字代號為"0"。s:特殊?b>功能說明:變更文件或目錄的權(quán)限。語法示例如下:chmod -cfRv-help-version<權(quán)限范圍>+/-/=<權(quán)限設(shè)置.>文件或目錄.chmod -cfRv-help-version數(shù)字代號文件或目錄.chmod -cfRv-help-reference=<參考文件或目錄>-version文件或目錄.其中-c或-changes 效果類似"-v"參數(shù),但僅回報(bào)更改的部分。-f或-quiet或-silent 不顯

5、示錯(cuò)誤信息,-R或-recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。-v或-verbose 顯示指令執(zhí)行過程。-help 在線幫助。-reference=<參考文件或目錄>把指定文件或目錄的權(quán)限全部設(shè)成和參考文件或目錄的權(quán)限相同-version 顯示版本信息。<權(quán)限范圍>+<權(quán)限設(shè)置> 開啟權(quán)限范圍的文件或目錄的該項(xiàng)權(quán)限設(shè)置。<權(quán)限范圍>-<權(quán)限設(shè)置> 關(guān)閉權(quán)限范圍的文件或目錄的該項(xiàng)權(quán)限設(shè)置。<權(quán)限范圍>=<權(quán)限設(shè)置> 指定權(quán)限范圍的文件或目錄的該項(xiàng)權(quán)限設(shè)置。問題二:設(shè)計(jì)并實(shí)現(xiàn)setuid

6、程序的使用,并分析不同用戶fork調(diào)用setuid程序后euid、ruid、suid的差別,以及用戶調(diào)用execl執(zhí)行setuid程序后euid、ruid、suid的差別。做本實(shí)驗(yàn)之前,我已經(jīng)建立了多個(gè)用戶:用戶名密碼UidRootRoot0Lycz1000Sy111001mo21002代碼:test.c的程序如下:#define _LIBRARY_#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>

7、int main()uid_truid,euid,suid;getresuid(&ruid,&euid,&suid);printf("Who am I?nI am :n");printf("ruid:%dteuid:%d:tsuid:%dn",ruid,euid,suid);if(!fork()printf("S:I had setuid(1002)n");if(setuid(1002)=0)printf("S:succes!n"); if(setuid(1002)=-1)printf(&q

8、uot;S:failed to setuid(1002)!n");getresuid(&ruid,&euid,&suid);printf("S:ruid:%dteuid:%dtsuid:%dn",ruid,euid,suid);exit(0);elseprintf("F:I had setuid(1002)n");if(setuid(1002)=0)printf("F:succesn");if(setuid(1002)=-1) printf("F:failedn");getresu

9、id(&ruid,&euid,&suid);printf("F:ruid:%dteuid:%d:tsuid:%dn",ruid,euid,suid);printf("F:I had setresuid(1002,1000,0);nF:setuid(1002)n");setresuid(1002,1000,0);if(setuid(0)=0)printf("F:succesn");if(setuid(0)=-1)printf("F:failedn");getresuid(&ruid,&

10、amp;euid,&suid);printf("F:ruid:%dteuid:%d:tsuid:%dn",ruid,euid,suid);wait(NULL);execl("a",NULL);return 0;a.c的程序如下:#define _LIBRARY_#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>#include<sys/stat.h>int main()uid_truid,e

11、uid,suid;getresuid(&ruid,&euid,&suid);printf("nnNow We are in execln");printf("ruid:%dteuid:%d:tsuid:%dn",ruid,euid,suid);printf("Now we have setuid 1002!n");if(setuid(1002)=0)printf("succesn");if(setuid(1002)=-1)printf("failedn");getresu

12、id(&ruid,&euid,&suid);printf("ruid:%dteuid:%dtsuid%dnnn",ruid,euid,suid);return 0;函數(shù)說明:int setuid(uid_t uid)1.如果用戶(當(dāng)前調(diào)用的用戶)有超級用戶權(quán)限,則real user ID,effective user ID和saved set-user-ID都將設(shè)置為參數(shù)uid的值.2.如果用戶沒有超級用戶權(quán)限,僅當(dāng)參數(shù)uid等于real user ID或saved set-user-ID時(shí),effective user ID被設(shè)置為參數(shù)uid的值,

13、real user ID和saved set-user-ID不變;否則返回錯(cuò)誤.示例:以用戶lyc執(zhí)行test.c程序結(jié)果如圖片四:以用戶lyc身份運(yùn)行程序test.c,由實(shí)驗(yàn)結(jié)果可知,無論是fork還是execl,調(diào)用setuid函數(shù)均失敗了。setuid可以修改real user ID, effective user ID和saved set-user-ID這三個(gè)值,但是要用權(quán)限. 如果用戶沒有超級用戶的權(quán)限,僅當(dāng)參數(shù)uid等于real user ID或saved set-user-ID時(shí)之一時(shí),effective user ID被設(shè)置為參數(shù)uid的值,real user ID和saved

14、 set-user-ID不變;否則返回錯(cuò)誤. 如果調(diào)用進(jìn)程的有效用戶ID不是超級用戶,僅當(dāng)uid等于真實(shí)用戶ID或保存用戶ID時(shí),內(nèi)核才會把u區(qū)中的有效用戶ID設(shè) 置成uid如圖中setresuid(1000,1000,1000),setuid(1002),ruid:1000 euid:1000 suid:1000setresuid(1002,1000,1000),setuid(1002),ruid:1000 euid:1002 suid:1000以用戶sy1執(zhí)行test.c程序結(jié)果如圖片五:以用戶sy1身份運(yùn)行程序test.c,由實(shí)驗(yàn)結(jié)果可知,無論是fork還是execl,調(diào)用setuid函

15、數(shù)均失敗了。setuid可以修改real user ID effective user ID和saved set-user-ID這三個(gè)值,但是要用權(quán)限. 如果用戶沒有超級用戶權(quán)限,僅當(dāng)參數(shù)uid等于real user ID或saved set-user-ID時(shí),effective user ID被設(shè)置為參數(shù)uid的值,real user ID和saved set-user-ID不變;否則返回錯(cuò)誤.。如果調(diào)用進(jìn)程的有效用戶ID不是超級用戶,僅當(dāng)uid等于真實(shí)用戶ID或保存用戶ID時(shí),內(nèi)核才會把u區(qū)中的有效用戶ID設(shè) 置成uid以用戶root執(zhí)行test.c程序結(jié)果如圖片六:以用戶root身份運(yùn)行

16、程序test.c,由實(shí)驗(yàn)結(jié)果可知,無論是fork還是execl,調(diào)用setuid函數(shù)均成功了。setuid可以修改real user ID,effective user ID和saved set-user-ID這三個(gè)值,但是要用權(quán)限.,超級用戶權(quán)限可將real user ID, effective user ID和saved set-user-ID都將設(shè)置為參數(shù)uid的值. 調(diào)用進(jìn)程的有效用戶ID是超級用戶,內(nèi)核會把進(jìn)程表以及u區(qū)中的真實(shí)和有效用戶ID都設(shè)置成uid。如圖中I had setuid(1002)F:successF:ruid:1002 euid:1002 suid:1002S:s

17、uccessS:ruid:1002 euid:1002 suid:1002Now we have setuid 1002!ruid:1002 euid:1002 suid:1002心得:real user ID表示的是實(shí)際上進(jìn)程的執(zhí)行者是誰,effective user ID主要用于校驗(yàn)該進(jìn)程在執(zhí)行時(shí)所獲得的文件訪問權(quán)限,也就是說當(dāng)進(jìn)程訪問文件時(shí)檢查權(quán)限時(shí)實(shí)際上檢查的該進(jìn)程的"effective user ID", saved set-user-ID 僅在effective user ID發(fā)生改變時(shí)保存.一般情況下,real user ID就是進(jìn)程的effective us

18、er ID,但是當(dāng)要運(yùn)行的可執(zhí)行程序設(shè)置了"set-user-ID"位之后,進(jìn)程的effective user ID變成該文件的屬主用戶id,同時(shí)該進(jìn)程的"saved set-user-ID"變成此時(shí)進(jìn)程的"effective user ID",也就是該可執(zhí)行程序的屬主用戶ID,該進(jìn)程在執(zhí)行一些與文件訪問權(quán)限相關(guān)的操作時(shí)系統(tǒng)檢查的是進(jìn)程的effective user ID.當(dāng)進(jìn)程沒有超級用戶權(quán)限的時(shí)候,進(jìn)程在設(shè)置"effective user ID"時(shí)需要將需要設(shè)置的ID和該進(jìn)程。1)當(dāng)用戶具有超級用戶權(quán)限的時(shí)候,

19、setuid 函數(shù)設(shè)置的id對三者都起效.2)否則,僅當(dāng)該id為real user ID 或者saved set-user-ID時(shí),該id對effective user ID起效.3)否則,setuid函數(shù)調(diào)用失敗.內(nèi)核會給每個(gè)進(jìn)程關(guān)聯(lián)兩個(gè)和進(jìn)程ID無關(guān)的用戶ID,一個(gè)是真實(shí)用戶ID,還有一個(gè)是有效用戶ID,真實(shí)用戶ID用于標(biāo)識由誰為正在運(yùn)行的進(jìn)程負(fù)責(zé)。有效用戶ID用于為新創(chuàng)建的文件分配所有權(quán)、檢查文件訪問許可,還用于通過kill系統(tǒng)調(diào)用向其 它進(jìn)程發(fā)送信號時(shí)的許可檢查。內(nèi)核允許一個(gè)進(jìn)程以調(diào)用exec一個(gè)setuid程序或者顯式執(zhí)行setuid系統(tǒng)調(diào)用的方式改變它的有效用戶ID。 所謂setu

20、id程序是指一個(gè)設(shè)置了許可模式字段中的setuid bit的可執(zhí)行文件。當(dāng)一個(gè)進(jìn)程exec一個(gè)setuid程序的時(shí)候,內(nèi)核會把進(jìn)程表以及u區(qū)中的有效用戶ID設(shè)置成該文件所有者的ID。setuid系統(tǒng)調(diào)用的語法是 setuid(uid) ,其中,uid是新的用戶ID,該系統(tǒng)調(diào)用的結(jié)果取決于有效用戶ID的當(dāng)前值。如果調(diào)用進(jìn)程的有效用戶ID是超級用戶,內(nèi)核會把進(jìn)程表以及u區(qū)中的真實(shí)和有效用戶ID都設(shè)置成uid。如果調(diào)用進(jìn)程的有效用戶ID不是超級用戶,僅當(dāng)uid等于真實(shí)用戶ID或保存用戶ID時(shí),內(nèi)核才會把u區(qū)中的有效用戶ID設(shè) 置成uid。否則,該系統(tǒng)調(diào)用將返回錯(cuò)誤。一般來說,一個(gè)進(jìn)程會在fork系統(tǒng)調(diào)用期間從父進(jìn)程那兒繼承它的真實(shí)和有效用戶ID,這些數(shù)值即使經(jīng)過 exec系統(tǒng)調(diào)用也會保持不變。 存儲在u區(qū)中的有效用戶ID是最近一次setuid系統(tǒng)調(diào)用或是exec一個(gè)setuid程序的結(jié)果;只有它會被用于文件訪問許可。進(jìn)程表中的保存用戶 ID使得一個(gè)進(jìn)程可以通過執(zhí)行setuid系統(tǒng)調(diào)用把有效用戶ID設(shè)置成它的值,以此來恢復(fù)最初的有效用戶ID。非root用戶是不可能通過se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論