Qual è la differenza tra `su -` e` su --login`?


15

Dalla supagina man di:

For  backward  compatibility, su defaults to not change the current directory
and to only set the environment variables HOME and SHELL (plus USER and LOGNAME
if the target user is not root).  It is recommended to always use the 
--login option (instead of  its  shortcut -) to avoid side effects caused
by mixing environments.

...

-, -l, --login
    Start the shell as a login shell with an environment similar to a real login:

        o      clears all the environment variables except TERM

        o      initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH

        o      changes to the target user's home directory

        o      sets argv[0] of the shell to '-' in order to make the shell a login shell

È difficile dire se c'è qualche differenza tra -e --login(o presumibilmente solo -l). Vale a dire, la pagina man dice "invece della sua scorciatoia -", ma tutte queste opzioni sono raggruppate insieme, e non vedo una spiegazione della differenza, se esiste del tutto.

UPD Ho verificato la domanda, che dovrebbe risolvere il mio problema . La domanda è sostanzialmente sulla differenza tra sue su -. E sto chiedendo della differenza tra su -e su --login. Quindi no, non lo risolve affatto.


4
Penso che questa frase sia scritta male. Dovrebbe essereTo avoid side effects caused by mixing environments use --login option or its equivalent -. The first form is recommended because - can be placed only just before username.
Jimmij

Non conosco la tua definizione di duplicato, ma non considero la mia domanda in quanto tale. La domanda che proponi riguarda fondamentalmente la differenza tra sue su -. E sto chiedendo della differenza tra su -e su --login. Cosa mi sto perdendo qui?
x-yuri,

Risposte:


11

L'inserimento manuale di Debian sembra essere più illuminante:

   -, -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 before any username. For portability it is
       recommended to use it as last option, before any username. The other forms (-l
       and --login) do not have this restriction.

Direi che si completano a vicenda. Quello da monte suggerisce di evitare l'uso -. A proposito, perché "prima di qualsiasi nome utente"?
x-yuri,

7
"prima di qualsiasi nome utente" può essere riformulato come "prima del nome utente, se presente"
Mark Plotnick,

@MarkPlotnick Sembra che tu abbia torto .
x-yuri,

@ x-yuri l'intera discussione giunge alla conclusione che Mark Plotnick ha ragione e che il manuale è, nella migliore delle ipotesi, logicamente vago. (anche se molti di noi non se ne sono accorti)
ctrl-alt-delor,

I disagree, however, with the general point that, "before any username" can be rephrased as "before the username, if any." Perhaps Mr. Plotnik meant that the man page* should have rephrased the text using his suggestion, but the two phrases are not equivalent (as I explained at the beginning of this post).Significato, Mark Plotnick sa come sufunziona, ma "prima di qualsiasi nome utente"! = "Prima del nome utente, se presente." Questa è la conclusione a cui è giunta la discussione, come la vedo io.
x-yuri,

0

non c'è differenza, è come correre;

echo bob | grep -v bob
echo bob | grep --invert-match bob

solo stenografia ...


3
Penso che stia chiedendo chiarimenti per evitare gli effetti collaterali causati dalla miscelazione degli ambienti. parte della pagina man. Quali effetti collaterali?
Zachary Brady,

Non proprio. Gli effetti collaterali sono più o meno chiaro, e si applicano quando non si utilizza qualsiasi -, -l, --login. La mia domanda è sul perché non è raccomandato l'uso -, al contrario di '-l , and --login`.
x-yuri,

la questione portabilità sarebbe se si sta scrivendo lo script, non lo consiglio usando su affatto in uno script, ma ci potrebbe essere un caso d'uso, indipendentemente l'opzione più portatile in uno script sarebbe -l o --login
mikejonesey

Perché non usarlo suaffatto, quando si scrive una sceneggiatura?
x-yuri,

perché non scrivere uno script come l'utente che possiede i dati? È molto raro che esista un caso d'uso in cui è necessario eseguire azioni come un altro utente, quindi c'è sudo (che ha limitazioni sui comandi e sui parametri utilizzati).
mikejonesey,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.