В чем разница между `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.
Джимми

Я не знаю вашего определения дубликата, но я не рассматриваю свой вопрос как таковой. Вопрос, который вы предлагаете, в основном о разнице между 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.