Czym zajmuje się „script / dev / null”?

21

Za każdym razem, gdy loguję się do maszyny wirtualnej z rootem, suna 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/nullgo 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ć.

CJL
źródło
2
> Powiedział post przepełnienia stosu - może być pomocne, jeśli dodasz również link do tego postu, może w komentarzu.
törzsmókus
Może to być na przykład stackoverflow.com/a/44244425/340790 .
JdeBP

Odpowiedzi:

27

Nie możesz otworzyć, /dev/pts/0ponieważ 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_RIGHTSkomunikatu pomocniczego w gnieździe domeny unix, zamiast wysyłania samej nazwy terminal i niech screenserwer spróbuje go otworzyć (i nie powiedzie się). To samo z tmux.

mosvy
źródło