screen の multiuser mode を1台のマシン上で1人で実験する
前にも一度だけやってみたことはあったんだけど、そのときは「おぉすげぇ」と思っただけで使いたいとは思わなかった。今回は真面目に使いたいと思ったのでメモ。
まず、screen の multiuser mode はユーザーが1人だけでも利用できるため、ちょっと混乱する。先に言っておくが、ユーザーが自分1人の場合は
screen -x は multiuser mode でなくても成功する
のでこの結果では判断しちゃいけない。ただ、何かの拍子に機械を変わる必要があり、いちいち detach しなくても作業を続けられるというメリットはあるのでこの使い方自体を否定する気はない。しかしあくまで multiuser じゃないのでそこんとこよろしく。
で、multiuser mode の実験になるわけだが、必要な作業は以下の通り。
- screen バイナリに setuid root ( man chmod )
- 別なユーザーでログインする
- screen の session を作成し、それに対し
コマンド | 意味 |
multiuser on | 絶対に必要 |
acladd USER | これやっとかないと detach できない |
aclchg USER PERMISSION WINDOW | 特定のユーザーに特定の window 上で特定の操作を許可する |
と言ったコマンドを実行すると自分の利用している screen session に別のユーザーが attach してこれるようになる。attach するには
screen -x -r username/pid
とする。screen -S で name が設定されている場合はそれでもよい。detach は通常通り detach すれば ok.
別なユーザーでログインすることの意味
1人で実験の際に意外とハマるのは上の 2 に挙げた別なユーザーでログインするというところ。これ、su ではダメ。もっと言うとそのユーザーの tty が作成されてないとダメ。ということで login する。
これをクリアすればもう大丈夫。
acladd, aclchg 辺りの挙動がなんか変
しかしまだ自分の中には疑問があって、
- acladd すると aclchg しなくてもいきなりフルコントロールできちゃうので、これは一種のセキュリティホールじゃないのか?
- acladd しなくても aclchg しただけで attach は可能なので余計な作業をしてほしくない(例えば見せたいだけの)場合は先に aclchg した方がよさげ。
- でもその場合も acladd しておかないと detach できない
- で、acladd したときにやっぱり全権限が付与されちゃう予感
なんか、acladd と aclchg の動きがおかしいような。確認したのは screen 3.09.15 @ OSX なので、最近のバージョンでは挙動が変わってるかもしれない。
※ 設定も環境も元の session を作ったユーザーのものに従うっぽい。escape とか違ってると detach できなくて焦るので multiuser での作業はすぐに情報を伝達できる準備(irc とか Skype とか口頭でとか)をしてからやっとかないと混乱するかも。