仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1011|回复: 14
打印 上一主题 下一主题

[其他Linux] Linux编程之为何会有 setuid?为何不是其余机制?仓酷云

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中。
  来我们组口试过的同砚,假如在简历中写了“熟习Unix/Linux”之类的话,那末极可能被问到相似如许的成绩:“为何会有setuid?为何不是其余机制?”。前不久和徐先生会商计划准绳成绩时又聊到了这个setuid。应徐先生倡议,写下这篇命题作文,说说我的了解。
  起首从setuid的使用场景谈起。良多教科书和收集文章讲setuid时城市拿passwd命令举例(听说老一辈人更喜好举mailbox的例子,殊途同归)。我们抛开对已知完成体例的了解,假定必要从头计划,看看这个场景有哪些需乞降办理计划。需求方面,一种典范了解是:请求用户a可使用程序φ受控地操纵用户b的文件θ。所谓受控,是指满意一个操纵束缚汇合S。除此以外,用户a对用户b的其他文件没有任何特权。现实上这就是一个会见把持成绩,后人已总结了多少办理模子。完整的脚色会见把持(RBAC)也许可以涵盖全体需求,只需体系或办理员为特定的营业供应特定的脚色并严厉把持会话;即使利用自立会见把持(DAC),只需完成得充足细粒度,也能够全力满意上述需求,只是平安性包管略差。但以文件为次要客体笼统的Unix恰恰选择了一种粗粒度的DAC——ugorwx。为何要做出这类选择?这极可能与Unix的“复杂(K.I.S.S.)”计划哲学亲切相干。比拟其他模子,ugorwx对体系和使用作出起码的需要假定,在供应最基础平安性的同时包管了较小的存储和决议开支。纯真利用ugorwx模子已可以涵盖年夜多半一般营业操纵(与体系办理或有用工具操纵绝对)的会见把持个性需求。
  但是ugorwx不克不及满意passwd和mailbox那样的需求,由于它对θ的把持粒度太粗,同意b利用φ操纵θ,就意味着必需同意一切用户利用恣意程序操纵θ,那末改动别人暗码、偷看别人邮件岂不容易如反掌?因而,必需要有一种分外机制为ugorwx的复杂性承当义务。如今假定要我们来计划这个分外机制,能够怎样干呢?万全之道多是做一套基于划定规矩的会见把持体系,在特定前提触发时实行——这明显不敷复杂。还能够给每一个用户或文件挂一个会见把持列表(ACL),声明特权,但实在主体之间的特别干系能够经由过程group束缚,ACL这类特别化不仅不敷复杂,还大概违反了ugorwx的计划初志。那末,只能把眼光会合到谁人特别的程序φ上。能够对它做一些四肢举动吗?其一,φ只是一小类必要特别处置的破例程序,程序自己是能够经心计划的,也就是说φ已自包括了S和θ属性,不必对S和θ做专门处置。其二,既然ugorwx的计划将主体干系特别性交由group处置,那末就有来由疏忽各个others成员的特别性,即疏忽a。其三,b对θ的owner干系是ugorwx中已存在的,φ运转时会见θ,能够获知这个信息。基于上述现实,一种最小开支的分外机制计划也就瓜熟蒂落:经由过程一个特别的标记位标识特别的程序φ,并在历程中辨别“实在UID”与“无效UID”的观点——这基础就是setuid了。论功效,setuid切实其实不敷完整,但上述剖析申明这并非年夜成绩,最少已能够应对passwd和mailbox场景了。
  现实上,Unix计划哲学对各个属性的弃取早已失掉总结。RichardGabriel的典范名篇TheRiseof“WorseisBetter”中将其归结为“新泽东方法”,即:复杂性是体系计划的第一要素,完成的复杂比接口的复杂更主要;任何值得注重的方面都请求准确性,但为了复杂性,准确性能够稍微妥协;计划不克不及过于纷歧致,但为了复杂性,分歧性能够有所就义;完整性应当掩盖理论中很多主要的情形,但只需复杂性遭到伤害,完整性必需作出就义。对比来看,ugorwx是一种接口和完成都很复杂的计划;ugorwx与setuid供应的平安级别(准确性)无限,但对通用操纵体系来讲已充足;setuid以就义接口分歧性为价值确保了ugorwx机制在多半情形下的复杂性,同时自己的完成也坚持了只管复杂;setuid不具有RBAC那样的完整性,但已可以应对体系办理或有用工具的等罕见的主要场景。
  最初,我们向汗青求证一下setuid的来历。Wikipedia给出的谜底其实不使人惊奇,setuid的制造者恰是DennisRitchie年夜神,事先的一篇专利(US4135240-Protectionofdatafilecontents)纪录了他的计划头脑。在这篇好像学术论文的专利中,Ritchie的确把复杂性作为了setuid的次要起点和立异点。专利作风恳切,不仅给出了setuid的计划计划和使用示例,同时也供认了它在功效上的不敷。依据Wikipedia上给出的引文,AT&T出于“不值得收取允许用度”的思索,将该专利开释到了私有范畴,任由开辟者利用,这也使得setuid在多种衍生体系中发扬光年夜,传播至今。
  固然,关于这类开放性成绩,每一个人都大概有本人的谜底,本文概念也只是作者的团体了解。不外假如你下次口试时碰到了诸如“为何会有ioctl”之类的成绩,无妨从计划哲学角度思索一下。

如果你学不好的话,你在linux中开发的机会就很少,或者说几乎没有,它的优势就消失了,然后随着时间的流逝,你就会全部忘记她;
小妖女 该用户已被删除
沙发
发表于 2015-1-21 07:08:49 | 只看该作者
Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-22 18:44:12 | 只看该作者
对于英语不是很好的读者红旗 Linux、中标Linux这些中文版本比较适合。现在一些Linux网站有一些Linux版本的免费下载,这里要说的是并不适合Linux初学者。
乐观 该用户已被删除
地板
发表于 2015-1-31 08:11:42 | 只看该作者
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
老尸 该用户已被删除
5#
发表于 2015-2-1 06:20:25 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
精灵巫婆 该用户已被删除
6#
发表于 2015-2-2 21:38:31 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
7#
发表于 2015-2-4 02:50:11 | 只看该作者
要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
爱飞 该用户已被删除
8#
发表于 2015-2-5 20:25:38 | 只看该作者
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
只想知道 该用户已被删除
9#
发表于 2015-2-8 11:46:44 | 只看该作者
再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?
若天明 该用户已被删除
10#
发表于 2015-2-13 09:57:21 | 只看该作者
熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。
若相依 该用户已被删除
11#
发表于 2015-3-3 19:00:31 | 只看该作者
感谢老师和同学们在学习上对我的帮助。
不帅 该用户已被删除
12#
发表于 2015-3-6 11:15:39 | 只看该作者
甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。
变相怪杰 该用户已被删除
13#
发表于 2015-3-11 17:06:45 | 只看该作者
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
admin 该用户已被删除
14#
发表于 2015-3-19 02:29:55 | 只看该作者
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
再见西城 该用户已被删除
15#
发表于 2015-3-27 00:10:00 | 只看该作者
感谢老师和同学们在学习上对我的帮助。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-15 00:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表