Яка різниця між `su -` та` su --login`?


15

З suчоловічої сторінки:

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

Важко сказати, чи є різниця між -та --login(або нібито просто -l). А саме, на сторінці чоловіка написано "замість ярлика -", але всі ці варіанти згруповані разом, і я не бачу пояснення різниці, якщо вона взагалі існує.

UPD Я перевірив питання, яке повинно вирішити мою проблему . Питання в основному полягає в різниці між suі su -. І я запитую про різницю між su -і su --login. Так ні, це зовсім не вирішує.


4
Я думаю, що це речення погано написане. Це повинно бути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

Я не знаю вашого визначення дубліката, але я не вважаю своє питання таким. Питання, яке ви пропонуєте, в основному стосується різниці між suта su -. І я запитую про різницю між su -і su --login. Що я тут пропускаю?
x-yuri

Відповіді:


11

Посібник Debian, здається, є більш освічуючим:

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

Я б сказав, що вони доповнюють один одного. Той, що знаходиться вгорі, пропонує уникати використання -. Якщо говорити про те, чому "перед будь-яким ім'ям користувача"?
x-yuri

7
"перед будь-яким ім'ям користувача" можна переосмислити як "перед ім'ям користувача, якщо воно є"
Марк Плотник

@MarkPlotnick Ви, здається, помиляєтесь .
x-yuri

@ x-yuri вся ця дискусія приходить до висновку, що Марк Плотнік правильний, а посібник у кращому випадку логічно розпливчастий. (хоча більшість із нас не помічала)
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).Значить, Марк Плотнік знає, як suпрацює, але "перед будь-яким ім'ям користувача"! = "Перед іменем користувача, якщо воно є". До такого висновку і прийшла дискусія, як я бачу.
x-yuri

0

різниці немає, це як біг;

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

просто скорочення ...


3
Я думаю, що він просить роз'яснити, щоб уникнути побічних ефектів, викликаних змішуванням середовища. частина чоловічої сторінки. Які побічні ефекти?
Захарій Брейді

Не зовсім. Побічні ефекти є більш-менш ясно, і вони застосовуються , коли не використовуються які - або з -, -l, --login. Моє запитання про те, чому його не рекомендується використовувати -, на відміну від '-l , and --login ' .
x-yuri

Питання про переносимість було б, якщо ви пишете скрипт, я б не рекомендував використовувати сценарій su взагалі в сценарії, але може бути випадок використання, незалежно від того, найбільш переносним варіантом у скрипті буде -l або --login
mikejonesey

Чому б взагалі не використовувати suпід час написання сценарію?
x-yuri

чому б не написати сценарій як користувач, якому належать дані? Найчастіше зустрічається шафа, де потрібно виконувати дії як інший користувач, а потім - sudo (який має обмеження на команди та парами, що використовуються).
mikejonesey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.