系統安全實驗11110320106李彥琛_第1頁
系統安全實驗11110320106李彥琛_第2頁
系統安全實驗11110320106李彥琛_第3頁
系統安全實驗11110320106李彥琛_第4頁
系統安全實驗11110320106李彥琛_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、系統安全實驗一1110320106李彥琛問題一:設計并實現不同用戶對不同類文件的r、w、x權限:用戶A具有文本文件流星雨.txt,該用戶允許別人下載;用戶A有編譯了一個可執行文件cal.exe,該用戶想在系統啟動時運行;用戶A有起草了文件demo.txt,想讓同組的用戶幫其修改文件;該用戶分別如何設置權限,并驗證其設置的正確與否首先創建一個用戶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密碼:*/在住文件夾中創建一個流星雨.txt文檔,存入內容為“My name is LYC!”將流星雨.txt文檔權限設置為774可執行文件cal.exe權限設置為771將文件demo.txt權限設置為776示例:sh1可以直接讀取流星雨.txt,(如圖1)讀取成功,內容為My name is LYC!改變權限之后: (如圖2)再次以sy1用戶身份來讀取流星雨.txt,(如圖3)讀取失敗,權限不夠。心得: 文件或目錄權限的控制分別以讀取,寫入,執3種權限來

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

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

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

6、程序的使用,并分析不同用戶fork調用setuid程序后euid、ruid、suid的差別,以及用戶調用execl執行setuid程序后euid、ruid、suid的差別。做本實驗之前,我已經建立了多個用戶:用戶名密碼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;函數說明:int setuid(uid_t uid)1.如果用戶(當前調用的用戶)有超級用戶權限,則real user ID,effective user ID和saved set-user-ID都將設置為參數uid的值.2.如果用戶沒有超級用戶權限,僅當參數uid等于real user ID或saved set-user-ID時,effective user ID被設置為參數uid的值,

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

14、 set-user-ID不變;否則返回錯誤. 如果調用進程的有效用戶ID不是超級用戶,僅當uid等于真實用戶ID或保存用戶ID時,內核才會把u區中的有效用戶ID設 置成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執行test.c程序結果如圖片五:以用戶sy1身份運行程序test.c,由實驗結果可知,無論是fork還是execl,調用setuid函

15、數均失敗了。setuid可以修改real user ID effective user ID和saved set-user-ID這三個值,但是要用權限. 如果用戶沒有超級用戶權限,僅當參數uid等于real user ID或saved set-user-ID時,effective user ID被設置為參數uid的值,real user ID和saved set-user-ID不變;否則返回錯誤.。如果調用進程的有效用戶ID不是超級用戶,僅當uid等于真實用戶ID或保存用戶ID時,內核才會把u區中的有效用戶ID設 置成uid以用戶root執行test.c程序結果如圖片六:以用戶root身份運行

16、程序test.c,由實驗結果可知,無論是fork還是execl,調用setuid函數均成功了。setuid可以修改real user ID,effective user ID和saved set-user-ID這三個值,但是要用權限.,超級用戶權限可將real user ID, effective user ID和saved set-user-ID都將設置為參數uid的值. 調用進程的有效用戶ID是超級用戶,內核會把進程表以及u區中的真實和有效用戶ID都設置成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表示的是實際上進程的執行者是誰,effective user ID主要用于校驗該進程在執行時所獲得的文件訪問權限,也就是說當進程訪問文件時檢查權限時實際上檢查的該進程的"effective user ID", saved set-user-ID 僅在effective user ID發生改變時保存.一般情況下,real user ID就是進程的effective us

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

19、setuid 函數設置的id對三者都起效.2)否則,僅當該id為real user ID 或者saved set-user-ID時,該id對effective user ID起效.3)否則,setuid函數調用失敗.內核會給每個進程關聯兩個和進程ID無關的用戶ID,一個是真實用戶ID,還有一個是有效用戶ID,真實用戶ID用于標識由誰為正在運行的進程負責。有效用戶ID用于為新創建的文件分配所有權、檢查文件訪問許可,還用于通過kill系統調用向其 它進程發送信號時的許可檢查。內核允許一個進程以調用exec一個setuid程序或者顯式執行setuid系統調用的方式改變它的有效用戶ID。 所謂setu

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

溫馨提示

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

評論

0/150

提交評論