ADMIN-Tipp: Screen mit Sudo

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Wer mit Sudo in einen anderen Benutzeraccount wechselt, kann typischerweise nicht mehr den Screen-Befehl verwenden, weil das Pseudoterminal-Device nicht verfügbar ist. Ein kleiner Hack stellt die Ordnung wieder her. 

Wechselt man, etwa mit "sudo -s -u heinz" in den Benutzeraccount "heinz", bekommt man beim Aufruf des Befehls "screen" die Fehlermeldung "Cannot open your terminal '/dev/pts/0' - please check" zu sehen. Wer versucht, mit "strace" dem Problem auf die Spur zu kommen, sieht damit auch prompt, dass die nötigen Rechte für das Pseudo-Terminal (PTY) fehlen:

open("/dev/pts/0", O_RDWR|O_NONBLOCK) = -1 EACCES (Permission denied)

Selbst ein Sudo-Login mit "-i" (Simulate Initial Login) hilft hier nicht weiter. Ein einfacher Workaround besteht darin, vor "screen" das Programm "script" aufzurufen, dass die Pseudoterminals mit passenden rechten neu einrichtet. "script" zeichnet normalerweise die aktuelle Sitzung auf, aber da dies nicht nötig ist, genügt es das Programm mit dem Argument "/dev/null" aufzurufen: "script /dev/null". Nun funktioniert auch "screen".

Wenn man die Situation genauer untersucht, stellt man fest, dass die Rechte der Pseudoterminals nicht passen:

$ su -s -u heinz
$ ls -l /dev/pts
insgesamt 0
crw--w---- 1 oliver tty 136, 0 Jul 6 10:33 0
crw--w---- 1 root tty 136, 2 Jul 2 09:42 2
crw--w---- 1 root tty 136, 4 Jul 2 09:42 4
crw--w---- 1 root tty 136, 5 Jul 2 09:42 5
c--------- 1 root root 5, 2 Jul 2 09:33 ptmx

Nach dem Ausführen von "script" sieht dasselbe Verzeichnis so aus:

crw--w---- 1 oliver tty 136, 0 Jul 6 10:33 0
crw--w---- 1 heinz tty 136, 1 Jul 6 10:33 1
...

Es gibt also ein neues PTY mit der Nummer 1, das dem aktuellen Sudo-Benutzer gehört. Dass das Screen-Kommando es findet, liegt daran, dass "script" auch einen Symlink auf "/proc/self/fd/0" anlegt.

17.07.2012

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2022