Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
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...
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
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).
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
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ì
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#
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