Za każdym razem, gdy loguję się do maszyny wirtualnej z rootem, su
na konto użytkownika i próbuję go użyć screen
, generuje błąd:
Cannot open your terminal '/dev/pts/0' - please check.
Wpis o przepełnieniu stosu powiedział, że muszę script /dev/null
go naprawić, i działa, ale nadal nie wyjaśnia, dlaczego muszę pisać script /dev/null
. Chciałbym zrozumieć, co robi i dlaczego muszę to pisać.
terminal
gnu-screen
su
pty
CJL
źródło
źródło
Odpowiedzi:
Nie możesz otworzyć,
/dev/pts/0
ponieważ jest własnością roota, a po wysłaniu do innego użytkownika nie możesz już go otworzyć poprzez jego ścieżkę, ale nadal możesz go używać poprzez otwarty uchwyt do niego, który został odziedziczony z procesu nadrzędnego.script /dev/null
utworzy kolejną część, będącą własnością bieżącego użytkownika.W każdym razie ten błąd / ograniczenie wydaje się być naprawiony w najnowszych wersjach
screen
(np. 4.99.0), które poprawnie wysyłają uchwyt do bieżącego terminala za pomocąSCM_RIGHTS
komunikatu pomocniczego w gnieździe domeny unix, zamiast wysyłania samej nazwy terminal i niechscreen
serwer spróbuje go otworzyć (i nie powiedzie się). To samo ztmux
.źródło