web-dev-qa-db-ja.com

ディレクトリ '/ var / run / screen'を作成できません:権限が拒否されました

いつか、通常はクラッシュまたは突然のシャットダウンの後、 screen は起動を拒否します。のようなコマンド

screen
screen -ls
screen -r
screen -d

次の出力になります

ディレクトリ '/ var/run/screen'を作成できません:権限が拒否されました

ここの問題は何ですか?どうすれば修正できますか?

29
Huey

再起動時に通常のSudoを必要としないソリューションを見つけた

'Eric Z Ma' @ systutorials から:

ディレクトリ/var/run/screen/は、画面のソケットディレクトリです。

さいわい、screenは環境変数SCREENDIRを読み取り、代替ソケットディレクトリを取得します。

したがって、これを回避するには、~/.screenなどのディレクトリを作成します。

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

そして、そのディレクトリを指すようにSCREENDIRをエクスポートします。

export SCREENDIR=$HOME/.screen

この行を~/.bashrcに挿入して、後で有効にすることもできます。

41
Krease

この問題は文書化されています ここ 。要するに、

/etc/rcS.d/S70screen-cleanupは、実行が予想されるよりもはるかに早くupstartを介して実行されており、そのディレクトリを正しくクリーンアップできません。

次のコマンドで修正できます

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

Centos/RHEL 7ベースのディストリビューションを実行しているときにこの問題に遭遇しました。/etcの下に「screen-cleanup」という名前のものがありません。

私が見つけた回避策は、単にSudo screenし、すぐに終了します。

その後、特別な権限なしでscreenを実行することができたため、チャンスが与えられたときに/ var/runを適切にクリーンアップしたようです。

3
Jay Taylor

以下のコマンドを実行することでこの問題を解決できます。

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

TL; DR:Debian Stretch以降では、systemd-tmpfiles-setup.serviceが正常に開始されていることを確認してください:

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

無効(Loaded: ... ;disabled; ...)の場合は、systemctl enable systemd-tmpfiles-setup.serviceで有効にすることができます。 docker container 内でscreenを使用する場合は、- systemd running in your container image を取得するか、systemctl start systemd-tmpfiles-setup.serviceまたは/etc/init.d/screen-cleanup startasコンテナにログインした後は毎回Hueyによって提案されました )。

詳細:Debian Stretch以降、スタートアップスクリプト/etc/init.d/screen-cleanupは実行されません。デフォルトでは、このサービスはマスクされているため(/lib/systemd/system/screen-cleanup.service -> /dev/null)、systemdは無視します。

代わりに、systemd-tmpfiles-setup.serviceで構成されているように、/run/screenは、/usr/lib/tmpfiles.d/screen-cleanup.confをブート時に作成します。d /run/screen 0775 root utmp

0
Jakob