如何删除 Linux 功能?

如何删除 Linux 功能?

保护日志文件的一个有用属性是仅追加。设置此属性后,文件无法删除,并且只允许将写入内容追加到文件末尾。

显然,获得 root 权限的入侵者可以意识到文件属性正在被使用,只需运行 chattr -a 即可从日志中删除仅附加标志。为了防止这种情况,我们需要禁用删除仅附加属性的功能。要在 Linux 下实现这一点,请使用其功能机制。

为了防止用户从文件中删除仅附加属性,我们需要删除 CAP_LINUX_IMMUTABLE 功能。如何删除此功能?

lcap 实用程序以前用于此目的,但目前不适用于 ubuntu。还有其他方法可以删除 linux 内核功能吗?

回顾:我成功在 ubuntu server 13.04 中安装了 lcap_0.0.6,但是运行以下命令后出现错误消息:

sudo ./lcap CAP_LINUX_IMMUTABE
/proc/sys/kernel/cap-bound: No such file or directory

答案1

虽然不是一个完整的答案,但这可能有助于理解发生了什么。

http://man7.org/linux/man-pages/man7/capabilities.7.html

Linux 2.6.25 之前的功能边界设置

在 2.6.25 之前的内核中,功能边界集是系统范围的属性,会影响系统上的所有线程。可通过文件访问边界集/proc/sys/kernel/cap-bound

...

从 Linux 2.6.25 开始设置的功能边界

从 Linux 2.6.25 开始,功能边界集是每个线程的属性。(不再有系统范围的功能边界集。)

...

仅当文件功能已编译到内核中时,才支持从边界集中删除功能。在 Linux 2.6.33 之前的内核中,文件功能是一个可选功能,可通过选项配置CONFIG_SECURITY_FILE_CAPABILITIES。自 Linux 2.6.33 以来,配置选项已被删除,文件功能始终是内核的一部分。当文件功能已编译到内核中时,进程init(所有进程的祖先)将以完整的边界集开始。如果文件功能未编译到内核中,则将init以完整的边界集减去 开始 CAP_SETPCAP,因为当没有文件功能时,此功能具有不同的含义。

从边界集中删除一项功能并不会将其从线程的继承集中删除。但是,这确实会阻止该功能将来被重新添加到线程的继承集中。

相关内容