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