On 06/26/2017 09:07 PM, Tito wrote:


On 06/26/2017 06:37 PM, KP.Kirchdoerfer wrote:
Am Sonntag, 25. Juni 2017, 22:01:34 schrieb Tito:
On 06/25/2017 04:20 PM, KP.Kirchdoerfer wrote:
HI;

Am Samstag, 24. Juni 2017, 22:03:36 schrieb Tito:
On 06/24/2017 06:21 PM, KP.Kirchdoerfer wrote:
Hi;

I'm using busybox 1.25.1 and when loggingin as root it successfully
reads
/root/.profile.

Running latest busybox snapshot this fails due to this commit

https://git.busybox.net/busybox/commit/shell?id=2eb0a7e1b9a579ba34e4780c

9e
d8e74f38bc6b85

What can be wrong on my side and needs to be changed for a newer
busybox
version?

TIA kp

Hi,
is the HOME var set correctly in the environment after login in as
set in the users' /etc/passwd entry?

The file question is /root/.profile:;

Like e.g:

HOME='/home/tito'

env shows:
HOME=/root

Is the /etc/passwd file entry correct?

tito:x:1000:1000:tito,,,:/home/tito:/bin/bash

Even though mine looked like this one
root:x:0:0:root:/root:/bin/sh

I've changed to
root:x:0:0:root,,,:/root:/bin/sh

but makes no difference.

I've thought also adding ENV to the code is an addition and is an
"either
(~/.profile), or(ENV)"...?

regards kp

Ciao,
Tito

Hi,

could you try to add this debug code and then try to login.

diff -uN shell/ash.c shell/ash.c.tito
--- shell/ash.c 2017-06-25 21:52:49.156426570 +0200
+++ shell/ash.c.tito    2017-06-25 21:43:51.000000000 +0200
@@ -13515,7 +13515,9 @@
  static void
  read_profile(const char *name)
  {
+       ash_msg("%s", name); /* Tito */
         name = expandstr(name);
+       ash_msg("%s", name); /* Tito */
         if (setinputfile(name, INPUT_PUSH_FILE | INPUT_NOFILE_OK) < 0)
                 return;
         cmdloop(0);
@@ -13623,7 +13625,7 @@
                 isloginsh = 1;
         if (isloginsh) {
                 const char *hp;
-
+ash_msg("Loginsh"); /* tito*/
                 state = 1;
                 read_profile("/etc/profile");
   state1:
----------------------------------------------------------------------

I did it, copied the busybox binary to /bin/ash
changed the login shell for root in /etc/passwd to /bin/ash
and after login got:

-ash: Loginsh
-ash: /etc/profile
-ash: /etc/profile
-ash: $HOME/.profile
-ash: /root/.profile

So on debian 8 with latest busybox from git it seems to work correctly.
I'm curious to see what it does print out for you.

Thx for your help!

I did;
first with shell sh in /etc/passwd linked to ash, second with /bin/ash in
/etc/passwd

 -sh: Loginsh
 -sh: /etc/profile
 -sh: /etc/profile

Type in help if you are really lost
 -sh: $HOME/.profile
 -sh:$HOME/.profile

 -ash: Loginsh
 -ash: /etc/profile
 -ash: /etc/profile

Type in help if you are really lost
 -ash: $HOME/.profile
 -ash:$HOME/.profile

The line "Type in help if you are really lost" is from /etc/profile
see below

Running "env" just after login show
HOME=/root

/sbin/init is a link to busybox.

kp

PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/lib"
HOSTNAME="$(hostname)"

#Set the prompt
PS1="$HOSTNAME$ "

EDITOR=e3ne

umask 022
alias dir="ls"
alias vdir="ls -l"
alias ll="ls -l"
alias d="ls"
alias v="ls -l"
alias da="ls -a"
alias va="ls -la"

alias m="more"
alias +="more"

alias lo="exit"

alias w="uptime; who"

export PATH LD_LIBRARY_PATH HOSTNAME PS1 EDITOR

echo
echo "Type in help if you are really lost"
# echo



Hi,
so the $HOME string expansion is failing in your case
but not in mine.
Looking at code a question arises:

#if ENABLE_ASH_EXPAND_PRMT
/* expandstr() needs parsing machinery, so it is far away ahead... */
static const char *expandstr(const char *ps);
#else
#define expandstr(s) s
#endif

Did you enable  ENABLE_ASH_EXPAND_PRMT in your config ?

Ciao,
Tito
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Hi,
the attached patch should fix the "ash fails to read $HOME/.profile" bug
when ENABLE_ASH_EXPAND_PRMT is not set.
Kp could you please test if it fixes your problem when ENABLE_ASH_EXPAND_PRMT is not set?

Ciao,
Tito

--- shell/ash.c.orig    2017-06-25 22:04:07.000000000 +0200
+++ shell/ash.c 2017-06-26 22:09:29.245454443 +0200
@@ -13629,8 +13629,15 @@ int ash_main(int argc UNUSED_PARAM, char
  state1:
                state = 2;
                hp = lookupvar("HOME");
-               if (hp)
+               if (hp) {
+#if ENABLE_ASH_EXPAND_PRMT
                        read_profile("$HOME/.profile");
+#else
+                       hp = concat_path_file(hp, ".profile");
+                       read_profile(hp);
+                       free((char*)hp);
+#endif 
+               }
        }
  state2:
        state = 3;



Fix reading $HOME/.profile when ENABLE_ASH_EXPAND_PRMT
is not set.

Signed-off-by: Tito Ragusa <[email protected]>
 
--- shell/ash.c.orig	2017-06-25 22:04:07.000000000 +0200
+++ shell/ash.c	2017-06-26 22:09:29.245454443 +0200
@@ -13629,8 +13629,15 @@ int ash_main(int argc UNUSED_PARAM, char
  state1:
 		state = 2;
 		hp = lookupvar("HOME");
-		if (hp)
+		if (hp) {
+#if ENABLE_ASH_EXPAND_PRMT
 			read_profile("$HOME/.profile");
+#else
+			hp = concat_path_file(hp, ".profile");
+			read_profile(hp);
+			free((char*)hp);
+#endif	
+		}
 	}
  state2:
 	state = 3;
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to