【问题标题】:yocto - How to set permission to command of busyboxyocto - 如何设置busybox命令的权限
【发布时间】:2021-09-05 03:53:58
【问题描述】:

我目前正在开发一个 yocto 项目,我正在寻找一种解决方案来设置对busybox 命令的权限。我有我的层元示例1,其中有 recipes-core 包含 busybox_%.bbappendfiles/defconfig_patch.cfg 设置配置。

我正在寻找一种方法为用户的特定命令设置权限..

例子,

假设我有两个用户,user1 和 user2。我想让 user1 用来命令 cat 而不是 user2

我该怎么做?

提前致谢

【问题讨论】:

    标签: yocto bitbake busybox ownership yocto-recipe


    【解决方案1】:

    在 Linux 中,您可以使用 getfacl 和 setfacl 来设置用户对给定二进制文件的权限。更多详情here.

    在 Yocto 中,您可以使用以下示例:

    do_install_append(){
        setfacl -m u:user_name:r-- $D${bindir}/cat
    }
    

    现在有两个问题:

    您需要查看busybox是否将所有二进制文件打包成${D}或打包一个二进制“busybox”,如果是一个二进制您可以尝试附加图像配方的包。

    这个想法是找到打包目标二进制文件的配方。

    第二个问题是Yocto在创建最终的rootfs时没有保留这些权限,这个问题提到了here

    因此,您可以尝试使用 pkg_postinst_${PN}_append() 在打包阶段之后添加权限的建议解决方案,或者我建议您可以创建一个在启动时运行的服务并在所需的二进制文件上运行 setfacl 命令。

    这是我找到的,希望它可以帮助您找到正确的解决方案。

    【讨论】:

    • 嗨,BelhadjSalem,感谢您的回复。目前 /bin 、 /sbin 、 /usr/bin 和 /usr/sbin 文件中的所有命令都链接到 /bin/busybox。例如:drwxrwxrwc /bin/cat -> /bin/busybox。由于 /bin/busybox 的权限,它可能不会更改对命令的访问权限(每个示例为 cat)?
    • 如果都是busybox的链接,修改链接的权限就够了,我认为最好的解决方法是启动服务,一次性修改权限。
    • 感谢 BelhadjSalem。我尝试更改符号链接的权限,但它确实有效.. 我必须更改二进制 /bin/busybox 的权限。但我找到了解决问题的另一种方法。我正在使用 coreutils 包。你知道是否有办法在 coreutils_%.bbappend 中添加 var ALTERNATIE_PRIORITY 到所有命令?示例:将 ALTERNATIE_PRIORITY[bin_x1], ... ALTERNATIE_PRIORITY[bin_xi] 替换为 ALTERNATIE_PRIORITY[all] 之类的东西?
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2022-01-22
    • 2011-11-07
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    相关资源
    最近更新 更多