Unterscheidung zwischen verschiedenen „Arten“ von Root-Zugriff in Bash?

Unterscheidung zwischen verschiedenen „Arten“ von Root-Zugriff in Bash?

Was ist dieunterschiedlichzwischen:

sudo su -

Und

su -i

und wo wäre das eine dem anderen vorzuziehen?

   -, -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 and variables specified by --whitelist-environment

             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

Und

   su - run a command with substitute user and group ID

Auszüge aus der man suSeite.

Antwort1

-iDa dem Befehl kein Argument vorliegt su, besteht der Unterschied darin, dass das eine funktioniert und das andere nicht.

Wenn Sie meinten su -l, funktioniert es auf einer Ubuntu-Box standardmäßig immer noch nicht, da das rootKonto gesperrt ist und kein Kennwort eingegeben werden muss.

Es gibt keinen Unterschied zwischen den Argumenten -und -l. Sie sind beide Variationen derselben Option. Sie haben die Zeile von der manSeite, die uns das sagt, tatsächlich in Ihre Frage aufgenommen.

Der Unterschied zwischen der Verwendung der Argumente -, -l, oder --login(sie sind alle gleich) und der Verwendung ohne Argument wird größtenteils in dem Auszug erklärt, den Sie in Ihren Beitrag aufgenommen haben. Dieser Teil erklärt, was ohne das Argument geschieht:

For  backward compatibility, su defaults to not change the current directory and to only set the environment variables HOME and SHELL (plus USER and LOG‐
NAME 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.

Beachten Sie, dass dies sunicht nur für steht root. Es steht nicht fürSuperuserwie beim sudoKommentar. Es steht fürErsatzbenutzerund Sie können den Benutzer angeben, den Sie als Argument verwenden möchten, um einen Befehl als dieser Benutzer auszuführen

verwandte Informationen