欢迎来到天天文库
浏览记录
ID:53264661
大小:1.11 MB
页数:13页
时间:2020-04-02
《系统安全实验1-1110320106--李彦琛.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、系统安全实验一1110320106李彦琛问题一:设计并实现不同用户对不同类文件的r、w、x权限:用户A具有文本文件流星雨.txt,该用户允许别人下载;用户A有编译了一个可执行文件cal.exe,该用户想在系统启动时运行;用户A有起草了文件demo.txt,想让同组的用户帮其修改文件;该用户分别如何设置权限,并验证其设置的正确与否首先创建一个用户sy1,用户密码为1,并切换到该用户身份:操作过程如下:/*lyc@lyc-Aspire-4750:~$sudouseraddsy1[sudo]passwordforlyc:lyc@lyc-Aspire-47
2、50:~$sudopasswdsy1输入新的UNIX密码:重新输入新的UNIX密码:passwd:已成功更新密码lyc@lyc-Aspire-4750:~$susy1密码:*/在住文件夹中创建一个流星雨.txt文档,存入内容为“MynameisLYC!”将流星雨.txt文档权限设置为774可执行文件cal.exe权限设置为771将文件demo.txt权限设置为776示例:sh1可以直接读取流星雨.txt,(如图1)读取成功,内容为MynameisLYC!改变权限之后:(如图2)再次以sy1用户身份来读取流星雨.txt,(如图3)读取失败,权限不够。
3、心得:文件或目录权限的控制分别以读取,写入,执3种权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。可以使用chmod指令去变更文件或目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:u:User,即文件或目录的拥有者。g:Group,即文件或目录的所属群组。o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。a:All,即全部的用户,包含拥有者,所属群组以及其他用户。有关权限代号的部分,列表于下:r:读取权限
4、,数字代号为"4"。w:写入权限,数字代号为"2"。x:执行或切换权限,数字代号为"1"。-:不具任何权限,数字代号为"0"。s:特殊?b>功能说明:变更文件或目录的权限。语法示例如下:chmod[-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]chmod[-cfRv][--help][--version][数字代号][文件或目录...]chmod[-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]其中-c或--cha
5、nges 效果类似"-v"参数,但仅回报更改的部分。-f或--quiet或--silent 不显示错误信息,-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。-v或--verbose 显示指令执行过程。--help在线帮助。--reference=<参考文件或目录>把指定文件或目录的权限全部设成和参考文件或目录的权限相同--version显示版本信息。<权限范围>+<权限设置>开启权限范围的文件或目录的该项权限设置。<权限范围>-<权限设置>关闭权限范围的文件或目录的该项权限设置。<权限范围>=<权限设置> 指定权限范
6、围的文件或目录的该项权限设置。问题二:设计并实现setuid程序的使用,并分析不同用户fork调用setuid程序后euid、ruid、suid的差别,以及用户调用execl执行setuid程序后euid、ruid、suid的差别。做本实验之前,我已经建立了多个用户:用户名密码UidRootRoot0Lycz1000Sy111001mo21002代码:test.c的程序如下:#define__LIBRARY__#include#include#include#include7、s.h>#includeintmain(){uid_truid,euid,suid;getresuid(&ruid,&euid,&suid);printf("WhoamI?Iam:");printf("ruid:%dteuid:%d:tsuid:%d",ruid,euid,suid);if(!fork()){printf("S:Ihadsetuid(1002)");if(setuid(1002)==0)printf("S:succes!");if(setuid(1002)==-1)printf("S:8、failedtosetuid(1002)!");getresuid(&ruid,&euid,&suid);printf
7、s.h>#includeintmain(){uid_truid,euid,suid;getresuid(&ruid,&euid,&suid);printf("WhoamI?Iam:");printf("ruid:%dteuid:%d:tsuid:%d",ruid,euid,suid);if(!fork()){printf("S:Ihadsetuid(1002)");if(setuid(1002)==0)printf("S:succes!");if(setuid(1002)==-1)printf("S:
8、failedtosetuid(1002)!");getresuid(&ruid,&euid,&suid);printf
此文档下载收益归作者所有