Hi Joakim, Joakim Tjernlund via lists.openembedded.org <Joakim.Tjernlund= [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. --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]> > --- > > - 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." > -- > 2.41.0 > > > > > -- Best regards, José Quaresma
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#190317): https://lists.openembedded.org/g/openembedded-core/message/190317 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]] -=-=-=-=-=-=-=-=-=-=-=-
