Ricapitolo un po tutto:

i PATH sono questi

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/schily/bin

$ su
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/schily/bin

$ su -
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$ su -l
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Adesso incominciamo con sudo

$ sudo echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games:/opt/schily/bin

$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

$ sudo su -
[EMAIL PROTECTED]:~# clogout  (premo un qualsiasi tasto è mi fa logout)



On Thu, Sep 4, 2008 at 2:51 PM, Micky Del Favero <[EMAIL PROTECTED]> wrote:
> [ Rispondo in lista, mi pare più corretto nei confronti di chi legge la
>  discussione ]
>
> Alberto <[EMAIL PROTECTED]> writes:
>
>>> $ sudo su -
>>> # env | grep PATH
>>>
>>> e vedi il path corretto.
>>
>> # env | grep PATH
>> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
>
> allora devi indagare su come vengono assegnati i path a PATH per root,

Questo credo di averlo capito:

$ cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/games"
fi

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='[EMAIL PROTECTED]:\w\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export PATH

umask 022


> AFAIK su - significa carica l'enviromente come si facesse login, ma da
> man su leggo che:
>
>       -, -l, --login
>           Provide an environment similar to what the user would expect had
>           the user logged in directly.
>
>           When - is used, it must be specified as the last su option. The
>           other forms (-l and --login) do not have this restriction.
>
> potrebbe essere quel similar l'inghippo.

Personalmente credo che sia colpa del PATH che sudo si assegna.
Di default la mia debian partiva con

Default env_reset

e il manuale di sudoers mi dice che con questa impostazione resetta
l'enviroment in modo da contenere solo HOME, LOGNAME, PATH, SHELL,
TERM, USER (oltre a SUDO_* )

Inoltre mi dice che di default, anche se non chiamati esplicitamente,
env_keep tiene delle variabili che è possibile sapere con

#sudo -V

# sudo -V
Sudo version 1.6.9p17

Sudoers path: /etc/sudoers
Authentication methods: 'pam'
Syslog facility if syslog is being used for logging: authpriv
Syslog priority to use when user authenticates successfully: notice
Syslog priority to use when user authenticates unsuccessfully: alert
Send mail if the user is not in sudoers
Lecture user the first time they run sudo
Require users to authenticate by default
Root may run sudo
Allow some information gathering to give useful error messages
Require fully-qualified hostnames in the sudoers file
Visudo will honor the EDITOR environment variable
Set the LOGNAME and USER environment variables
Length at which to wrap log file lines (0 for no wrap): 80
Authentication timestamp timeout: 15 minutes
Password prompt timeout: 0 minutes
Number of tries to enter a password: 3
Umask to use or 0777 to use user's: 022
Path to mail program: /usr/sbin/sendmail
Flags for mail program: -t
Address to send mail to: root
Subject line for mail messages: *** SECURITY information for %h ***
Incorrect password message: Sorry, try again.
Path to authentication timestamp dir: /var/run/sudo
Default password prompt: [sudo] password for %p:
Default user to run commands as: root
Path to the editor for use by visudo: /usr/bin/editor
When to require a password for 'list' pseudocommand: any
When to require a password for 'verify' pseudocommand: all
File containing dummy exec functions: /usr/lib/sudo/sudo_noexec.so
Reset the environment to a default set of variables
Environment variables to check for sanity:
        TERM
        LINGUAS
        LC_*
        LANGUAGE
        LANG
        COLORTERM
Environment variables to remove:
        RUBYOPT
        RUBYLIB
        PYTHONINSPECT
        PYTHONPATH
        PYTHONHOME
        TMPPREFIX
        ZDOTDIR
        READNULLCMD
        NULLCMD
        FPATH
        PERL5DB
        PERL5OPT
        PERL5LIB
        PERLLIB
        PERLIO_DEBUG
        JAVA_TOOL_OPTIONS
        SHELLOPTS
        GLOBIGNORE
        PS4
        BASH_ENV
        ENV
        TERMCAP
        TERMPATH
        TERMINFO_DIRS
        TERMINFO
        _RLD*
        LD_*
        PATH_LOCALE
        NLSPATH
        HOSTALIASES
        RES_OPTIONS
        LOCALDOMAIN
        PS4
        SHELLOPTS
        CDPATH
        IFS
Environment variables to preserve:
        XAUTHORIZATION
        XAUTHORITY
        TZ
        PS2
        PS1
        PATH
        MAIL
        LS_COLORS
        KRB5CCNAME
        HOSTNAME
        HOME
        DISPLAY
        COLORS
Local IP address and netmask pairs:
        192.168.1.100 / 255.255.255.0
        fe80::215:f2ff:feb1:3464 / ffff:ffff:ffff:ffff::


E PATH è mantenuto di default, quindi aggiungere
Default env_kepp += "PATH"
è inutile

Allora perché cambia?

Credo che la colpa sia di:

 If sudo was compiled with the SECURE_PATH option, its value will be
used for the PATH environment variable.  This flag is on by default.

Ma non ne sono sicuro, qualcuno è in grado di chiarirmi il punto

grazie
AG

>>> Provato con
>>>
>>> Defaults        env_reset
>>> Defaults        env_keep += "PATH"
>>>
>>> potrebbe essere che il path venga cancellato visto che env_reset:
>>
>> provato ed ecco i risultati:
>> $ sudo env | grep PATH
>> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
>>
>> $ sudo su -
>> #
>
> bo, a sto punto non saprei aiutarti.
>
> Ciao, Micky
> --
> UNIX is basically a simple operating system, but you have to
> be a genius to understand the simplicity.  -- Dennis Ritchie
>


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
[EMAIL PROTECTED] con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a [EMAIL PROTECTED]

To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Rispondere a