Jaka jest różnica między `su -` a` su --login`?

15

Ze sustrony podręcznika użytkownika:

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

Trudno powiedzieć, czy jest jakaś różnica między -i --login(lub podobno tylko -l). Mianowicie strona podręcznika mówi „zamiast skrótu -”, ale wszystkie te opcje są zgrupowane razem i nie widzę wyjaśnienia różnicy, jeśli w ogóle istnieje.

UPD Sprawdziłem pytanie, które ma rozwiązać mój problem . Pytanie dotyczy w zasadzie różnicy między sui su -. I pytam o różnicę między su -i su --login. Więc nie, to wcale nie rozwiązuje problemu.

x-yuri
źródło
4
Myślę, że to zdanie jest źle napisane. Powinno byćTo 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
Nie znam twojej definicji duplikatu, ale nie uważam mojego pytania za takie. Sugerowane przez ciebie pytanie dotyczy w zasadzie różnicy między sui su -. I pytam o różnicę między su -i su --login. Czego tu brakuje?
x-yuri

Odpowiedzi:

11

Ręczne wprowadzanie Debiana wydaje się bardziej pouczające:

   -, -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.
ctrl-alt-delor
źródło
Powiedziałbym, że się uzupełniają. Ten z góry sugeruje, aby unikać używania -. Mówiąc o tym, dlaczego „przed jakąkolwiek nazwą użytkownika”?
x-yuri
7
„przed dowolną nazwą użytkownika” można sformułować jako „przed nazwą użytkownika, jeśli istnieje”
Mark Plotnick
@MarkPlotnick Wygląda na to, że się mylisz .
x-yuri
@ x-yuri cała ta dyskusja dochodzi do wniosku, że Mark Plotnick ma rację, a instrukcja jest co najwyżej logicznie niejasna. (chociaż większość z nas tego nie zauważyła)
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).Oznacza to, że Mark Plotnick wie, jak sudziała, ale „przed każdą nazwą użytkownika”! = „Przed nazwą użytkownika, jeśli istnieje”. Do takiego wniosku doszła, tak jak ja to widzę.
x-yuri
0

nie ma różnicy, to jest jak bieganie;

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

tylko stenografia ...

mikejonesey
źródło
3
Myślę, że prosi o wyjaśnienie, aby uniknąć skutków ubocznych spowodowanych mieszaniem środowisk. część strony podręcznika. Jakie skutki uboczne
Zachary Brady
Nie całkiem. Skutki uboczne są mniej lub bardziej jasne, a ich zastosowanie, jeśli nie używasz żadnego z -, -l, --login. Moje pytanie dotyczy tego, dlaczego nie zaleca się używania -, w przeciwieństwie do opcji „-l , and --login”.
x-yuri
problem z przenośnością występowałby, jeśli piszesz skrypt, nie polecałbym w ogóle używania su w skrypcie, ale może istnieć przypadek użycia, niezależnie od tego, że najbardziej przenośną opcją w skrypcie byłoby -l lub --login
mikejonesey
Dlaczego suw ogóle nie używać , pisząc skrypt?
x-yuri
dlaczego nie napisać skryptu jako użytkownik będący właścicielem danych? Najrzadziej występuje przypadek użycia, w którym musisz wykonywać działania jako inny użytkownik, a następnie sudo (z ograniczeniami dotyczącymi poleceń i parametrów).
mikejonesey