Quelle est la différence entre `su -` et` su --login`?

15

À partir de sula page de manuel de:

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

Il est difficile de dire s'il y a une différence entre -et --login(ou soi-disant juste -l). A savoir, la page de manuel dit "au lieu de son raccourci -", mais toutes ces options sont regroupées, et je ne vois pas d'explication de la différence, si elle existe.

UPD J'ai vérifié la question, qui est censée résoudre mon problème . La question porte essentiellement sur la différence entre suet su -. Et je demande la différence entre su -et su --login. Alors non, ça ne résout pas du tout.

x-yuri
la source
4
Je pense que cette phrase est mal écrite. Cela devrait êtreTo 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
Je ne connais pas votre définition de doublon, mais je ne considère pas ma question comme telle. La question que vous suggérez concerne essentiellement la différence entre suet su -. Et je demande la différence entre su -et su --login. Qu'est-ce que j'oublie ici?
x-yuri

Réponses:

11

L'entrée manuelle de Debian semble plus éclairante:

   -, -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
la source
Je dirais qu'ils se complètent. Celui en amont suggère d'éviter l'utilisation -. En parlant de cela, pourquoi "avant tout nom d' utilisateur"?
x-yuri
7
"avant tout nom d'utilisateur" peut être reformulé comme "avant le nom d'utilisateur, le cas échéant"
Mark Plotnick
@MarkPlotnick Vous semblez avoir tort .
x-yuri
@ x-yuri toute cette discussion, arrive à la conclusion que Mark Plotnick est correct, et le manuel est, au mieux, logiquement vague. (bien que la plupart d'entre nous ne l'aient pas remarqué)
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).Ce qui signifie que Mark Plotnick sait comment cela sufonctionne, mais "avant tout nom d'utilisateur"! = "Avant le nom d'utilisateur, le cas échéant." Telle est la conclusion à laquelle la discussion est arrivée, à mon avis.
x-yuri
0

il n'y a pas de différence, c'est comme courir;

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

juste un raccourci ...

mikejonesey
la source
3
Je pense qu'il demande des éclaircissements pour éviter les effets secondaires causés par les environnements de mixage. partie de la page de manuel. Quels effets secondaires?
Zachary Brady
Pas vraiment. Les effets secondaires sont plus ou moins claires, et ils appliquent lorsqu'ils ne sont pas en utilisant l' un des -, -l, --login. Ma question est de savoir pourquoi il n'est pas recommandé d'utiliser -, par opposition à «-l , and --login».
x-yuri
le problème de portabilité serait si vous écrivez un script, je ne recommanderais pas du tout d'utiliser su dans un script, mais il pourrait y avoir un cas d'utilisation, quelle que soit l'option la plus portable dans un script soit -l ou --login
mikejonesey
Pourquoi ne pas utiliser sudu tout, lors de l'écriture d'un script?
x-yuri
pourquoi ne pas écrire un script en tant qu'utilisateur propriétaire des données? Il est très rare qu'il y ait un cas d'utilisation où vous devez effectuer des actions en tant qu'autre utilisateur, puis il y a sudo (qui a des limitations sur les commandes et les paramètres utilisés).
mikejonesey