Yocto:更改 /usr/lib 的所有权

Yocto: Change ownership of /usr/lib

如何为特定用户更改 /usr/lib 目录和其中所有库的所有权?

我尝试编写自定义 bb 食谱但没有成功。

SUMMARY = "Change /usr/lib ownership."
LICENSE = "MIT"

FILES_${PN} = "${libdir}\*"

do_install () {
        chown user1:group1 ${D}${libdir}
}

我也尝试使用 ${libdir} 代替 /usr/lib,但没有成功。如何才能正确访问/usr/lib?

在 yocto 编译期间不可能更改它,因为文件系统是在过程结束时构建的。有两种方法可以实现它。首先是在系统镜像安装脚本中添加chmod。 二是准备一个系统服务和bash脚本,可以检查属主,必要时设置当前。

owner-updater.服务

[Unit]
Description=Directory Owner Updater
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/opt/update-owner
StandardOutput=journal

[Install]
WantedBy=multi-user.target

update-owner

#!/bin/bash

USER=user_name
DIR_PATH="/usr/lib"
DIR_OWNER="$(stat --format '%U' $DIR_PATH)"
DIR_GROUP="$(stat --format '%G' $DIR_PATH)"

if [ "$(id -u $DIR_OWNER)" -eq "$(id -u $USER)" ] &&
   [ "$(id -g $DIR_GROUP)" -eq "$(id -g $USER)" ]; then
    echo Correct owner
else
    echo Incorrect owner
fi
    chown -R [user_name/user_id]:[group_name/group_id] /usr/lib