视频字幕
Linux基于文件扩展属性的执行控制系统是一种创新的安全机制。它通过在文件上设置扩展属性标记来控制程序的执行权限。系统使用security.execctrl扩展属性,verified表示授权文件可以执行,none表示未授权文件默认禁止执行。这种设计通过Linux安全模块框架实现,在关键操作点插入钩子函数进行权限检查。
LSM模块通过五个核心钩子函数实现全面的执行控制。bprm_check_security钩子在程序执行时检查文件的安全标记,file_mprotect钩子控制动态库的加载,inode_init_security钩子为新创建的文件自动设置标记,file_rename钩子在文件重命名时更新标记状态,file_close钩子检测文件内容的修改并相应更新标记。这些钩子函数协同工作,构成了完整的文件执行控制体系。
执行控制的决策流程清晰明确。当程序尝试执行时,系统首先检查文件的security.execctrl扩展属性。如果标记为verified,则直接允许执行并将当前进程标记为可信。如果标记为none,系统会进一步检查当前进程是否为可信进程。可信进程可以临时执行未授权文件,而非可信进程则被拒绝执行。这种分层的权限控制机制既保证了安全性,又提供了必要的灵活性。
文件状态的自动管理是系统安全的重要保障。当创建新文件时,系统自动将其标记为none,确保未经验证的文件不能直接执行。文件重命名或内容修改后,标记也会自动重置为none,防止通过文件操作绕过安全控制。系统初始化时,关键目录下的文件被标记为verified。此外,可信进程的标记状态会继承给其子进程,保证了权限传递的连续性。