51 votes

Impossible de créer le répertoire '/var/run/screen' : Permission refusée

À un moment donné, généralement après un crash ou un arrêt soudain, screen refuse de démarrer. Des commandes comme

screen
screen -ls
screen -r
screen -d

donne le résultat suivant

Impossible de créer le répertoire '/var/run/screen' : Permission refusée

Quel est le problème ? Comment puis-je résoudre ce problème ?

73voto

J'ai trouvé une solution qui ne nécessite pas un sudo régulier au redémarrage.

De Eric Z Ma' @ systutorials :

Le répertoire /var/run/screen/ est le répertoire du socket pour screen.

Heureusement, screen lit une variable d'environnement SCREENDIR pour obtenir un autre répertoire de sockets.

Pour contourner ce problème, vous pouvez créer un répertoire, tel que ~/.screen :

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

et exporter le SCREENDIR pour pointer vers ce répertoire :

export SCREENDIR=$HOME/.screen

Vous pouvez aussi mettre cette ligne dans votre ~/.bashrc afin qu'elle prenne également effet par la suite.

44voto

Huey Points 1141

Ce problème a été documenté aquí . En résumé,

/etc/rcS.d/S70screen-cleanup s'exécute via upstart bien plus tôt qu'il ne l'aurait dû, et ne parvient pas à nettoyer correctement ce répertoire.

Il peut être corrigé à l'aide de la commande suivante

sudo /etc/init.d/screen-cleanup start

4voto

Coded Monkey Points 1152

J'ai rencontré ce problème alors que j'utilisais une distribution basée sur Centos / RHEL 7, et il n'y a rien nommé 'screen-cleanup' nulle part dans /etc.

Une solution de contournement que j'ai trouvée consiste à lancer simplement sudo screen et en sortir immédiatement.

Après cela, j'ai pu lancer screen sans aucun privilège particulier, il semble donc qu'il nettoie correctement /var/run lorsqu'il en a l'occasion.

4voto

JohnnyBgud Points 354

Dans mon cas, le screen-cleanup était masqué, sur Debian "buster" 10.4 :

$ systemctl is-enabled screen-cleanup.service

masked

Et

$ file /lib/systemd/system/screen-cleanup.service

/lib/systemd/system/screen-cleanup.service: symbolic link to /dev/null

Ce qui entraîne les conséquences suivantes :

$ systemctl enable screen-cleanup.service

Synchronizing state of screen-cleanup.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable screen-cleanup
Failed to enable unit: Unit file /lib/systemd/system/screen-cleanup.service is masked.

La procédure suivante a permis de créer le répertoire d'exécution à chaque démarrage. Supprimez le lien symbolique vers /dev/null manuellement ( systemctl unmask n'a pas fonctionné) :

rm /lib/systemd/system/screen-cleanup.service

Activez ensuite le service :

systemctl enable screen-cleanup.service

Et commencez à le faire :

systemctl start screen-cleanup.service

3voto

Taichi Nakamura Points 39

Je peux résoudre ce problème en exécutant les commandes suivantes.

sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X