Runuser: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
K Textersetzung - „= Umgebungsvariablen =“ durch „= Umgebung =“
 
(63 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{| class="wikitable"
'''runuser''' - Befehle mit ersetzter Benutzer- und Gruppenkennung ausführen
|RUNUSER(1)
|Dienstprogramme für Benutzer
|RUNUSER(1)
|}


= BEZEICHNUNG =
== Beschreibung ==
runuser - einen Befehl mit ersetzter Benutzer- und Gruppenkennung    ausführen
'''runuser''' führt Befehle aus, wobei die Benutzer- und Gruppenkennung ersetzt werden
* Wenn die Option '''-u''' nicht verwendet wird, dann weicht '''runuser''' auf eine '''su'''-kompatible Semantik aus und führt eine Shell aus
* Der Unterschied zwischen den Befehlen '''runuser''' und '''su''' besteht darin, dass '''runuser''' nicht nach einem Passwort fragt (da es nur vom Benutzer Root ausgeführt werden darf) und eine andere PAM-Konfiguration verwendet
* Der Befehl '''runuser''' muss nicht mit »set-user-ID«-Zugriffsrechten installiert werden


= ÜBERSICHT =
Falls die PAM-Sitzung nicht »required« ist, dann ist die empfohlene Lösung die Verwendung des Befehls setpriv(1)
'''runuser''' [Optionen] '''-u''' ''Benutzer'' [[--]    ''Befehl'' [''Argument''...]]


'''runuser''' [Optionen] ['''-'''] [''Benutzer''    [''Argument''...]]
Wenn es ohne Argumente aufgerufen wird, dann führt '''runuser''' in der Voreinstellung eine Shell als ''root'' aus


= BESCHREIBUNG =
Aus Gründen der Abwärtskompatibilität wechselt '''runuser''' das aktuelle Verzeichnis in der Voreinstellung nicht und setzt nur die Umgebungsvariablen '''HOME''' und '''SHELL''' (plus '''USER''' und '''LOGNAME''', falls der Ziel-Benutzer nicht Root ist)
'''runuser''' führt Befehle aus, wobei die Benutzer- und   Gruppenkennung ersetzt werden. Wenn die Option '''-u''' nicht verwendet    wird, dann weicht '''runuser''' auf eine '''su'''-kompatible Semantik aus    und führt eine Shell aus. Der Unterschied zwischen den Befehlen    '''runuser''' und '''su''' besteht darin, dass '''runuser''' nicht nach    einem Passwort fragt (da es nur vom Benutzer Root ausgeführt werden    darf) und eine andere PAM-Konfiguration verwendet. Der Befehl '''runuser'''   muss nicht mit »set-user-ID«-Zugriffsrechten installiert    werden.
* Diese Version von '''runuser''' verwendet PAM für die Sitzungsverwaltung


Falls die PAM-Sitzung nicht »required« ist, dann ist    die empfohlene Lösung die Verwendung des Befehls  setpriv(1).
Beachten Sie, dass '''runuser''' in allen Fällen PAM (pam_getenvlist()) zum endgültigen Ändern der Umgebung verwendet
* Die Befehlszeilenoptionen wie '''--login''' oder '''--preserve-environment''' wirken sich auf die Umgebung aus, bevor sie von PAM verändert wird


Wenn es ohne Argumente aufgerufen wird, dann führt    '''runuser''' in der Voreinstellung eine Shell als ''root'' aus.
Seit Version 2.38 setzt '''runuser''' die Ressourcenbegrenzungen RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE des Prozesses zurück


Aus Gründen der Abwärtskompatibilität    wechselt '''runuser''' das aktuelle Verzeichnis in der Voreinstellung nicht    und setzt nur die Umgebungsvariablen '''HOME''' und '''SHELL''' (plus    '''USER''' und '''LOGNAME''', falls der Ziel-Benutzer nicht Root ist).    Diese Version von '''runuser''' verwendet PAM für die    Sitzungsverwaltung.
; Ursprung
Dieser '''runuser'''-Befehl wurde von '''su''' aus den GNU Coreutils abgeleitet, welches auf einer Implementierung von David MacKenzie basiert, und dem Befehl '''runuser''' in Fedora von Dan Walsh


Beachten Sie, dass '''runuser''' in allen Fällen PAM    (pam_getenvlist()) zum endgültigen Ändern der Umgebung    verwendet. Die Befehlszeilenoptionen wie '''--login''' oder    '''--preserve-environment''' wirken sich auf die Umgebung aus, bevor sie    von PAM verändert wird.
== Installation ==
''runuser'' ist Teil des Pakets [[util-linux]], das auf allen Linux-Systemen installiert sein sollte


Seit Version 2.38 setzt '''runuser''' die Ressourcenbegrenzungen    RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE des    Prozesses zurück.
== Anwendung ==
=== Fehlerbehebung ===


= OPTIONEN =
== Syntax ==
'''-c''', '''--command'''=''Befehl''
<syntaxhighlight lang="bash" line>
runuser [Optionen] -u ''Benutzer'' [[--] ''Befehl'' [''Argument''...]]
runuser [Optionen] [-] [''Benutzer'' [''Argument''...]]
</syntaxhighlight>
=== Optionen ===
{| class="wikitable sortable options"
|-
! Unix !! GNU !! Parameter ||Beschreibung
|-
| -c || --command= || Befehl || Übergibt ''Befehl'' mit der Option -c an die Shell
|-
| -f || --fast || || Übergibt -f an die Shell, was abhängig von der jeweiligen Shell nützlich sein kann oder nicht
|-
| -g || --group= || Gruppe || Legt die primäre Gruppe fest
* Diese Option ist dem Benutzer Root vorbehalten
|-
| -G || --supp-group= || Gruppe || Gibt eine ergänzende Gruppe an
* Diese Option ist nur für den Benutzer Root verfügbar
* Die erste angegebene ergänzende Gruppe wir auch als primäre Gruppe verwendet, falls die Option --group nicht angegeben ist
|-
| -, -l || --login || || startet die Shell als Anmelde-Shell mit einer Umgebung ähnlich zu einer realen Anmeldung:
* löscht alle Umgebungsvariablen außer TERM und jene, die durch --whitelist-environment angegeben wurden
* initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH || * wechselt in das Home-Verzeichnis des Zielbenutzers
* setzt argv[0] der Shell auf »-«, um die Shell zur Anmelde-Shell zu machen
|-
| -P || --pty || || erstellt ein Pseudo-Terminal für die Sitzung
* Das unabhängige Terminal gewährleistet bessere Sicherheit, da der Benutzer das Terminal nicht mit der Originalsitzung teilt
* Dadurch können Sie durch TIOCSTI vorgetäuschte Ioctl-Terminaleinschleusung und andere Sicherheitsangriffe gegen Terminal-Dateideskriptoren vermeiden
* Die gesamte Sitzung kann auch in den Hintergrund verschoben werden (zum Beispiel mit runuser --pty -u Benutzername -- Befehl &)
* Falls das Pseudo-Terminal aktiviert ist, dann funktioniert der Befehl runuser als Proxy zwischen den Sitzungen (synchronisiert die Standardeingabe und -ausgabe)
Diese Funktion ist vorwiegend für interaktive Sitzungen gedacht
* Falls die Standardeingabe kein Terminal ist, sondern beispielsweise eine Pipe (zum Beispiel echo "date" | runuser --pty -u Benutzer), dann wird der ECHO-Schalter für das Pseudo-Terminal deaktiviert, um unordentliche Ausgaben zu vermeiden
|-
| -m, -p || --preserve-environment || || bewahrt die gesamte Umgebung, das bedeutet, es setzt die Umgebungsvariablen HOME, SHELL, USER oder LOGNAME nicht. Die Option wird ignoriert, wenn --login verwendet wird
|-
| -s || --shell= || Shell || führt die angegebene Shell anstelle der Vorgabe aus
* Die auszuführende Shell wird nach den folgenden Regeln in dieser Reihenfolge ausgewählt:
* die durch --shell angegebene Shell
* die in der Umgebungsvariable SHELL angegebene Shell, wenn die Option --preserve-environment nicht verwendet wird
* die im »passwd«-Eintrag des Zielbenutzers angegebene Shell
* /bin/sh
Falls der Zielbenutzer eine eingeschränkte Shell hat (d.&nbsp;h.&nbsp;die nicht in /etc/shells aufgelistet ist), werden die Option --shell und die Umgebungsvariable SHELL ignoriert, außer wenn der aufrufende Benutzer Root ist
|-
| || --session-command= || Befehl || ist gleichbedeutend mit -c, erzeugt aber keine neue Sitzung (davon wird abgeraten)
|-
| -w || --whitelist-environment= || Liste || setzt die in der Kommata-getrennten Liste angegebenen Umgebungsvariablen nicht zurück, wenn die Umgebung für --login bereinigt wird
* Die Positivliste wird für die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH ignoriert
|-
| -h || --help || || zeigt einen Hilfetext an und beendet das Programm
|-
| -V || --version || || zeigt Versionsinformationen an und beendet das Programm
|}


übergibt den ''Befehl'' mit der Option  '''-c''' an die Shell.
=== Parameter ===
=== Umgebung ===
=== Rückgabewert ===
'''runuser''' gibt den Rückgabewert des Befehls zurück, den es ausgeführt hat
* Wenn der Befehl durch ein Signal beendet wurde, gibt '''runuser''' die Nummer des Signals plus 128 zurück


'''-f''', '''--fast'''
Von '''runuser''' erzeugter Rückgabewert
{| class="wikitable options"
|-
! Wert !! Beschreibung
|-
| 1 || Allgemeiner Fehler vor dem Ausführen des angeforderten Befehls
|-
| 126 || Der angeforderte Befehl konnte nicht ausgeführt werden
|-
| 127 || Der angeforderte Befehl wurde nicht gefunden
|}


übergibt '''-f''' an die Shell, was  abhängig von der jeweiligen Shell nützlich sein kann oder  nicht.
== Konfiguration ==
=== Dateien ===
''runuser'' liest die Konfigurationsdateien
* ''/etc/default/runuser''
* ''/etc/login.defs''


'''-g''', '''--group'''=''Gruppe''
; Konfigurationseinträge
{| class="wikitable options"
|-
! Option !! Typ !! Beschreibung
|-
| ENV_PATH || Zeichenkette || definiert die Umgebungsvariable [[PATH]] für einen normalen Benutzer.
* Der Vorgabewert ist ''/usr/local/bin:/bin:/usr/bin''
|-
| ENV_ROOTPATH || Zeichenkette ||
|-
| ENV_SUPATH || Zeichenkette || definiert die Umgebungsvariable [[PATH]] für root
* ENV_SUPATH hat Vorrang
* Der Vorgabewert ist ''/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin''
|-
| ALWAYS_SET_PATH || boolescher Wert || Falls dies auf ''yes'' gesetzt ist und '''--login''' sowie '''--preserve-environment''' nicht angegeben wurden, '''initialisiert *runuser''' die Umgebungsvariable '''PATH'''
|}


legt die primäre Gruppe fest. Diese Option ist dem  Benutzer Root vorbehalten.
Die Umgebungsvariable '''PATH''' kann auf Systemen, auf denen ''/bin'' und ''/sbin'' in ''/usr'' zusammengeführt sind, anders sein.  


'''-G''', '''--supp-group'''=''Gruppe''
Diese Variable wird auch von der Befehlszeilenoption '''--login''' und den PAM-Systemeinstellungen (z.&nbsp;B.&nbsp;'''pam_env'''(8)) beeinflusst


gibt eine ergänzende Gruppe an. Diese Option ist  nur für den Benutzer Root verfügbar. Die erste angegebene  ergänzende Gruppe wir auch als primäre Gruppe verwendet, falls die Option '''--group''' nicht angegeben ist.
{| class="wikitable options"
|-
! Option !! Beschreibung
|-
| /etc/pam.d/runuser || Standard-PAM-Konfigurationsdatei
|-
| /etc/pam.d/runuser-l || PAM-Konfigurationsdatei, falls '''--login''' angegeben wurde
|-
| /etc/default/runuser || runuser-spezifische logindef-Konfigurationsdatei
|-
| /etc/login.defs || Globale Logindef-Konfigurationsdatei
|}


'''-''', '''-l''', '''--login'''
<noinclude>


startet die Shell als Anmelde-Shell mit einer Umgebung  ähnlich zu einer realen Anmeldung:
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
----
* [[setpriv]](1)
* [[su]](1)
* [[login.defs]](5)
* [[shells]](5)
* [[pam]](8)


•löscht alle Umgebungsvariablen  außer '''TERM''' und jene, die durch '''--whitelist-environment'''  angegeben wurden.
==== Dokumentation ====
 
===== Man-Pages =====
•initialisiert die Umgebungsvariablen '''HOME''',  '''SHELL''', '''USER''', '''LOGNAME''' und '''PATH'''.
 
•wechselt in das Home-Verzeichnis des  Zielbenutzers.
 
•setzt argv[0] der Shell auf  »'''-'''«, um die Shell zur Anmelde-Shell zu machen.
 
'''-P''', '''--pty'''
 
erstellt ein Pseudo-Terminal für die Sitzung. Das  unabhängige Terminal gewährleistet bessere Sicherheit, da der  Benutzer das Terminal nicht mit der Originalsitzung teilt. Dadurch  können Sie durch TIOCSTI vorgetäuschte  Ioctl-Terminaleinschleusung und andere Sicherheitsangriffe gegen  Terminal-Dateideskriptoren vermeiden. Die gesamte Sitzung kann auch in den  Hintergrund verschoben werden (zum Beispiel mit '''runuser --pty''' '''-u'''  ''Benutzername'' '''--''' ''Befehl'' '''&'''). Falls das  Pseudo-Terminal aktiviert ist, dann funktioniert der Befehl '''runuser''' als  Proxy zwischen den Sitzungen (synchronisiert die Standardeingabe und  -ausgabe).
 
Diese Funktion ist vorwiegend für interaktive Sitzungen    gedacht. Falls die Standardeingabe kein Terminal ist, sondern beispielsweise    eine Pipe (zum Beispiel '''echo "date" | runuser --pty -u'''    ''Benutzer''), dann wird der '''ECHO'''-Schalter für das    Pseudo-Terminal deaktiviert, um unordentliche Ausgaben zu vermeiden.
 
'''-m''', '''-p''', '''--preserve-environment'''
 
bewahrt die gesamte Umgebung, das bedeutet, es setzt die  Umgebungsvariablen '''HOME''', '''SHELL''', '''USER''' oder '''LOGNAME'''  nicht. Die Option wird ignoriert, wenn '''--login''' verwendet wird.
 
'''-s''', '''--shell'''=''Shell''
 
führt die angegebene ''Shell'' anstelle der  Vorgabe aus. Die auszuführende Shell wird nach den folgenden Regeln in  dieser Reihenfolge ausgewählt:
 
•die durch '''--shell''' angegebene Shell
 
•die in der Umgebungsvariable '''SHELL'''  angegebene Shell, wenn die Option '''--preserve-environment''' nicht  verwendet wird
 
•die im »passwd«-Eintrag des  Zielbenutzers angegebene Shell
 
•/bin/sh
 
Falls der Zielbenutzer eine eingeschränkte Shell hat (d.h.    die nicht in ''/etc/shells'' aufgelistet ist), werden die Option    '''--shell''' und die Umgebungsvariable '''SHELL''' ignoriert,    außer wenn der aufrufende Benutzer Root ist.
 
'''--session-command='''''Befehl''
 
ist gleichbedeutend mit '''-c''', erzeugt aber keine  neue Sitzung (davon wird abgeraten).
 
'''-w''', '''--whitelist-environment'''=''Liste''
 
setzt die in der Kommata-getrennten Liste angegebenen  Umgebungsvariablen nicht zurück, wenn die Umgebung für  '''--login''' bereinigt wird. Die Positivliste wird für die  Umgebungsvariablen '''HOME''', '''SHELL''', '''USER''', '''LOGNAME''' und  '''PATH''' ignoriert.
 
'''-h''', '''--help'''
 
zeigt einen Hilfetext an und beendet das Programm.
 
'''-V''', '''--version'''
 
zeigt Versionsinformationen an und beendet das  Programm.
 
= KONFIGURATIONSDATEIEN =
'''runuser''' liest die Konfigurationsdateien    ''/etc/default/runuser'' und ''/etc/login.defs''. Die folgenden    Konfigurationseinträge sind für '''runuser''' von  Bedeutung:
 
'''ENV_PATH''' (Zeichenkette)
 
definiert die Umgebungsvariable '''PATH''' für  einen normalen Benutzer. Der Vorgabewert ist  ''/usr/local/bin:/bin:/usr/bin''.
 
'''ENV_ROOTPATH''' (Zeichenkette), '''ENV_SUPATH'''    (Zeichenkette)
 
definiert die Umgebungsvariable '''PATH''' für  root. '''ENV_SUPATH''' hat Vorrang. Der Vorgabewert ist  ''/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin''.
 
'''ALWAYS_SET_PATH''' (boolescher Wert)
 
Falls dies auf ''yes'' gesetzt ist und '''--login'''  sowie '''--preserve-environment''' nicht angegeben wurden, '''initialisiert  *runuser''' die Umgebungsvariable '''PATH'''.
 
Die Umgebungsvariable '''PATH''' kann auf Systemen, auf denen    ''/bin'' und ''/sbin'' in ''/usr'' zusammengeführt sind,    anders sein. Diese Variable wird auch von der Befehlszeilenoption    '''--login''' und den PAM-Systemeinstellungen (z.B. '''pam_env'''(8))    beeinflusst.
 
= EXIT-STATUS =
'''runuser''' gibt normalerweise den Exit-Status des Befehls    zurück, den es ausgeführt hat. Wenn der Befehl durch ein    Signal abgewürgt wurde, gibt '''runuser''' die Nummer des Signals    plus 128 zurück.
 
Von '''runuser''' erzeugter Exit-Status:
 
1
 
Allgemeiner Fehler vor dem Ausführen des  angeforderten Befehls
 
126
 
Der angeforderte Befehl konnte nicht ausgeführt  werden
 
127
 
Der angeforderte Befehl wurde nicht gefunden
 
= DATEIEN =
''/etc/pam.d/runuser''
 
Standard-PAM-Konfigurationsdatei
 
''/etc/pam.d/runuser-l''
 
PAM-Konfigurationsdatei, falls '''--login''' angegeben  wurde
 
''/etc/default/runuser''
 
runuser-spezifische logindef-Konfigurationsdatei
 
''/etc/login.defs''
 
Globale Logindef-Konfigurationsdatei
 
= GESCHICHTE =
Dieser '''runuser'''-Befehl wurde von '''su''' aus den GNU    Coreutils abgeleitet, welches auf einer Implementierung von David MacKenzie    basiert, und dem Befehl '''runuser''' in Fedora von Dan Walsh.
 
= SIEHE AUCH =
setpriv(1), su(1), login.defs(5),    shells(5), '''pam'''(8)
 
= FEHLER MELDEN =
Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem auf    <<nowiki>https://github.com/util-linux/util-linux/issues</nowiki>>.
 
= VERFÜGBARKEIT =
Der Befehl '''runuser''' ist Teil des Pakets util-linux, welches    aus dem ''Linux-Kernel-Archiv''    <<nowiki>https://www.kernel.org/pub/linux/utils/util-linux/</nowiki>> heruntergeladen    werden kann.
{| class="wikitable"
{| class="wikitable"
|2023-07-24
|2023-07-24
|util-linux 2.39.1
|util-linux 2.39.1
|}
|-
{| class="wikitable"
|Source file:
|Source file:
|runuser.1.de.gz (from util-linux-locales 2.40.1-2)
|runuser.1.de.gz (from util-linux-locales 2.40.1-2)
Zeile 172: Zeile 168:
|}
|}


= Links =
===== Info-Pages =====
==== Links ====
===== Projekt =====
===== Weblinks =====
# https://manpages.debian.org/testing/util-linux-locales/runuser.1.de.html
# https://manpages.debian.org/testing/util-linux-locales/runuser.1.de.html
{{DEFAULTSORT:runuser}}
{{DISPLAYTITLE:runuser}}
[[Kategorie:util-linux]]
</noinclude>

Aktuelle Version vom 8. September 2024, 11:29 Uhr

runuser - Befehle mit ersetzter Benutzer- und Gruppenkennung ausführen

Beschreibung

runuser führt Befehle aus, wobei die Benutzer- und Gruppenkennung ersetzt werden

  • Wenn die Option -u nicht verwendet wird, dann weicht runuser auf eine su-kompatible Semantik aus und führt eine Shell aus
  • Der Unterschied zwischen den Befehlen runuser und su besteht darin, dass runuser nicht nach einem Passwort fragt (da es nur vom Benutzer Root ausgeführt werden darf) und eine andere PAM-Konfiguration verwendet
  • Der Befehl runuser muss nicht mit »set-user-ID«-Zugriffsrechten installiert werden

Falls die PAM-Sitzung nicht »required« ist, dann ist die empfohlene Lösung die Verwendung des Befehls setpriv(1)

Wenn es ohne Argumente aufgerufen wird, dann führt runuser in der Voreinstellung eine Shell als root aus

Aus Gründen der Abwärtskompatibilität wechselt runuser das aktuelle Verzeichnis in der Voreinstellung nicht und setzt nur die Umgebungsvariablen HOME und SHELL (plus USER und LOGNAME, falls der Ziel-Benutzer nicht Root ist)

  • Diese Version von runuser verwendet PAM für die Sitzungsverwaltung

Beachten Sie, dass runuser in allen Fällen PAM (pam_getenvlist()) zum endgültigen Ändern der Umgebung verwendet

  • Die Befehlszeilenoptionen wie --login oder --preserve-environment wirken sich auf die Umgebung aus, bevor sie von PAM verändert wird

Seit Version 2.38 setzt runuser die Ressourcenbegrenzungen RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS und RLIMIT_NOFILE des Prozesses zurück

Ursprung

Dieser runuser-Befehl wurde von su aus den GNU Coreutils abgeleitet, welches auf einer Implementierung von David MacKenzie basiert, und dem Befehl runuser in Fedora von Dan Walsh

Installation

runuser ist Teil des Pakets util-linux, das auf allen Linux-Systemen installiert sein sollte

Anwendung

Fehlerbehebung

Syntax

runuser [Optionen] -u ''Benutzer'' [[--] ''Befehl'' [''Argument''...]]
runuser [Optionen] [-] [''Benutzer'' [''Argument''...]]

Optionen

Unix GNU Parameter Beschreibung
-c --command= Befehl Übergibt Befehl mit der Option -c an die Shell
-f --fast Übergibt -f an die Shell, was abhängig von der jeweiligen Shell nützlich sein kann oder nicht
-g --group= Gruppe Legt die primäre Gruppe fest
  • Diese Option ist dem Benutzer Root vorbehalten
-G --supp-group= Gruppe Gibt eine ergänzende Gruppe an
  • Diese Option ist nur für den Benutzer Root verfügbar
  • Die erste angegebene ergänzende Gruppe wir auch als primäre Gruppe verwendet, falls die Option --group nicht angegeben ist
-, -l --login startet die Shell als Anmelde-Shell mit einer Umgebung ähnlich zu einer realen Anmeldung:
  • löscht alle Umgebungsvariablen außer TERM und jene, die durch --whitelist-environment angegeben wurden
  • initialisiert die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH || * wechselt in das Home-Verzeichnis des Zielbenutzers
  • setzt argv[0] der Shell auf »-«, um die Shell zur Anmelde-Shell zu machen
-P --pty erstellt ein Pseudo-Terminal für die Sitzung
  • Das unabhängige Terminal gewährleistet bessere Sicherheit, da der Benutzer das Terminal nicht mit der Originalsitzung teilt
  • Dadurch können Sie durch TIOCSTI vorgetäuschte Ioctl-Terminaleinschleusung und andere Sicherheitsangriffe gegen Terminal-Dateideskriptoren vermeiden
  • Die gesamte Sitzung kann auch in den Hintergrund verschoben werden (zum Beispiel mit runuser --pty -u Benutzername -- Befehl &)
  • Falls das Pseudo-Terminal aktiviert ist, dann funktioniert der Befehl runuser als Proxy zwischen den Sitzungen (synchronisiert die Standardeingabe und -ausgabe)

Diese Funktion ist vorwiegend für interaktive Sitzungen gedacht

  • Falls die Standardeingabe kein Terminal ist, sondern beispielsweise eine Pipe (zum Beispiel echo "date" | runuser --pty -u Benutzer), dann wird der ECHO-Schalter für das Pseudo-Terminal deaktiviert, um unordentliche Ausgaben zu vermeiden
-m, -p --preserve-environment bewahrt die gesamte Umgebung, das bedeutet, es setzt die Umgebungsvariablen HOME, SHELL, USER oder LOGNAME nicht. Die Option wird ignoriert, wenn --login verwendet wird
-s --shell= Shell führt die angegebene Shell anstelle der Vorgabe aus
  • Die auszuführende Shell wird nach den folgenden Regeln in dieser Reihenfolge ausgewählt:
  • die durch --shell angegebene Shell
  • die in der Umgebungsvariable SHELL angegebene Shell, wenn die Option --preserve-environment nicht verwendet wird
  • die im »passwd«-Eintrag des Zielbenutzers angegebene Shell
  • /bin/sh

Falls der Zielbenutzer eine eingeschränkte Shell hat (d. h. die nicht in /etc/shells aufgelistet ist), werden die Option --shell und die Umgebungsvariable SHELL ignoriert, außer wenn der aufrufende Benutzer Root ist

--session-command= Befehl ist gleichbedeutend mit -c, erzeugt aber keine neue Sitzung (davon wird abgeraten)
-w --whitelist-environment= Liste setzt die in der Kommata-getrennten Liste angegebenen Umgebungsvariablen nicht zurück, wenn die Umgebung für --login bereinigt wird
  • Die Positivliste wird für die Umgebungsvariablen HOME, SHELL, USER, LOGNAME und PATH ignoriert
-h --help zeigt einen Hilfetext an und beendet das Programm
-V --version zeigt Versionsinformationen an und beendet das Programm

Parameter

Umgebung

Rückgabewert

runuser gibt den Rückgabewert des Befehls zurück, den es ausgeführt hat

  • Wenn der Befehl durch ein Signal beendet wurde, gibt runuser die Nummer des Signals plus 128 zurück

Von runuser erzeugter Rückgabewert

Wert Beschreibung
1 Allgemeiner Fehler vor dem Ausführen des angeforderten Befehls
126 Der angeforderte Befehl konnte nicht ausgeführt werden
127 Der angeforderte Befehl wurde nicht gefunden

Konfiguration

Dateien

runuser liest die Konfigurationsdateien

  • /etc/default/runuser
  • /etc/login.defs
Konfigurationseinträge
Option Typ Beschreibung
ENV_PATH Zeichenkette definiert die Umgebungsvariable PATH für einen normalen Benutzer.
  • Der Vorgabewert ist /usr/local/bin:/bin:/usr/bin
ENV_ROOTPATH Zeichenkette
ENV_SUPATH Zeichenkette definiert die Umgebungsvariable PATH für root
  • ENV_SUPATH hat Vorrang
  • Der Vorgabewert ist /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
ALWAYS_SET_PATH boolescher Wert Falls dies auf yes gesetzt ist und --login sowie --preserve-environment nicht angegeben wurden, initialisiert *runuser die Umgebungsvariable PATH

Die Umgebungsvariable PATH kann auf Systemen, auf denen /bin und /sbin in /usr zusammengeführt sind, anders sein.

Diese Variable wird auch von der Befehlszeilenoption --login und den PAM-Systemeinstellungen (z. B. pam_env(8)) beeinflusst

Option Beschreibung
/etc/pam.d/runuser Standard-PAM-Konfigurationsdatei
/etc/pam.d/runuser-l PAM-Konfigurationsdatei, falls --login angegeben wurde
/etc/default/runuser runuser-spezifische logindef-Konfigurationsdatei
/etc/login.defs Globale Logindef-Konfigurationsdatei


Anhang

Siehe auch


Dokumentation

Man-Pages
2023-07-24 util-linux 2.39.1
Source file: runuser.1.de.gz (from util-linux-locales 2.40.1-2)
Source last updated: 2024-05-26T13:52:22Z
Converted to HTML: 2024-05-30T03:43:06Z
Info-Pages

Links

Projekt
Weblinks
  1. https://manpages.debian.org/testing/util-linux-locales/runuser.1.de.html