Marco Bosisio wrote:
First of all thanks to the community for interest and several proposed
solutions.
The suggestion received from Hubert based on cmd 'logname' could be
an easy way to solve my problem.
22:51 [sum...@bobtail ~]$ logname
logname: no login name
22:51 [sum...@bobtail ~]$
This is on Scientific Linux 5.
For example in case I logged on with userid it32673 and I'm in 'su
-' , the contents of '$USER' is different of item returned from
'logname' :
lx1iard0:~ # echo $USER
root
lx1iard0:~ # logname
it32673
Then :
- at login the /etc/profile.d/profile_local.sh launch script_xxx
- script_xxxx will compare data received from 'logname' with
'$USER' and it can decide if to continue or terminate...
In conclusion the problem was :
The 'script_xxx' executed at login writes some info about Linux,
zVM and HW based on /proc/sysinfo and zVM CP cmd.
I discovered that someone created scripts that includes commands like
: "su - root -c 'which sudo | grep .........' "
In these cases executing 'su - ...' the 'profile.local' is executed
and 'script_xxx' too, when launch 'which sudo' the 'grep' receive
unpredictable messages not what you expect. It is not good.... :-(( ....
because the execution 'script_xxx' must be transparent for all.
Ciaoo..Thanks again.
Cordiali saluti / Best regards
Marco Bosisio
IBM Italia S.p.A.
Hubert Kleinmanns <hub...@kleinmanns.eu>
Sent by: Linux on 390 Port <LINUX-390@VM.MARIST.EDU>
04/03/2009 09.00
Please respond to
Linux on 390 Port <LINUX-390@VM.MARIST.EDU>
To
LINUX-390@VM.MARIST.EDU
cc
Subject
Re: Which user env. variable tell me that it is in "s u - " mode ?
Mario,
I fear, I misunderstood your question (or you misunderstood my answer ;-)
)
"echo $SHLVL" returns always "1" after a "su - ...", but another value
after a "su ..." (without th dash). I thought, this was what you would
like to see.
There are several mechanism, to distinguish between the primary login
shell and a "su ..." shell:
1. "ps -f"
$ ps -f
UID PID PPID C STIME TTY TIME CMD
hubert 8163 8162 0 06:58 pts/2 00:00:00 -bash
hubert 23237 8163 0 08:54 pts/2 00:00:00 ps -f
$ su - root
# ps -f
UID PID PPID C STIME TTY TIME CMD
root 23567 8163 0 08:56 pts/2 00:00:00 /bin/su -
root 23569 23567 1 08:56 pts/2 00:00:00 -bash
root 23602 23569 0 08:56 pts/2 00:00:00 ps -f
2. "logname" vs. "id"
# logname
hubert
# id
uid=0(root) gid=0(root) groups=0(root)
Hope this helps.
Regards
Hubert
-----Urspr�ngliche Nachricht-----
Von: "Marco Bosisio" <marco_bosi...@it.ibm.com>
Gesendet: 03.03.09 14:00:17
An: LINUX-390@VM.MARIST.EDU
Betreff: Re: Which user env. variable tell me that it is in "s u - "
mode ?
Hi Hubert,
your suggestion works fine running for nested scripts, I created 3
script testa -> testb -> testc like this :
lx1iard0:~ # cat testa
#!/bin/bash
echo "testa => SHLVL="$SHLVL
sh /root/testb
exit
lx1iard0:~ # echo $SHLVL
1
lx1iard0:~ # sh testa
testa => SHLVL=2
--testb => SHLVL=3
----testc => SHLVL=4
But.... the variable $SHLVL is always 1 after a "su - " :
it32...@lx1iard0:~> echo $SHLVL
1
it32...@lx1iard0:~> su -
Password:
lx1iard0:~ # echo $SHLVL
1
lx1iard0:~ #
I customized the profile.local and it launch a script_xxx at login. When
use 'su - ' I would like that the new user does not execute the
script_xxx again.
Cordiali saluti / Best regards
Marco Bosisio IBM Italia S.p.A.
Hubert Kleinmanns <hub...@kleinmanns.eu>
Sent by: Linux on 390 Port <LINUX-390@VM.MARIST.EDU>
03/03/2009 11.32
Please respond to
Linux on 390 Port <LINUX-390@VM.MARIST.EDU>
To
LINUX-390@VM.MARIST.EDU
cc
Subject
Re: Which user env. variable tell me that it is in "s u - " mode ?
Hi Marco,
try:
echo $SHLVL
The value is incremented for each new sub shell - so it will be "1" for
login shells (which you get with "su - ..."
Regards
Hubert
-----Urspr�ngliche Nachricht-----
Von: "Marco Bosisio" <marco_bosi...@it.ibm.com>
Gesendet: 03.03.09 11:12:04
An: LINUX-390@VM.MARIST.EDU
Betreff: Which user env. variable tell me that it is in "su - " mode
?
Hi,
do you know wich user environment variable I have to test
(executing
a bash script) to know when I am in "su -" (switch user mode)
?
Reading variables provided by "env" command then testing $TERM
I
am able to know if not a Linux terminal :
..
.......
# We can only execute on a terminal SSH / Telnet , not executed if
secondary console Linux/zVM
if [[ "$TERM" != "xterm" ]] ; then exit
fi
......
I would like to do the same when the script is executed in a user
logged in "su - " mode...
Thanks in advance.
X-390
22:51 [sum...@bobtail ~]$ logname
logname: no login name
22:51 [sum...@bobtail ~]$
This is on Scientific Linux 5.
--
Cheers
John
-- spambait
1aaaa...@coco.merseine.nu z1aaaa...@coco.merseine.nu
-- Advice
http://webfoot.com/advice/email.top.php
http://www.catb.org/~esr/faqs/smart-questions.html
http://support.microsoft.com/kb/555375
You cannot reply off-list:-)
----------------------------------------------------------------------
For LINUX-390 subscribe / signoff / archive access instructions,
send email to lists...@vm.marist.edu with the message: INFO LINUX-390 or visit
http://www.marist.edu/htbin/wlvindex?LINUX-390