su e su -

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

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.
samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

su e su -

Messaggio 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.

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

un piccolo cenno io l'ho fatto qui:
http://www.slacky.it/modules.php?name=F ... pic&t=6838

Avatar utente
Firetux
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 giu 2004, 0:00
Località: Lecco
Contatta:

Messaggio 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

Avatar utente
Firetux
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 giu 2004, 0:00
Località: Lecco
Contatta:

Messaggio da Firetux »

...Gallows mi hai rubato il tempo :cry: ! Mentre ricercavo il tuo post tu hai scritto... mi rifarò la prossima volta! :twisted:
:wink:

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio 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.

Avatar utente
Firetux
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 giu 2004, 0:00
Località: Lecco
Contatta:

Messaggio 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

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio 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).

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio 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

Avatar utente
Firetux
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 giu 2004, 0:00
Località: Lecco
Contatta:

Messaggio da Firetux »

bene :D ...allora questa volta ti ho rubato io il tempo 8)
Samiel, tu hai capito?

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio 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ì :)

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio 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.

Avatar utente
sid77
Linux 3.x
Linux 3.x
Messaggi: 568
Iscritto il: mer 1 giu 2005, 0:00
Slackware: 12.0/12.1/curr (ppc)
Località: PowerPC
Contatta:

Messaggio 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?

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio 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.

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

xké lancia una shell non di login (che quindi non imposta $USER), e reimposta le variabili come le trova.

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio da samiel »

Già... mò ripenso a tutta la faccenda,
che devo scriverci un paragrafetto
in slack4dummies.

Grazie della preziosa consulenza
M.

Rispondi