Unterschied su und su - root ?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
dl3ad
Beiträge: 133
Registriert: 25.02.2014 11:01:33

Unterschied su und su - root ?

Beitrag von dl3ad » 15.11.2019 16:09:42

Hallo,
bei Stretch reichte ein "su" und man konnte administrieren.
Bei Buster sind bestimmte Aktionen nur mit "su - root" möglich.

Was hat sich da geändert und warum ?
Wann reicht "su" und wann benötigt man "su - root" ?

Gruß Frank

Benutzeravatar
TRex
Moderator
Beiträge: 8085
Registriert: 23.11.2006 12:23:54
Wohnort: KA

Re: Unterschied su und su - root ?

Beitrag von TRex » 15.11.2019 16:13:19

Es genügt su -, und durch den Bindestrich bekommst du eine login-shell, was dir die Umgebungsvariablen des Benutzers gibt, zu dem du wechselst (ohne Angabe ist das root). Warum sich das geändert hat, weiß ich auch nicht mehr. Ist aber nachschlagbar.
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Unterschied su und su - root ?

Beitrag von JTH » 15.11.2019 16:34:27

TRex hat geschrieben: ↑ zum Beitrag ↑
15.11.2019 16:13:19
Warum sich das geändert hat, weiß ich auch nicht mehr. Ist aber nachschlagbar.
su kommt jetzt aus nem anderen Paket, ist ne andere Implementierung:
/usr/share/doc/util-linux/NEWS.Debian.gz hat geschrieben: The util-linux implementation of /bin/su is now used, replacing the one previously supplied by src:shadow (shipped in login package), and bringing Debian in line with other modern distributions. The two implementations are very similar but have some minor differences (and there might be more that was not yet noticed ofcourse), e.g.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: Unterschied su und su - root ?

Beitrag von MSfree » 15.11.2019 16:35:09

dl3ad hat geschrieben: ↑ zum Beitrag ↑
15.11.2019 16:09:42
Was hat sich da geändert
Der PATH, der bei su gesetzt wird, beinhaltet nicht mehr /sbin und /usr/sbin, wodurch einige Programme nicht miehr durch Kurzeingabe des Programmnamens erreichbar sind. Durch Langeingabe geht es aber weiterhin.
und warum ?
Wenn wir das nur wüßten. Meiner bescheidenen Meinung nach war die Änderung völliger Blödsinn und komplett überflüssig.

Einfach:

Code: Alles auswählen

ENV_SUPATH	PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH	PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
ALWAYS_SET_PATH yes
in der Datei /etc/login.defs setzen undd alles geht wie früher.

Benutzeravatar
habakug
Moderator
Beiträge: 4313
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Unterschied su und su - root ?

Beitrag von habakug » 15.11.2019 18:17:17

Hallo,

Das war der Wechsel von Debianshadow zu Debianutil-linux. Das ist kein "Blödsinn" und wurde z.B. in diesem Debian Bugreport833256 diskutiert.
Es wird im Debian-Wiki unter NewInBuster [1] auch erwähnt:
The su command in buster is provided by the util-linux source package, instead of the shadow source package, and no longer alters the PATH variable by default. This means that after doing su, your PATH may not contain directories like /sbin, and many system administration commands will fail. There are several workarounds:

Use su - instead; this launches a login shell, which forces PATH to be changed, but also changes everything else including the working directory.

Use sudo instead. sudo still runs commands with an altered PATH variable.

To get a regular root shell with the correct PATH, you may use sudo -s.

To get a login shell as root (equivalent to su -), you may use sudo -i.

Put ALWAYS_SET_PATH yes in /etc/login.defs to get an approximation of the old behavior. This is documented in su(1) but not in login.defs(5). It may also cause a harmless error message to appear in some situations (see 905564).

Put the system administration directories (/sbin, /usr/sbin, /usr/local/sbin) in your regular account's PATH (see EnvironmentVariables for help with this).
Gruss, habakug

[1] https://wiki.debian.org/NewInBuster
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Antworten