Pagina 1 di 2
su e su -
Inviato: lun 18 lug 2005, 22:58
da samiel
In un vecchio post:
http://www.slacky.it/modules.php?name=F ... nterattiva
il saggio Useless scriveva:
quando si usa su si può fare "su -" x lanciare una shell di login
Però
man su spiega semplicemente:
The optional argument - may be used to provide
an environment similiar to what the user
would expect had the user logged in directly.
Cosa devo capire dal man? Mica mi è tanto chiaro...
Thanx
M.
Inviato: lun 18 lug 2005, 23:04
da gallows
Inviato: lun 18 lug 2005, 23:11
da Firetux
riporto quando detto da Gallows qui
http://www.slacky.it/modules.php?name=F ... ight=login
"su -" avvia un shell di login
"su" avvia una shell interattiva non di login
la prima legge:
/etc/profile, ~/.profile ~/.bash_profile ~/.bash_login e quando di slogghi ~/.bash_logout
la seconda legge solo ~/.bashrc
Inviato: lun 18 lug 2005, 23:12
da Firetux
...Gallows mi hai rubato il tempo

! Mentre ricercavo il tuo post tu hai scritto... mi rifarò la prossima volta! :twisted:

Inviato: lun 18 lug 2005, 23:13
da samiel
Grazie, ho visto! Fatto sta pero che
se io digito su stando nella mia home,
divento root in quella home.
Se digito su - mi ritrovo in /root.
E mi sfugge qualcosa...
M.
Inviato: lun 18 lug 2005, 23:29
da Firetux
non vorrei dire una fesseria ma dovrebbe essere così:
se esegui su praticamente prende la variabile di ambiente dell'utente attuale e la modifica leggermente per far diventare l'utente root.
se esegui su - invece la variabile di ambiente di root viene ricreata da zero leggendo i file profile bashrc ect.ect.
sono arrivato a questa deduzione, un po' grossolana, facendo quanto segue: cioè stampare in un file l'ambiente (comando env) prima dell'utente con cui mi loggo normalmente (firetux) poi di quello che si ottiene eseguendo su e infine quello che si ottiene invece con il comando su -... dopo di che ho fatto un diff dei tre file ottenuti
Inviato: lun 18 lug 2005, 23:30
da gallows
perché viene letto /etc/passwd
man login:
Sono eseguiti compiti amministrativi vari, come impostare lo UID e il
GID della tty. Viene conservata la variabile d'ambiente TERM, se esiste
(le altre variabili d'ambiente vengono conservate se si usa l'opzione
-p). Quindi vengono impostate le variabili d'ambiente HOME, PATH,
SHELL, TERM, MAIL e LOGNAME. PATH viene predefinito come
/usr/local/bin:/bin:/usr/bin:. per gli utenti normali e come
/sbin:/bin:/usr/sbin:/usr/bin per root. Infine, se non si tratta di un
collegamento "silenzioso", viene stampato il messaggio del giorno,
viene controllato il file col nome dell'utente in /usr/spool/mail, e
stampato un messaggio se esso ha lunghezza non-zero.
Viene poi lanciata la shell dell'utente. Se non è specificata nessuna
shell per l'utente in /etc/passwd, allora viene usata /bin/sh. Se non
sono specificate directory in /etc/passwd, allora viene usata / (la
directory home viene controllata dal file .hushlogin descritto sopra).
Inviato: lun 18 lug 2005, 23:36
da gallows
Firetux ha scritto:non vorrei dire una fesseria ma dovrebbe essere così:
se esegui su praticamente prende la variabile di ambiente dell'utente attuale e la modifica leggermente per far diventare l'utente root.
esatto, in pratica vengono impostate le variabili `HOME' e `SHELL' (relative a /etc/passwd).
una cosa curiosa è che:
se diventi root le variabili LOGNAME e USER rimangono quelle dell'utente originale
se invece switchi ad un altro utente normale quelle variabili vengono reimpostate...
inoltre quando esegui "su" il livello della shell (determinato in SHLVL) aumenta di uno, con "su -" viene resettato al primo livello
Inviato: lun 18 lug 2005, 23:39
da Firetux
bene

...allora questa volta ti ho rubato io il tempo
Samiel, tu hai capito?
Inviato: lun 18 lug 2005, 23:42
da useless
questa domanda mi ha spinto a dare un'occhiata ai sorgenti di su, e devo dire che x cambiare utente di casino ne fa abbastanza...
morale: in teoria non è esattamente come dissi, ma in pratica sì

Inviato: lun 18 lug 2005, 23:50
da samiel
Beh, la faccenda non è lineare...
se diventi root le variabili LOGNAME e USER rimangono quelle dell'utente originale
se invece switchi ad un altro utente normale quelle variabili vengono reimpostate...
Però:
samiel@darkstar:~$ su
Password:
root@darkstar:/home/samiel#
Qualcosa cambia....
M.
Inviato: mar 19 lug 2005, 9:57
da sid77
Codice: Seleziona tutto
sid77@pigiama:~$ su
Password:
root@pigiama:/home/sid77# alias
root@pigiama:/home/sid77# echo $LOGNAME
sid77
root@pigiama:/home/sid77# whoami
root
root@pigiama:/home/sid77# exit
exit
sid77@pigiama:~$ su -
Password:
"I know not with what weapons World War III will be fought, but World
War IV will be fought with sticks and stones."
-- Albert Einstein
root@pigiama:~# alias
alias d='dir'
alias dir='/usr/bin/ls $LS_OPTIONS --format=vertical'
alias ls='/usr/bin/ls $LS_OPTIONS'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
alias v='vdir'
alias vdir='/usr/bin/ls $LS_OPTIONS --format=long'
root@pigiama:~# echo $LOGNAME
root
root@pigiama:~# whoami
root
root@pigiama:~# exit
logout
sid77@pigiama:~$
a quanto mi sembra:
+ se eseguo "su" il mio utente ha group id e user id impostati a root e basta.
+ se eseguo "su -" viene eseguita una nuova procedura di login
cosa ti sfugge?
Inviato: mar 19 lug 2005, 10:32
da samiel
Solo il fatto che, se faccio su e basta,
env mi da USER=samiel, anche se
in effetti whoami mi dà root.
M.
Inviato: mar 19 lug 2005, 10:39
da useless
xké lancia una shell non di login (che quindi non imposta $USER), e reimposta le variabili come le trova.
Inviato: mar 19 lug 2005, 10:47
da samiel
Già... mò ripenso a tutta la faccenda,
che devo scriverci un paragrafetto
in slack4dummies.
Grazie della preziosa consulenza
M.