非ルートの場合、「画面が終了しています」

非ルートの場合、「画面が終了しています」

非ルートユーザーとして screen を実行しようとすると、次のメッセージが表示されます。

screen

[screen is terminating]

すぐには動作しますが、ルートの場合は問題なく動作します

ls -alh /usr/bin/screen
-rwxr-sr-x 1 root screen 465K Jun  9 20:30 /usr/bin/screen

グーグルで検索していたら、/etc/fstab について言及されているのに気づきました。これが私のものです:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/md1        /       ext4    errors=remount-ro       0       1
/dev/md2        /home   ext4    defaults        1       2
/dev/sda3       swap    swap    defaults        0       0
/dev/sdb3       swap    swap    defaults        0       0
proc            /proc   proc    defaults                0       0
sysfs           /sys    sysfs   defaults                0       0
tmpfs           /dev/shm        tmpfs   defaults        0       0
devpts          /dev/pts        devpts  defaults        0       0

これは、ssh 経由でアクセスする専用サーバーに新しくインストールされた CentOS 7 上にあります (TTY は pts です)

ご協力いただければ幸いです。

screen -ls    
No Sockets found in /var/run/screen/S-user.

ls -la /var/run/screen/S-user
total 0
drwx------ 2 user user 40 Jul 10 18:23 .
drwxrwxr-t 4 root     screen   80 Jul 10 17:59 ..

答え1

専用の CentOS 7 サーバーでこの問題が発生しましたが、次のバグ レポートに記載されている修正方法を見つけました。 バグ:

gid=5これは、fstab の devpts に追加するための専用の優れたソリューションでした。screen現在、すべてのユーザーに対して期待どおりに動作します。

しかし、CentOS 7 の OpenVZ コンテナで問題を解決しようとしていたときに、このスレッドに遭遇しました。サーバーの fstab を編集する方法がないため (私が見つけた限りでは)、次の回避策で問題が解決しました。

この道を通って戻って、他の人の役に立つかどうか見てみようと思いました。 (あまりいいやり方ではないですが。)

ターミナルで:

chmod u+s /usr/bin/screen
chmod 755 /var/run/screen

答え2

screen他の人がそのデバイスを使用していないことを確認する

これは次のように達成できる。Linux でどのプロセスがファイルを開いているかを判断するにはどうすればよいでしょうか?:

sudo lsof /dev/ttyS0

その場合は、そのプロセスを強制終了します。

何らかの理由で、この状況では、sudo screenデバイスに引き続きアクセスできますが、その接続では文字が失われ、他のデバイスによって消費されますscreen

ユーザーにファイルの読み取りおよび書き込み権限があることを確認する

たとえば、Ubuntu でユーザーをdialoutグループに追加する場合は、次のようにします。https://askubuntu.com/a/133244/52975

答え3

設定ファイルにエラーがある可能性があります

~/.screenrc

確認するか、暗いものを作成してみてください。

関連情報