Woher erhält sudo den aktuell angemeldeten Benutzernamen?

Woher erhält sudo den aktuell angemeldeten Benutzernamen?

Als ich nach der Anmeldung als Root und dem Ausführen von Su als anderer Benutzer versuchte, „sudo su“ statt „sudo su -“ auszuführen, versuchte es, mich als neuen Benutzer per Sudo anzusprechen, allerdings über Root …

Wenn ich eingebe env, wird in der Umgebung immer noch username=root angezeigt. Schaut sich sudo nicht den aktuell angemeldeten Benutzer an, sondern die Umgebungsparameter?

[oracle@tst-01]$ sudo su grid
Sorry, user oracle is not allowed to execute '/bin/su grid' as root on tst-01.testdomain.com.
[oracle@tst-01]$ env
HOSTNAME=tst-01.testdomain.com
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
QTDIR=/usr/lib64/qt-3.3
USER=oracle
SUDO_USER=ujjain
USERNAME=root
MAIL=/var/spool/mail/ujjain
PATH=/usr/lib/oracle/10.2.0.4/client64/bin:/usr/lib/oracle/10.2.0.4/client64/bin:/sbin:/bin:/usr/sbin:/usr/bin
PWD=/home/ujjain
LANG=en_US.utf8
HOME=/opt/apps/oracle
SUDO_COMMAND=/bin/su
SHLVL=2
LOGNAME=oracle
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
SUDO_GID=3000
ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client64
G_BROKEN_FILENAMES=1
_=/bin/env
[oracle@tst-01 ujjain]$ sudo su - grid
[grid@tst-01 ~]$ 

Es scheint, dass sudo su newuser auch funktionieren sollte, wenn sudo nur prüfen würde, ob der aktuell angemeldete Benutzer Sudo-Rechte hat, um per Sudo auf den neuen Benutzer zuzugreifen. Was macht sudo su und warum ist es für Nicht-Root-Benutzer wichtig, sudo su - newuser mit dem Bindestrich zu verwenden?

Antwort1

In su - usernamebedeutet der Bindestrich, dass die Umgebung des Benutzers repliziert wird, d. h. die Standard-Shell und das Arbeitsverzeichnis werden aus gelesen /etc/passwdund alle Anmeldekonfigurationsdateien für den Benutzer (z. B. ~/.profile) werden als Quelle verwendet. Kurz gesagt, Sie erhalten praktisch dieselbe Umgebung, als ob Sie sich normal angemeldet hätten. (Der neue Benutzer besitzt jedoch möglicherweise nicht das Terminal, wodurch Programme wie screen fehlschlagen.)

Wenn Sie den Bindestrich nicht verwenden, bleibt mehr oder weniger die Umgebung des Benutzers erhalten, der aufgerufen hat. suAußerdem verbleiben Sie im selben Arbeitsverzeichnis, für das Sie möglicherweise keine Berechtigungen haben.

sufragt nicht nach einem Kennwort, wenn es vom Root-Benutzer aufgerufen wurde. Wenn Sie also zuerst sudo(oder su) verwendet haben, um Root zu werden, benötigen Sie kein Kennwort, um ein anderer Benutzer zu werden.

verwandte Informationen