首页 > 解决方案 > 检查文件是否可执行(二进制/共享对象/shell脚本等)而不检查可执行权限

问题描述

我正在尝试生成 RPM 中某些文件的 HMAC。我必须只为那些在构建期间是二进制/可执行文件的文件生成 HMAC,并将这些生成的 HMAC 打包为单独的 RPM。我必须为系统中的每个 RPM 执行此操作,因此我看到的唯一方法是使用 %_os_install_post 宏,我在 RPM_BUILD_ROOT 中循环并找出 RPM_BUILD_ROOT 中的所有文件并在适用的情况下生成 HMAC - 所有这些都应该在调用 rpmbuild 命令时完成。问题是在 RPM_BUILD_ROOT 内部循环时,如何区分文件是否为二进制/可执行文件?检查文件的可执行权限不起作用,因为某些文件没有'x'

我也尝试使用文件实用程序,但它的问题是因为它检查文件内的编码,所以 shell 脚本被归类为“文本”。

还有哪些其他选择?我主要是在寻找使用 bash 或 python 的建议。

这是我尝试过的 -

find \$RPM_BUILD_ROOT -print| while read x;\
do\
    python $topdir/check_bin_gen_hmac.py \$x $topdir\
           \$RPM_BUILD_ROOT $arch;\
done;\
%{nil}

check_bin_gen_hmac.py 是在检查文件是否为二进制/可执行文件后应生成 HMAC 的脚本。

标签: pythonlinuxbashfilerpm

解决方案


推荐阅读