登录
首页 » Others » 工业机器人控制轨迹规划及编程

工业机器人控制轨迹规划及编程

于 2020-12-02 发布
0 487
下载积分: 1 下载次数: 6

代码说明:

wei简单的介绍了工业机器人控制轨迹规划和编程课程,可以参考下,开拓思路山东建筑大学备课纸第七章工业机器人的轨迹规划及编程轨迹规划轨迹规划是指根据作业任务要求,确定轨迹参数并实时计算和生成运动轨迹。它是工业机器人控制的依据,所有控制的目的都在于精确实现所规划的运动。机器人语言机器人具有可編程功能,因此需要用户和机器人之间的接口。为了提高编程效率,岀现了机器人编程话言,它以一种暹用的方式解决了人一机通信问题。机器人离线编程机器人离线编程系统是利用计算机图形学,建立机器人编程环境,从而可以脱离机器人工作现场进行编程的系统。由于不占用机动时间,提高了设备利用率。而且由于离线编程本身就是 CAD/CAM一体化的组成部分,有时可以直接利用CAD数据库的信息,大大减少了编程时间,提高了编程水平。7.1工业机器人的轨迹规划引言指定工业机器人执行某政接作作[加些约束条住轨迹的划和协关节坐标空间斗标空间轨迹规划涉及卜面三个问题◇要对机器人的任务进行描述,即对机器人的运动轨迹进行描述。◇根据所确定的轨迹参欻,如何在计算机内部描述所要求的轨迹。这主要是选择习惯规定以及合理的软件数据结构问题。◇对内部描述的轨迹进行实际计算。通常是在运行时间内按一定的速率计算出位置、速度和加速度,生成运动轨迹。二、轨迹规划的一般性问题工业机器人的作业可以描述成工具坐标系{相对于工作坐标系{S的一系列运动:图7-1作业的措述工具坐标系相对于工作坐标系的运动来描述作业路经把作业路径的描述与具体的机器人、手爪或工具分离开来,形成了模型化的作业描述方法。从而使这种描述既适用于不同的机器人,也适用于同一机器人上装吏不同规格的工具:2凯器具的症置程上置机器人从初始状态运动到终止状态的作业,看成是工具巫标系从初始位置T0}变化到终止位置Tf}的坐标变换变换包含了工具坐标系的位置和姿态的变化。在轨迹规划中,也常用“点”这个词来表示机器人的状态,或用它来表示工具坐标系的位姿。当需要更详细地描述运动时,不仅要规定机器人的起始点和终止点,而且要给出介于起始点和终止点之间的中间点,也称路径点运动轨迹除了位姿约束外,还存在着各路径点之间的时间分配问题。例如,在规定路径的同时,必须给出两个路径点之间的运动时间机器人的运动应当平稳,不平稳的运动将加剧机械部件的磨损,并导致机器人的振动和冲击。钪迹规划既可在关节■空间中进行,也可在直角坐标空间中进行。在关节空间中进行轨·迹规划是指将所有关节变量表示为时间的函数,用这些关节函数及其阶、三阶导数描述机器人预期的运动。在直角坐标空间中进行轨迹规划,是指将手爪位姿、速度和加速度表示为时间的函数,而相应的关节位置、速度和加速度由手爪信息导出三、关节空间的轨迹规划机器人作业路径点通常由工具坐标系(}相对于工作坐标系{S)的位姿来表示,因此,在关节空间中进行轨迹规划4≯首先需要将毎个作业路径点向关节空间变换,即用逆运动学方法把路径点转换成关节角度值,或称关节路径点;然后,为毎个关节相应的关节路径点拟合光滑函数;这些关节函数分別描述了机器人各关节从起始点开始,依次通过路径点,最后到达某目标点的运动轨迹。由于毎个关节在相应路径段运行的时间相同,这样就保证了所有关节都将冋时到达路径点和目标点,从而也保证了工具坐标系在各路径点县有预期的位姿;关节空间的轨迹规划:关节空间中进行轨迹规划,不需考虑直角坐标空间中两个路径点之间的轨迹形状,仅以关节角度的函数来描述机器人的轨迹,计算简单、省时;关节空阃与直角坐标空间并不是连续的对应关系,关节空间内不会发生机构的奇异现象,从而避免了在直角坐标空间规划时所出现的关节速度失控问题;在关节空间进行轨迹规划,规划路径不是唯一的。只要满足路径点上的约束条件,可以选取不同类型的关节角度函数,生成不同的轨迹。1.三次多项式插值当己知末端操作器的起始位姿和终止位姿时,庄逆向运动学,即可求出对应于两位姿的各个关节角度。因此,末端操作器实现两位姿运动轨迹描述,可在关节空间中用通过起始点关节角和终止点关节角的一个平滑轨迹函数0(t)来表示;为了实现关节的平稳动,每个关节的轨迹函数(t至少需要满足四个约束条件:两端点位置约束和两端点速度约束端点位置约束是指起始位姿和终止位姿分别所对应的关节角度00=已为满足关节运动速度的连续性要求,在起始点和终止点的关节速度简单地设定为零,即(0=06()=0上述给出的四个约東条件可以唯一地确定一个三次多项a(t)=a0+a!t+a22+a3t3运动过程中的关节速度和加速度则为:9()=a1+2a2!+3agt2(t)=2a2+6at为了求得三次多项式的系数,代以给定的约束条件,有方稈组分=a+at+a+aD-dt 2u r t ja rl求解上述方程组,可得3所以,对于初速及终速为零的关节运动,满足连续平稳运动要求的三次多项式插值函数为a(r=6+(-2--)其关节角速度和角加速度表达式为()-是2(明,-一吾(,-8F6()=是(4-)-;-r三次多项式插值的运动轨迹曲线!图7三践康式插值毛动轨遗)位瞎时刺雙:{)急澧时繭线:C)鱼加速度间曲线2.过路径点的三次多项式插值机器人作业除在A、B点有位姿要求外,在路径点C、D…也有位姿要求。对于这种情況,假如终端执行器在路径点停留,即各路径点上速度为0,则轨迹规划可连续直接使用前面介绍的三次多项式插值方法;但如果只是经过,并不停留航需要将前述方法推广。AB仨某段路径上,“起始点”为θ0和ω0,"终止点"为f和ωf。这时,确定三次多项式系数的方法与前面所述的完全一致,只不过是速度约束条件变为e(0)=me(r)=a利用约束条件确定三次多项式系数,有下列方程组:9=0+ax+口+aa,=a1+2a+3求解方程组3+出)=02)+七《+路径点上的关节速度,可出以下任一规则确定如果机器人末端操作器在经过路径点时冇速度要求,则可以利用此路径点上的逆雅可比矩阵,把该路径点的直角坐标速度转换成关节坐标速度。轨迹规划时则以此作为速度约来条件。如果某个路径点是机器人的奇异点,即此点的逆雅可比不可求,这时就无法求关节速度了;此外,在求各点关节速度时,要逐点计算逆雅可比矩阵,并依此计算关节速度,耗时较多。路径点上的关节速度,可由以下任一规则确定由控制系统采用某种启发式方法自动地选取合适的路径点速度。用三次多项式插值前,先假设各路径点之间关节运动速度是均匀的,即图中所示用直线段将这些路径点依次连接起来。规则选定:如果桾邻线段的斜率在路径点处改变符号,则速度选为零;如杲相邻线段斜率不改变符号,则选取路径点两侧的线段斜率的平均值作为该点的速度。因此,只要给定路径点,系统就能依此规则自动生成相应的路径点速度路径点上的关节速度,可由以下任一规则确定斗按照保证毎个路铚点的加速度连续的原则,由控制系统自动地选择路径点的速度。为此,可以设法用丙条三次曲线在路径点处按一定规则连接起来,拼凑成所要求的轨迹。拼凑的约束条件是:连接处速度连续,而且加速度也连续。7.2工业机器人的编程机器人编程方式机器人编程,是针对机器人为完某瓊作亚进拉程序投复的人的吧4国和力与编国性定环境中作诀上式有大关作业能方微计算机近自然路司匿人与机器实现各种机器人揉作机器人编程方法三种形式1、示教编程操作者必须把机器人终端移动至目标位置,并把此位置对应的机器人关节角度信息记录进内存储器,这是示教过程。当要求复现这些运动吋,顺序控制器从内存读岀相应位置,机器人就可重复示教时的轨迹和各科操作,这是再现过程。手把手示教」示教盒示教于把手示教要求用户使用安装在机器人于臂内的操纵杆,按给定运动顺序示教动作内容。示教盒示教则是利用装在控制盒上的按钮驱动机器人按需要的顺序进行操作示教编程优点:只需要简单的设备和控制装置即可进行。操作简单,易于掌握。示教再现过程很快,示教之后马上即可应用。示教编程缺点:编程占用机器人的作业时间艮难规划复杂的运动轨迹以及准确的直线运动;难以与传感信息相配合难以与其他操作同步;2、机器人语言编程实现了计算机编程,并可以引人传感信息,从而提供一个更通用的方法来解决人一机器人通信接口问题。目前应用于工业中的是动作级和对象级机器人语3、离线编程用通用语言或专门语言预先进行程序设计,在离线的情况下进行轨迹规划的编程方法。离线编程系统是基于CAD数据的图形编程系统。由于CAD技术的发展,机器人可以利用CAD数据生成机器人路径,这是集机器人于CIMS系统的必由之路、机器人语言编程早期的工业机器人,由于完成的作业比较简单,作业内客改变不频繁,采用鬥定程序控制或示教再现方法即可满足要求,不存在语言问题。机器人木身的发展,计算机系统功能日益完善以及要求机器人作业内容愈加复杂化,利用程序来控制机器人显得越来越困难编程过程过于复杂,使得在作业现场对付复杂作业十分困难。述北一一用机器人语言→[控制机器人动作(一)机器人语言的发展概况1973年,斯坦福大学人工智能研究室美国IBM公司1979年,美国 Unimation公司80,美国 Automatrix公司80,美国麦道公司(二)机器人语言的分类1、根据作业描述水平的高低分(1)动作级机器人语言VAL◆以机器人手爪的运动作为作业描述的中心◇用该级语言编写的作业程序,通常由使机器人手爪从一个位置到另一个位置的一系列运动语句组成。◆动作级机器人语言的每一条语句对应于一个机器人动作。2)对象级机器人语言- AUTOPASS今以近似自然语言的方式,按照作业对象的状态变化来进行程序设计以描述操作物体之间关系为中心的语言。今它不需要去描述机器人手爪如何动作,只要由操作者给出作业本身的顺序过程的描述及环境模型的描述,机器人即可自行决定如何动作。(3)任务级机器人语言◇最理想的机器人高级语言,是用被操作物体,而不是机器人的动作来描述作业任务◇使用者只要按某种原则给岀作业起始状态和作业目标状态,机器人语言系统即可利用口有的环境信息和知识库、数据库自动进行推呷、计算,最后白动生成机器人详细的动作、顺序和相应数据。◇须具冇判断环境、描述环境的能力;同时,也必须冇自动完成许多规划任务的能力。2、按表面形式分汇编型,如VAL语编译型,如AI、LM语言;自然语言型,如 AUTOPASS语言等;(三)机器人语言的特征机器人语言则包含语言本身、语言处理系统和机器人的工作环境模型三部分9盐理系恒外部乱音工件1.具有作业环境和作业对象的描述性。1)环境输入:视机器人语言水平不同,输入方法也不相同。目前的输入方法一般是由操作者与计算机的人机对话来进行的。将来随着视觉技术的发展,可能由机器人视觉的方法自动生成。〔2)环境建模:进行机器人编程时,需要描述物体三维空间的几何关系的语言,对操作物体的位置和姿态,操作物体之间的关系进行描述,并使之模型化。2)环境模型的修改、更新:在作业过程屮,操作物体的位置、姿态以及它们之间的关系一般随着作业而发生改变,语言系统要根据操作情况的变化来改变环境模型的内容。2.具有作业内容的描述性3.具有良好的编程环境4.具有人机接口和传感器接口功能机器人离线编程、离线编程的概念第一代工业机器人采用示教编程方式,无论是采用手把手示教或控制盒示教,都需要机器人停止原来的工作。而再现时若不能满足要求,还需反复进行示教进行一项任务之前,在现场编程过程要花费很多时间,这对于大批量生产的简单作业,基本还能满足要求。但是,随着机器人应用到中小批量生产,以及要求完成任务的复杂程度的增加,用示教编程方式就很难适应了。二、机器人离线编程随着计算机技术和机器人技术的不断发展,机器人与 CAD/CAM技术结合,已形成生产效率很髙的柔性制造系统(FMS)和计算机集成制造系统(CIMS)。这些系统中大量采用工业机器人,具有很高的适用性和灵活性一)离线编程的概念杋器人离线编程就是利用计算机图形学的成果,建立机器人及作业环境的三维几何模型,然后对机器人所婓完成的任务进行离线规划和编程,并对编程结果进行动态图形仿真,最后将满足要求的编程结果传到机器人控制柜,使机器人完成指定的作业任务。(二)离线编程系统的一般要求工业杋器人离线编程系统的一个重要特点是能够和CAD!CM建立联系,能够利用CAD数据库的资料。对于一个简单的机器人作业,几乎可以直接利用CAD对零件的描述来实现编程。三)离线编程系统的基本组成10

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • linux-selinux功能及源码分析
    该书详细介绍了linux中关于selinux部分功能的实现流程和关键代码分析7.1.1.3基于创建者SID的文件系统.,,7.1.2 Gcncralizcd Sccurity Context labeling,,,,637.1.4 Mount-Point labeling667.1.5 Initial SId87.1.5.1 Initia1SID和 Initial sc的定义7.1.5.2 Initia1SID和 Initial sc的写出和解析707.1.5.3 Initia1SID和 Initia1SC的使用717.1.6进程创建的内核数拥结构的标签727.2何时需要为应用程序开发pp?●··垂·看垂723设计pp的一般过程7.4为vock程序编写v1ock.pp●垂春·垂767.4.1第一阶段:定义基本的te,fc和.if文件767.4.2第二阶段:根据 AVC Denied msg补充相应的规则807.4.3第三阶段:使用 don audit规则屏蔽与冗余操作枓关的错误信息7.4.4其他注意事项87.5为 samhain程序编写 samhain.pp..857.5.1第一阶段:定义基本的.te,,fc和.if文件事垂垂7.5.2第二阶段:根据 AVC Denied msg补充相应的规则07.5.3第三阶段:使用 don audi t规则屏蔽与冗余操作相关的错误信息927.5.4图解:使用 samhain时的 Domain transition过程春春鲁看D垂垂春,,937.6使用 SLIDE来开发pp,分析 SELinux源代码.7.7编写pp时的注意事项中垂鲁鲁··●,,,,,,,,,,,948. SELinux问题分析步骤总结.8.1排除DAC权限的问题,,,968.2检查用户当前所扮演的角色963分析 AvC Denied message: Target的标签正确吗?,8.4在系统启动过程中适时地修复错误的文件标签97应用程序的实际行为要和其pp的假设相一致,,,,988.6明确相应 domain所缺少的权限8.7其他注意事项8.7.1在 Permissive模式卜调试,998.7.2取消所有的 dontaudit规则.8.7.3当心 MLS Constraints1008.7.4检査 SeLinux- aware应用程序的配置和编译选项,.1018.7.5积极地和社区交互.1018.7.6使用 strace直接定位失败的系统调用(重要!).………1028.8 selinux问题分析过程和方法举例( Revisited),,1028.8.1实例一:用户无法在 console上正常登录-使用 strace定位失败操作1028.8.2实例二: sysadm r无法正确使用 useradd命令108SELinux开发笔记.…,,1149.1使能对/dev/ console的支持1149.1.1提出问题:20101213及之前的 epolicy缺乏对 conso1e的支持9.1.2分析问题··p9.1.3解决问题.1169.1.4测试结果1179.1.5使用 strace观察 consolo被重新打标签的细节(new),,,,1179.2 Socket labeling开发,1189.2.1提出问题: socket默认继承其创建者的SID的副作用,,,,,1189.2.2分析问题1199.2.3解决问题1199.2.4测试结果.,.1239.3给 role transition规则添加c1ass的支持,,..,,1249.3.1提出问题-当前 role transition规则只对 process类有效,,1249.3.2分析问题..,,,,,.1249.3.3解决问题D垂垂垂,,,,,1259.3.4测试结果,,,,,1319.3.5其他说明.1339.3.6经验总结●非春…1359.4增加 role attribute的攴持(new).,,,1369.4.1提出问题之一:roe- dominance规则的局限性1369.4.2提出问题之二:期望的 role attribute使用模型..1409.4.3分析问题1429.4.4解决问题D1439.4.5测试结果639.4.6一个有意思的编译问题,,,,1689.4.7有关role- types规则语法的讨论.,,.1719.5区分 tuna1e和 boolean(new).···1729.5.1提出问题无用的 tunable分支被写入 policy.X.729.5.2分析问题1739.5.3解决问题,,1749.5.4测试结果.1879.5.5其他经验总结9.N在策略中指定 newcontext的缺省设置方法(todo)1929.N.Ⅰ提出问颋- newconteκt的设置策略被硬编码到机制中19210. SeLinux内核驱动分析小记19410.1LSM核心数据结构及相应回调函数,19410.2 sELinux核心数据结构.19410.2.1 selinux对内核数据结构的扩展19410.2.1.1进程的安全属性19510.2.1.2文件和打开文件描逋符的安全属性.,,.,,,,,,..19510.2.1.3 socket的安全属性10.2.1.4文件系统超级块的安全属性1960.2,2AVC数据结构.19710.2.3內核 policy中保存TE规则的数据结构.,19910.2.4內核 policy中保存RBAC规则的数据结构.鲁鲁,,,,,20010.2.5 SeLinux规则在内核中的检查点总结(new)..,,,,,,20110.3情景分析:打开文件时的相关函数调用链20110.4通过 SEL inuxfs访问内核 Security Server,,,,,,,,,,,,,,20810.4.1/ selinux/load和1 oad policy命令一装载冰解析 policy.二进制文件20910.4.2/sc1inux/ relate1及 compute relabel命令-查询 type change规则21110.4.3/ selinux/ create及 compute create命令-查询type_ transition规则21110.4.4/ selinux/ member及 compute member命令-查询 type member规则.21210.4.5/ selinux/ access文件和 compute av命令-查询a11ow规则...21310.4.6/ selinux/user文件和 compute_user命令-查询用户登录后可能的SC21310.4.7/ selinux/ initial contexts/-查询 Initia1SI对应的安全上下文21410.4.8/ selinux/ class/-查询内核 class datum数拥结构(todo10.5情景分析: Domain transition的实现●··垂·看垂,,,,,,,,,,,,,,,,,,,,,21510.5.1 selinux setprocattr凼数-/proc/lpid/attr/“文件驱动21610.5.2 do execve的行为和相关 seLinux内核驱动垂垂看21810.6情景分析:文件系统的挂载和新文件的创建2110.6.1文件系统的挂载过程(new)..22110.6,2确定新创建文件的标签...23610.7 Context数据结构和u32sid之间的映射24110.7.1 sidtab node的定义和 sidtab的组织结构.24110.7.2 sidra_ insert函数- sidtab node的插入·,,,,,,,,,,,,,,24210.7.3 sidtab context to sid函数返回或分配sid..24310.7.4 security transition sid函数-计算新 subject/ object的sid....24410.7.5创建 context并注册到 sidtab以获得sid的时机.24910.7.6 security context to sid函数返回Sc字符对应的sid....25010.7.7 sidtab scarch corc囪数- sidtab node的查找,,,25110.7.8 security sid to context core函数-返回sid所对应的SC宇符串25210.8 Class Mapping..25410.8,1C1 ass mapping的作用..,,,,,25410.8,2 Class Mapping的创建垂垂垂·,,,,,,,,,,,,,,,,25410.8.3 Class mapping的使用-c1ass/perm内核态和用户态索引的转换.25710.8,4增加 class或者权限的方法25810.9和文件操作相关的回调数9. 1 selinux file mprotect回调函数25910.10和 AF UNIX SOCket相关的回调函数(todo),26310.11和程序执行相关的操作(todo).26410.11.1se1 inux bprm secureexec凼数-扩展 AT SECURE机制26410.11.1.1C库 AT SECURE机制介绍26410.11.1.2C库 AT SECURE机制演示26710.11.1.3 SELinux对 AT SECURE机制的扩展( Revisited).26911.用户态应用程序对 SeLinux的支持27211.11 selinux相关文件分析,27211.1.1 selinux config,c文件.,,27211.1.2 gelfilecon.c文件,,,,,27211.1.3 procattr.c文件.27211.1.4 compute relate1.c文件(访问/ selinux/ relate1)..27311.2 newrole源代码分析,27411.2.0 newrole命令的使用模型2742.1main函数7311.2.2 parse command linc arguments函数.,,,27611.2.3 relabel tty函数2761.3PAM模块分析..,27711.3.1 pam sC1inux.so作用分析(TODO27711.3.2pam1 oginuid,so作用分析,27811.3.3 pam name space.so作用分析.,27911.3.3.1多态( polyinstantiation)的作用,,,,,,,,,,,27911.3.3.2LSP对多态的配置,,,,,,,,,,,,,,28111.3.3.3 SELinux对 polyinstantiation的支持.,,,,28111.3.3.4解决在使能多态后 crond的使用间题28211.3.3.5 pam namespace,so源代码分析(IODO11.3.3.6有关 pam namespace.so的剩余问题8412. refpolicy的编译,链接,扩展,,,,,,,,,28512.1描朮标识符的数据结构8512.1.1 type datum t8512.1.2 common datum t12.1.3c1 ass datum t.,,,,,.,,,,.28612.1.4ro1 e datum t..,,,,,,曲D,.,28712.2描朮规则的数据结构..28812.2.1 AVTAB AV和 AVTAB TYPE类规则..,,,,28812.2.2 rolc transition规则●·垂,,,,,,,,,,,,,,,,,29012.3用户态 policy t数据结构分析.12.3.1 policy t数据结构综诚29012.3.2 symtab符号表.29412.3.3 avrule block t, avrule decl t FH scope stack t12.3.4 scope datum t-描迒标识符的定义者和使用者29712.3.5 scope index t-描逋一个b1ock/dec1内定义或引用的标识符.29712.3.6 cond node t-描朮一个ir- else conditiona29812.4 module的编译- checkmodu1e..30112.4.1编译过程核心数拥结构关系图30112.4.2 define policy- policy module词法分析....30212.4.3 begin optional- optional_ policy词法分析30412.4.4 declare type-type标识符的定义,,30312.4.5 require type-声明对type标识符的外部依赖31512.4.6 define te_ arab-TE规则的词法分析..31812.4.7 define role_ trans- role transition规则的词法分析32412.4.8 define conditional-if- else conditiona1的词法分析.2912.5 module的链接- semodule1ink.12.5.1链接过程核心数据结构关系图34012.5.2 symtab符号表的拷贝...,,,,,,34112.5.2.1 p types符号表的拷贝,,..34112.5.2.2所有其他标识符符号表的拷贝,,,,,,,,,,,,,,34412.5.2.3 p roles符号表的修正12.5.3 Scope符号表的拷贝34912.5.4链接过程的主要囪数调用链12.6 module的扩展- semodule_ expand37012.6.1 expand过程核心数据结构关系图..37012.6.2type的拷贝..37112.6.3 common的拷贝,,,37412.6.10 expand过程的核心函数调用链,.,,,37612.6.11展开规则的“字面”描诚- copy and expand avrule block囪数..38312.71ink和 expand过程的图解(new),,,,,,,,40012.7.1Role/ attribute标识符的1ink和 expand..…………40012.7.2 symtab的1ink和 expand,,,,,,403128规则中的m4宏定义(new)..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,40513. seLinux的应用41013. 1 Labeled Networking (half-baked),,,,,,,,,,,,,,,,,,,,,,,41013.1.1 IPsec简介,,,,,41013.1.2 seLinux对本地网络的控制( compat-net),,,,,,。,,,,,,,41613.1.3用 Labeled ipsec实现分布式网络控制..41713.1.4 Linux內核ⅹIM相关数据结构.41813.1.5和 IPsec相关的类,权限和援囗D41813.1.6LSM中和 Labeled ipsec相关的回调函数,41913.1.6.1检查一个f1ow(发送或接收)能否使用一个SPD条目41913.1.6,2给SPD/SAD分配安全属性.,,,42113.1.6.3释放SPD/SAD中的安全属性,,,,,,,,,,,,,,,.42413.1.6.5逐包检查一个 socket能够接收一个skb42413.1.6,4获取发送方的安全上下文字符串..,,4231.7 Labeled ipsec环境的搭建.13.1.8观察 Labeled ipsec的行为43013.1.9和 Labeled ipscc相关的 SeLinux规则,432参考文献434简化 selinux操作的bash配置方法本文档各个版本的说明437注第1至5章包含自己对《 SELinux By example》一书的学习心得;第6至9章包含自己实际经验的总结第10和11章为 selinux内核和用户态源代码分析总结第12章为 refpolicy的编译过程源代码情景分析;第13章打算收录些 SeLinux在内核或者用户态的应用,比如 Labeled Networking,XACl等。l, Refpolicy有300+个p的实现,了解核心pp的实现,必须首先了解应用程序的行为以及安全目标2,阅读 sELinux- aware应用程序源代码,看如何使用 libselinux库函数,学习 sELinux用户态编程3,了解 sELinux语法,标识符的二进制表示形式,内核态和用户态的数据结构;4,学习 policy module的 compile/ expansion/1ink过程5,按照类别,逐步掌握LSM回调囪数的调用时机,所在内核子系统的原理,以及 SELinux对LSM回调函数的实现(参考《 Implementing sElinux as a lsm module》一文)6,掌握 seLinux对各个内核子系统核心数据结构的扩展7,学习XAC规范,体会如何开发 Userspace Ob、 ject Manager;8,积极阅读 Joshua,Dan等人的b1og,向前奉们学与。9,积极关注 selinux邮件列表上的问答和讨论,丰富自己的视野希望能通过自己坚持不懈的努力,证得同满的 sELinκ知识和智慧。引子1,软件的缺陷不可避免(无论过去,现在,或将来);2,没有底层操作系统的支持就无法真正实现上层软件的安全性D. Baker,《 Fortresses Built Upon Sand》操作系统中访问控制模型的演化1.1访问控制模型的概念( Reference moni tor)subjectsAccessobjectsAlertYes or No?Feference validation MechanismRuleelampcrpra吋DBVerifiableRY M由上图可见,访问控制模型由如下四部分组成1, Subjects:访间的发起者,比如系统中的进程2, Objects:被访闩的对象,比如架作系统所管理的仼何资源丶数捃(包拈进程,任意类型文件,Tc尸端口,甚至单个网络报文。总而言之,任何内核数据结构都可能成为被访问的对象)3, Rules de:规则库,在用户态实现的访问策略,定义 Object的属性并规定哪些Sub、ect可以通过什么样的方式对它进行访问;4,RVM( Reference validation mechanism):在操作系统内实现的机制,是汸问控制策略的执行者,在访问操作过程中根据规则库判断当前操作是否合法;Hinx首先需要标识访问者和被访问的对象,由下文可知相关信息保存在进程的 task struct以及其他内核数据结构中 security指针所指向的数据结构中(注意这些数据结构都是运行时动态创建的,安全属性信息来源于文件在辅存上的扩展属性,以及规则库中的 Initia1S1定义等)。白用户态定义的访问规则库指定哪些访闩老能够以何种方弌访问哪些对象,而内核屮的SεLix机制则根据当前操作的访问者和被访问对象,查询规则库得到Yes/No结论。1.2DAC( Discretionary Access Contro1)的致命伤¨ discretionary”一词的含义为“ not contro1 led bv strict rules, but decided on by someonein a position of authority”,所以DAc的本质是由文件的属主定义其它用户对该文件的许可访问方式,其“ owner-group-wor ld”模型如下:S 1s -1 /usr/bin/passwdrwsr-xr-x I rootroot 37084 2009-04-04 13: 49/usr/bin/passwd系统中所有文件属主给各自文件所定义的“ owner-group-wor d”模型的总和,即为DAC下访问规则库的实现。DAC的开发环境(相对封闭的开发社区,或大学实验室)和对软件使用环境的假设(软件没有缺陷且运行环境友好)注定了DAC存在着天生缺陷:进程和文件的安全属性都基于(且总是基于)uid/euid和gid/egid,无论进程执行什么应用程序,其uid/euid都不改变(暂不考虑 setuid类程序),无法将进程所执行程序的行为和可靠性(安全性)标识到进程的安全属性中,导致操作系统无法有针对性地对进程施加访问控制比如,用户登录 shell进程会创建子进程以执行shel1的外部命令,子进程继承父进程的uid/gid,所以无法通过uid/gid来区分父子进程,即无法区分用户人为的操作和通过程序执行的操作。比如,无法限制 passwd程序只能被用户在命令行执行,而不能被属于该用户的其它进程执行。显然,“用户(登录hc11进程)是可信的”绝对不等于“用户执行的程序(后继fork的子进程)也是可信的”。登录sh1进程的行为由用户有意识地支配,而属于该用户的进程的行为则由其执行的实际程序决定。但是程序可能冇在安全漏洞,一巨被攻击植入恶意代码,黑客将具有该用户在系统上的所有权力(比如恶意删除用户的文件,盗取uid/gid所能读取的文件的内容,执行 passwd程序修改用户的密码)另外,用户进程可以执行各种应用程序,而这些程序自身的行为丶对系统安仝性的景响都不尽相同,比如网络类应用程序更容易受到外界病毒的攻击,相应地操作系统应该对此类应用施加更为严格的访冋控制。显然无法通过进程的uid/gid来描当前进程所执行的程序的安全性,因此操作系统也无法有针对性地实施访问控制。综上所逋,仪将uid/gid来作为进程和文件的安全属性是远远不够的最后,DAC的另一个缺点是对权力的管理和划分不够细致(只有两种情况:root或non-root),无法进步细分丶限制root用户的能力。一旦euid/ egid为0的进稈被攻破,将危害整个系统的安全1.3MAC( Mandatory access Contro1)的起源针对DAC的缺点,在ⅥAC中不再由访问对象的属主定义不同用户对其的许可访问方式,而是由匿定的规则库决定。MAC最初的研究由美国军方的MLS(u1ti- Leve1 Security)应用所推动,它将访问主体和被访问对象分成不同的安全级别,严格控制信息只能从低安全级别向高安全级别流动:低安全级别的丰体只能向高安全性的数捃对象中追加新的数据,并∏禁上读取;高安全级别的主体能够读取低安全级别的数据,并且禁止任何形式的写入(即“ no read up, no write down”)ⅥS只定位于数据保密性而并不关心数据完整性和最小权能原则( east, Privilege),以及对进程的能力进行分类。后来的FASK安全系统模型着眼于解决这些不足,而 SELinux则是FASK在 Linux内核中的实现1.4 Selinux的TE( Type Enforcement)模型SELinux作为MAC的一和实现,通过中央规则库( policy.x,二进制数据文件)给所有进程丶所有文件内核数据结构定义各自的安全标识(标签,1abel/type),明碓定义被访问对象所支持的访问方式,并规定进程标签对被访问对象的合法的访问方式。在配置 SELinux时给整个文件系统上的所有文件设置标签,在系统启动过程中init进程经由 selinux接口装载 policy.X到內核空间,由內核中的 SecuritvServer在处理用户态系统调用时实时査询(注,这里所说的“ Security server”,即为 sELinux内核驱动中定义的各种数据结构,比如 sistah, policy, AVC cache,以及在 services.c文件中定义的各种以“ security”开头的函数)
    2020-12-04下载
    积分:1
  • UFS3.0 SPEC
    Universal Flash Storage (UFS) Version 3.0,JESD220D_UFS3.0.PDF,UFS3.0 SPEC,英文原版
    2020-12-11下载
    积分:1
  • 点云的边界提取
    能够将散乱的点云数据边界点及特征点提取出来,并显示。
    2020-12-03下载
    积分:1
  • Essential C++ 中文版+英文版 侯捷译.rar
    Essential C++ 中文版+英文版 侯捷译.,这书不错
    2020-11-29下载
    积分:1
  • Oracle DBA实战总结的维护手册
    Oracle DBA实战总结的维护手册
    2020-12-10下载
    积分:1
  • 学习OpenCV必备书籍5本(中文版)(c++接口)
    本电子书资源包是学习OpenCV相关的5本书籍,非常值得推荐给做图像处理和进一步做计算机视觉的工程师。书1《OpenCV3编程入门_毛星云》、书2《OpenCV2计算机视觉编程手册(中文版)》、书3《OpenCV函数参考手册(中文版)》、书4《学习OpenCV(中文版)》、书5《OpenCV入门教程_于士琪》
    2019-10-21下载
    积分:1
  • 相控阵雷达数据处理及仿真技术
    相控阵雷达数据处理及仿真技术,相控阵雷达数据处理及仿真技术
    2020-11-30下载
    积分:1
  • 中国地图(含各省)SHP
    shp格式的中国各省矢量图,应有尽有,尽快下载哦。
    2020-12-05下载
    积分:1
  • 深度学习与PyTorch-代码和PPT.zip
    深度学习与PyTorch-代码和PPT,基于pytorch的深度学习资料
    2020-12-07下载
    积分:1
  • ANSYS工程分析软件应用实例
    这是一本详细介绍ansys软件工程应用的书籍,书本分为ansys基数介绍,建模,加载,求解以及后期处理,并且对静力问题,平面问题等都有较多实例共参考,是一本学习ansys应用的实用书籍
    2020-12-03下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载