WEB开发网      濠电娀娼ч崐濠氬疾椤愶附鍋熸い鏍ㄧ〒闂勫嫰鏌﹀Ο渚Ц闁诲氦顕ч湁婵犲﹤楠告禍鍓х磼鏉堛劌绗氶柟宄版嚇閹晠宕归銈嗘濠电偞鍨堕幐鎾磻閹捐秮褰掓偐閻戞﹩妫勯梺鎼炲妼鐎涒晝绮嬪澶樻晝闁挎繂鏌婇敃鍌涚厵閻庢稒锚閻忥絾绻濇繝鍐ㄧ伌闁诡垰鍟村畷鐔碱敂閸♀晙绱樺┑鐐差嚟婵儳螞閸曨剚鍙忛柍鍝勬噹缁€澶嬬箾閹存繄锛嶆鐐灲閹綊宕惰濡插鏌涢妸銉ヮ劉缂佸倸绉归弫鎾绘晸閿燂拷 ---闂備焦瀵уú鈺呭箯閿燂拷
开发学院操作系统Linux/Unix POSIX 文件能力:分配根用户的能力 阅读

POSIX 文件能力:分配根用户的能力

 2008-11-12 08:30:08 来源:WEB开发网 闂備線娼уΛ鎾箯閿燂拷闂備礁鎲¢崹鐢垫崲閹扮増鍎嶆い鎺戝€甸崑鎾斥槈濞嗗秳娌紓鍌氱▌閹凤拷濠电姭鎷冮崨顓濈捕闂侀潧娲ゅú銊╁焵椤掍胶鈯曢柕鍥╁仧缁辩偤鏁撻敓锟�闂備線娼уΛ鎾箯閿燂拷  闂備胶枪缁绘鈻嶉弴銏犳瀬闁绘劕鐏氱€氼剟姊洪崹顕呭剰闁逞屽墮缁夊綊寮婚妸褉鍋撻棃娑欏暈闁伙綀浜埀顒傛暬閸嬪﹪宕伴弽褏鏆﹂柨鐕傛嫹
核心提示:一些程序需要以非特权用户的身份执行特权操作,例如,POSIX 文件能力:分配根用户的能力,passwd 程序经常对 /etc/passwd 和 /etc/shadow 文件执行写操作,在 UNIX® 系统上,然后才能放弃某些根特权,同时保留其他特权,这种控制是通过设置二进制文件上的 setuid 位实现的,这个

一些程序需要以非特权用户的身份执行特权操作。例如,passwd 程序经常对 /etc/passwd 和 /etc/shadow 文件执行写操作。在 UNIX® 系统上,这种控制是通过设置二进制文件上的 setuid 位实现的。这个位告诉系统,在运行这个程序时,无论执行它的用户是谁,都应该把它看作属于拥有这个文件的用户(通常是根用户)。因为用户不能编写 passwd 程序,而且它对允许用户执行的操作有严格限制,所以这个设置常常是安全的。更复杂的程序使用保存的 uid 在根用户和非根用户之间来回切换。

POSIX 能力将根特权划分成更小的特权,所以可以只用根用户特权的一个子集来运行任务。文件能力特性可以给一个程序分配这样的特权,这大大简化了能力的使用。在 Linux 中已经可以使用 POSIX 能力了。与将用户切换为根用户相比,使用能力有几个好处:

可以将能力从有效集(effective set)中删除,但是保留在允许集(permitted set)中,从而防止滥用能力。

可以从允许集中删除所有不需要的能力,这样就无法恢复这些能力。坦率地说,大多数能力是危险的,可能被滥用,减少攻击者可以利用的能力有助于保护系统。

在对常规的可执行文件执行 exec(3) 之后,所有能力都会丢失。(细节比较复杂,而且这种情况可能不久就会改变。本文后面会进一步解释这个问题。)

本文讲解程序如何使用 POSIX 能力,如何确定一个程序需要哪些能力,以及如何为程序分配这些能力。

进程能力

多年以来,POSIX 能力只能分配给进程,而不能分配给文件。因此,程序必须由根用户启动(或者程序属于根用户并设置了它的 setuid 位),然后才能放弃某些根特权,同时保留其他特权。另外,放弃能力的操作次序也非常严格:

1 2 3 4 5 6  下一页

Tags:POSIX 文件 能力

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接