一般ユーザで screen が動かない
苦闘の結果、動くようになったので、そのメモ。
状況
Sorry, could not find a PTY. というエラーがでて、screenが一般ユーザで起動しない。なお、root では通常通り起動して利用可能。
screen インストール方法
% sudo yum -y install screen
screen のバージョン
% screen -v Screen version 4.00.03 (FAU) 23-Oct-06
TERM環境変数の確認
/bin/zsh
% printenv | grep TERM TERM=xterm
/bin/bash の場合
$ printenv | grep TERM TERM=xterm
screen 起動方法
一般ユーザで起動。
% screen -t hoge
PTYとは?
下記を見ると、PTYというのは
/dev/pty[p-za-e][0-9a-f]
にいるようだ。
http://www.linux.or.jp/JM/html/LDP_man-pages/man7/pty.7.html
実際に見てみると。いる。
% ls -l /dev/pty* crw-rw-rw- 1 root tty 2, 0 12月 16 19:08 /dev/ptyp0 crw-rw-rw- 1 root tty 2, 1 5月 1 2009 /dev/ptyp1 crw-rw-rw- 1 root tty 2, 2 5月 1 2009 /dev/ptyp2 crw-rw-rw- 1 root tty 2, 3 5月 1 2009 /dev/ptyp3 crw-rw-rw- 1 root tty 2, 4 5月 1 2009 /dev/ptyp4 crw-rw-rw- 1 root tty 2, 5 5月 1 2009 /dev/ptyp5 crw-rw-rw- 1 root tty 2, 6 5月 1 2009 /dev/ptyp6 crw-rw-rw- 1 root tty 2, 7 5月 1 2009 /dev/ptyp7 crw-rw-rw- 1 root tty 2, 8 5月 1 2009 /dev/ptyp8 crw-rw-rw- 1 root tty 2, 9 5月 1 2009 /dev/ptyp9 crw-rw-rw- 1 root tty 2, 10 5月 1 2009 /dev/ptypa crw-rw-rw- 1 root tty 2, 11 5月 1 2009 /dev/ptypb crw-rw-rw- 1 root tty 2, 12 5月 1 2009 /dev/ptypc crw-rw-rw- 1 root tty 2, 13 5月 1 2009 /dev/ptypd crw-rw-rw- 1 root tty 2, 14 5月 1 2009 /dev/ptype crw-rw-rw- 1 root tty 2, 15 5月 1 2009 /dev/ptypf
結論
色々と試したが、結論は以下の3つで動くようになった。
/dev/ptmx が存在しないので作成する
/dev/ptmx を chmod 666 にしたらどうだろう。という意見を頂きましたが、なんと /dev/ptmx がありません。
なので、以下のように作成、パーミッション設定しました。
# mknod /dev/ptmx c 5 2 # ls -la /dev/ptmx crw-r--r-- 1 root root 5, 2 12月 17 20:09 /dev/ptmx
# chmod 0666 /dev/ptmx # ls -la /dev/ptmx crw-rw-rw- 1 root root 5, 2 12月 17 20:09 /dev/ptmx
/var/run/screenのパーミッション変更
今度は以下のエラーがでた
Directory '/var/run/screen' must have mode 777.
% ls -la /var/run/ | grep screen drwxrwxr-x 3 root screen 4096 12月 17 13:41 screen/
これを 777 にしてみる。
% sudo chmod 777 /var/run/screen
変更後
% ls -la /var/run/ | grep screen drwxrwxrwx 3 root screen 4096 12月 17 13:41 screen/
もう一度、/var/run/screenのパーミッション変更
今度は以下のエラーがでた
Directory '/var/run/screen' must have mode 775.
これを 775 にしてみる。
% sudo chmod 775 /var/run/screen
変更後
% ls -la /var/run/ | grep screen drwxrwxrwx 3 root screen 4096 12月 17 13:41 screen/
これで、晴れて一般ユーザで動くようになりました!
スペシャルサンクス!
- Akira Matsuda on Twitter: "@japanrock ナゾですねー。あとは chmod 666 /dev/ptmx ぐらいでしょうか? http://bit.ly/7EFaiL"
- Akira Matsuda on Twitter: "@japanrock あとはぐぐって引っかかってくるのは /dev/pty* のパーミッションと /etc/fstab 内のdevptsをマウントするときのmodeの値ぐらいですかねぇ。"
- Akira Matsuda on Twitter: "@japanrock いったんbashに戻してみたら起動しますか?あとは、それぞれのシェルでTERM環境変数がどうなってます?"
- 吉田 裕美 on Twitter: "@japanrock Linux では BSDではなく SysV 流の /dev/ptmx /dev/pts/* を使ってるようです"
ありがとございます!非常に助かりました!多謝!m(_ _)m
上記で解決しない方へ
上記で解決しない場合、以下で解決した人もいるようですので、参考までにメモ。
一般ユーザを tty グループに参加させる
No More PTYs, Sorry could not find a PTY
上記を見ると、 tty のグループに参加させればいいよという感じにかいてあります。
% sudo /usr/sbin/usermod -G wheel,tty admin
参加の確認
% cat /etc/group | grep admin tty:x:5:admin wheel:x:10:root,admin admin:x:500:
※グループ参加させるときの注意として、現在参加しているグループもあわせて記述しましょう。そうしないと参加から外れます。
Linux ユーザ情報の変更 - usermod
/etc/fstabの設定
/etc/fstabの設定を変更することによって解決した人もいるようです。
http://www.ortensia.net/diary/?date=20061117
修正前: none /dev/pts devpts gid=5,mode=20 0 0 修正後: none /dev/pts devpts gid=5,mode=620 0