On Wed, 2023-11-08 at 13:17 +0000, Jose Quaresma wrote:
Joakim Tjernlund <[email protected]<mailto:[email protected]>> escreveu no dia quarta, 8/11/2023 à(s) 11:50: On Wed, 2023-11-08 at 11:22 +0000, Jose Quaresma wrote: Hi Joakim, Joakim Tjernlund via lists.openembedded.org<http://lists.openembedded.org/> <[email protected]<mailto:[email protected]>> escreveu no dia quarta, 8/11/2023 à(s) 10:56: If /etc/passwd is a symlink, sed -i on same file will replace the symlink with a new file. Prevent that by expanding the file with realpath before giving it to sed. The sed follow-symlinks argument looks more appropriate for this imo. But not all sed impl. support that option(not busybox for one). Is Gnu sed an requirement here? On the target we can use the sed from busybox but on the build host we use the native sed which is the gnu. Great! These scripts are always native so then we can assume GNU sed. However, I guess there are cases where it not easy to known which sed is used, do we want to have two different ways for this? Joakim --follow-symlinks This option is available only on platforms that support symbolic links and has an effect only if option -i is specified. In this case, if the file that is specified on the command line is a symbolic link, sed will follow the link and edit the ultimate destination of the link. The default behavior is to break the symbolic link, so that the link destination will not be modified. https://www.gnu.org/software/sed/manual/html_node/Command_002dLine-Options.html Jose Signed-off-by: Joakim Tjernlund <[email protected]<mailto:[email protected]>> --- - I have patches which moves shadow/passwd files to an subdir in order to have passwd mgmt on a RO RFS. Is there a interest to have that oprion in OE? meta/classes/rootfs-postcommands.bbclass | 4 ++-- meta/classes/useradd_base.bbclass | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meta/classes/rootfs-postcommands.bbclass b/meta/classes/rootfs-postcommands.bbclass index 5c0b3ec37c..55cc863dbf 100644 --- a/meta/classes/rootfs-postcommands.bbclass +++ b/meta/classes/rootfs-postcommands.bbclass @@ -148,10 +148,10 @@ read_only_rootfs_hook () { # zap_empty_root_password () { if [ -e ${IMAGE_ROOTFS}/etc/shadow ]; then - sed -i 's%^root::%root:*:%' ${IMAGE_ROOTFS}/etc/shadow + sed -i 's%^root::%root:*:%' $(realpath ${IMAGE_ROOTFS}/etc/shadow) fi if [ -e ${IMAGE_ROOTFS}/etc/passwd ]; then - sed -i 's%^root::%root:*:%' ${IMAGE_ROOTFS}/etc/passwd + sed -i 's%^root::%root:*:%' $(realpath ${IMAGE_ROOTFS}/etc/passwd) fi } diff --git a/meta/classes/useradd_base.bbclass b/meta/classes/useradd_base.bbclass index 7f5b9b7219..72732a4d57 100644 --- a/meta/classes/useradd_base.bbclass +++ b/meta/classes/useradd_base.bbclass @@ -154,7 +154,7 @@ perform_passwd_expire () { local username=`echo "$opts" | awk '{ print $NF }'` local user_exists="`grep "^$username:" $rootdir/etc/passwd || true`" if test "x$user_exists" != "x"; then - eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO sed -i \''s/^\('$username':[^:]*\):[^:]*:/\1:0:/'\' $rootdir/etc/shadow \" || true + eval flock -x $rootdir${sysconfdir} -c \"$PSEUDO sed -i \''s/^\('$username':[^:]*\):[^:]*:/\1:0:/'\' $(realpath $rootdir/etc/shadow) \" || true local passwd_lastchanged="`grep "^$username:" $rootdir/etc/shadow | cut -d: -f3`" if test "x$passwd_lastchanged" != "x0"; then bbfatal "${PN}: passwd --expire operation did not succeed." -- Best regards, José Quaresma
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#190325): https://lists.openembedded.org/g/openembedded-core/message/190325 Mute This Topic: https://lists.openembedded.org/mt/102461303/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
