Qual é a diferença entre `su -` e` su --login`?


15

Na supágina do manual:

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

É difícil dizer se há alguma diferença entre -e --login(ou supostamente apenas -l). Nomeadamente, a página do manual diz "em vez de seu atalho -", mas todas essas opções estão agrupadas e não vejo uma explicação da diferença, se é que ela existe.

UPD Eu verifiquei a pergunta, que deveria resolver meu problema . A questão é basicamente sobre a diferença entre sue su -. E eu estou perguntando sobre a diferença entre su -e su --login. Então não, isso não resolve nada.


4
Eu acho que esta frase está mal escrita. Deveria serTo 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 24/10

Não conheço sua definição de duplicado, mas não considero minha pergunta como tal. A pergunta que você sugere é basicamente sobre a diferença entre sue su -. E eu estou perguntando sobre a diferença entre su -e su --login. O que estou perdendo aqui?
X-yuri #

Respostas:


11

A entrada manual do Debian parece ser mais esclarecedora:

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

Eu diria que eles se complementam. O do upstream sugere evitar o uso -. Falando nisso, por que "antes de qualquer nome de usuário"?
X-yuri

7
"antes de qualquer nome de usuário" pode ser reformulado como "antes do nome de usuário, se houver" #
Mark Plotnick

@ MarkPlotnick Você parece estar errado .
x-yuri

@ x-yuri nessa discussão inteira, chega à conclusão de que Mark Plotnick está correto, e o manual é, na melhor das hipóteses, logicamente vago. (embora a maioria de nós não tenha notado)
ctrl-alt-delor 28/10

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).Ou seja, Mark Plotnick sabe como sufunciona, mas "antes de qualquer nome de usuário"! = "Antes do nome de usuário, se houver". Essa é a conclusão que a discussão chegou, a meu ver.
X-yuri

0

não há diferença, é como correr;

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

apenas taquigrafia ...


3
Eu acho que ele está pedindo esclarecimentos para evitar efeitos colaterais causados ​​pela mistura de ambientes. parte da página de manual. Quais efeitos colaterais?
Zachary Brady

Na verdade não. Os efeitos colaterais são mais ou menos clara, e se aplicam quando não estiver usando qualquer um -, -l, --login. Minha pergunta é por que não é recomendável usar -, em vez de '-l , and --login`.
X-yuri

a questão portabilidade seria se você estiver escrevendo roteiro, eu não recomendo usando su em tudo em um script, mas poderia haver um caso de uso, independentemente da opção mais portátil em um script seria -l ou --login
mikejonesey

Por que não usar sunada ao escrever um script?
X-yuri #

por que não escrever um script como o usuário que possui os dados? É mais raro haver um caso de usuário em que você precise executar ações como outro usuário e, em seguida, existir o sudo (que tem limitações nos comandos e parâmetros usados).
Mikejonesey
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.