系统安全实验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

提交评论