web-dev-qa-db-fra.com

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

Parfois, 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

aboutir à la sortie suivante

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

Quel est le problème ici? Comment puis-je réparer cela?

17
Huey

Ce problème a été documenté ici . En bref,

/etc/rcS.d/S70screen-cleanup s'exécute via Upstart beaucoup plus tôt que prévu et ne nettoie pas correctement ce répertoire.

Il peut être corrigé avec la commande suivante

Sudo /etc/init.d/screen-cleanup start
19
Huey

Nous avons trouvé une solution qui n'exige pas de redémarrage régulier de Sudo

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 socket.

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

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

et exportez la SCREENDIR pour qu'elle pointe vers ce répertoire:

export SCREENDIR=$HOME/.screen

Vous pouvez également insérer cette ligne dans votre ~/.bashrc pour qu’elle prenne effet par la suite.

22
Krease

Je me suis heurté à cette situation en exécutant une distribution basée sur Centos/RHEL 7, qui ne contient aucun élément appelé "nettoyage de l'écran" sous/etc.

Une solution de contournement que j'ai trouvée consistait simplement à exécuter Sudo screen et à en sortir immédiatement.

Après cela, j’ai été en mesure d’exécuter screen sans aucun privilège spécial. Il semble donc que le fichier/var/run soit nettoyé de manière appropriée lorsqu’il en a l'occasion.

2
Jay Taylor

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

Sudo mkdir /var/run/screen
Sudo chmod 777 /var/run/screen
0
Taichi Nakamura

TL; DR : dans Debian Stretch et versions ultérieures, assurez-vous que systemd-tmpfiles-setup.service a été démarré avec succès:

$:> 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
   ...

Si elle est désactivée (Loaded: ... ;disabled; ...), vous voudrez peut-être l'activer avec systemctl enable systemd-tmpfiles-setup.service. Si vous voulez utiliser screen dans un conteneur docker , vous devez soit obtenir systemd en cours d'exécution dans votre image de conteneur ou vous devez exécuter systemctl start systemd-tmpfiles-setup.service ou /etc/init.d/screen-cleanup start ( comme suggéré par Huey ) chaque fois que vous vous êtes connecté à votre conteneur.

Détails: Depuis Debian Stretch, le script de démarrage /etc/init.d/screen-cleanup n'est pas exécuté car, par défaut, ce service est masqué (/lib/systemd/system/screen-cleanup.service -> /dev/null). Systemd l'ignore donc.

Au lieu de cela, systemd-tmpfiles-setup.service crée /run/screen au démarrage, comme configuré dans /usr/lib/tmpfiles.d/screen-cleanup.conf: d /run/screen 0775 root utmp

0
Jakob