はじめに
雑記です。許してね。
色々書こうかと思ってるけど、追記しないかも。許してね。
screen は事前にインストールされているものとするよ。
環境
Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)
まとめ
以下を行うと screen をグループ間で共有できるようになる。
Setup
sudo chmod u+s /usr/bin/screen
sudo chmod 755 /var/run/screen
# 0755 に書き換えちゃってもいいかも
sudo rm /etc/tmpfiles.d/screen-cleanup.conf
Exec_example
screen -dmS <session_name> <command>
/path/to/screen-addgrp.sh <group_name> <session_name>
/path/to/screen-addgrp.sh
#!/bin/bash
screen -p 0 -S $2 -X eval "multiuser on"
users=(`getent group $1 | cut -d ':' -f 4 | tr -s ',' ' '`)
for usr in "${users[@]}" ; do
#echo "[ ${usr} ]"
screen -p 0 -S $2 -X eval "acladd ${usr}"
done
他ユーザーで以下のようなコマンドを実行することでアタッチできる
screen -ls <owner_user>/ # セッション名を確認
screen -x <owner_user>/<session_name> # アタッチ
Systemd によって作り出す screen をグループ間で共有
ExecStart
の部分を以下のような構造にする
in_hogehoge.service
ExecStart=/usr/bin/screen -DmS <session_name> /bin/sh -c '/path/to/screen-addgrp.sh <group_name> <session_name>;/path/to/start/<command> <argument_list>'
参考URL