首页 理论教育 修改文件属主和属组、改变文件的immutable标志

修改文件属主和属组、改变文件的immutable标志

时间:2023-11-22 理论教育 版权反馈
【摘要】:改变文件的属主或属组。改变属主是一个特权独有操作,但是改变属组不是fsuid等于文件属主id的进程可以将文件的属组id改为进程的egid、fsgid或某一个补充组id的值。也就是说,文件或目录的允许位限制不了拥有dac_override能力的进程。修改文件的immutable标志。immutable是由具体文件系统实现的,拥有此标志的文件无法被删除。lease操作要求进程fsuid和文件属主相等。

修改文件属主和属组、改变文件的immutable标志

(1)chown。改变文件的属主或属组。改变属主是一个特权独有操作,但是改变属组不是fsuid等于文件属主id的进程可以将文件的属组id改为进程的egid、fsgid或某一个补充组id的值。

(2)dac_override。不顾允许位限制对文件进行读、写、执行操作,对目录进行读、写、通过操作。也就是说,文件或目录的允许位限制不了拥有dac_override能力的进程。但是有一个例外,其他操作都是“自然”存在的,唯独文件的执行操作不是,它要求文件必须是一个可执行文件。内核判断文件是否可执行的标准是文件的允许位中的属主可执行位、属组可执行位、其他可执行位至少有一位被置位。内核的逻辑是拒绝拥有dac_override的进程执行一个不可执行文件(属主可执行位、属组可执行位、其他可执行位都被清零)。

(3)dac_read_search。不顾允许位限制读文件、读目录、通过目录。

(4)fowner。拥有此能力的进程被视为fsuid等于文件的属主id。受此能力影响的操作一般是修改文件的属性和扩展属性的操作。如修改文件允许位、文件访问控制列表(ACL)等。

(5)fsetid。这个能力和文件的set-group-id有关。在两个场景下用到这个能力:一、当进程修改文件时,文件的set-user-id和set-group-id要被清零。拥有fsetid能力可以保留文件的set-group-id位。出于安全考虑,set-user-id位总是要被清0(因为euid和特权相关)。二、当进程修改文件属性导致文件的属组id不是进程的fsgid或任一个补充组id时,文件的set-group-id要被清零;如果进程拥有fsetid能力,文件的set-group-id可以被保留。(www.xing528.com)

(6)linux_immutable。修改文件的immutable标志。immutable是由具体文件系统实现的,拥有此标志的文件无法被删除。

(7)setfcap。设置文件能力,就是设置后面要提到的文件的允许能力集、可继承能力集、和有效能力位。

(8)lease。进程可以通过系统调用fcntl对文件建立读lease或写lease。lease的作用是,当别的进程对文件进行操作时,进程可以得到通知。lease操作要求进程fsuid和文件属主相等。拥有lease能力可以无视这一限制。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈