Não é possível criar o diretório '/ var / run / screen': Permissão negada

11

Em algum momento, geralmente após uma falha ou desligamento repentino, screen se recusa a iniciar. Comandos como

screen
screen -ls
screen -r
screen -d

resulta na seguinte saída

Cannot make directory '/var/run/screen': Permission denied

Qual é o problema aqui? Como posso consertar isso?

    
por Huey 06.04.2017 / 06:13

4 respostas

14

Esse problema foi documentado aqui . Resumindo,

/etc/rcS.d/S70screen-cleanup is running via upstart much earlier than it expects to have run, and is failing to correctly clean up that directory.

Pode ser corrigido com o seguinte comando

sudo /etc/init.d/screen-cleanup start
    
por 06.04.2017 / 06:13
11

Encontrou uma solução que não requer sudo regular nas reinicializações

De 'Eric Z Ma' @ systutorials :

The directory /var/run/screen/ is the socket directory for screen.

Fortunately, screen reads a environment variable SCREENDIR to get an alternative socket directory.

So to work around it, you can create a directory, such as ~/.screen:

mkdir ~/.screen && chmod 700 ~/.screen

and export the SCREENDIR to point to that directory:

export SCREENDIR=$HOME/.screen

You can also put this line into you ~/.bashrc so that it will also take effect afterwards.

    
por 10.01.2018 / 23:02
1

Eu corri para isso enquanto estava executando uma distro baseada no Centos / RHEL 7, e ele não tem nada chamado 'screen-cleanup' em nenhum lugar em / etc.

Uma solução que encontrei foi simplesmente executar sudo screen e, em seguida, sair imediatamente dela.

Depois disso, consegui executar a tela sem privilégios especiais, por isso, parece que o / var / run é executado corretamente quando é dada a oportunidade.

    
por 09.11.2017 / 19:30
0

TL; DR : no Debian Stretch e posterior, certifique-se de que systemd-tmpfiles-setup.service foi iniciado com sucesso:

$:> systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
   Active: active (exited) since Thu 2018-06-21 19:54:06 CEST; 41min ago
   ...

Se desabilitado ( Loaded: ... ;disabled; ... ), convém habilitá-lo com systemctl enable systemd-tmpfiles-setup.service . Se você quiser usar a tela dentro de um contêiner docker , então você precisa obter systemd em execução na sua imagem do contêiner ou você precisa executar systemctl start systemd-tmpfiles-setup.service ou /etc/init.d/screen-cleanup start ( sugerido por Huey ) sempre que você fizer login no seu contêiner.

Detalhes: Desde o Debian Stretch, o script de inicialização /etc/init.d/screen-cleanup não é executado, porque por padrão este serviço é mascarado ( /lib/systemd/system/screen-cleanup.service -> /dev/null ), então o systemd o ignora.

Em vez disso, systemd-tmpfiles-setup.service cria /run/screen na inicialização, conforme configurado em /usr/lib/tmpfiles.d/screen-cleanup.conf : d /run/screen 0775 root utmp

    
por 21.06.2018 / 20:45