Каждый раз, когда я вхожу в виртуальную машину с правами root, su
в учетную запись пользователя и пытаюсь использовать screen
ее, выдается ошибка:
Cannot open your terminal '/dev/pts/0' - please check.
В сообщении о переполнении стека говорится, что мне нужно использовать его script /dev/null
для исправления, и это работает, но все равно не объясняет, почему мне нужно печатать script /dev/null
. Я хотел бы понять, что он делает и почему мне нужно его напечатать.
terminal
gnu-screen
su
pty
CJL
источник
источник
Ответы:
Вы не можете открыть,
/dev/pts/0
потому что он принадлежит пользователю root, и после того, как вы перешли к другому пользователю, вы больше не можете открыть его по его пути, но вы все равно можете использовать его через открытый дескриптор, который был унаследован. из родительского процесса.script /dev/null
создаст другой pty, принадлежащий текущему пользователю.В любом случае, эта ошибка / ограничение, кажется, была исправлена в последних версиях
screen
(например, 4.99.0), которые будут правильно отправлять дескриптор на текущий терминал черезSCM_RIGHTS
вспомогательное сообщение на сокете домена unix, вместо того, чтобы отправлять только имя терминал иscreen
сервер попытаться открыть его (и потерпеть неудачу). То же самое сtmux
.источник