起動時にいつでも接続できる「screen」セッションで実行されるdebian/linuxマシンでサービスを実行します。
このサービスを実行できるユーザー名を作成したいと思います。現時点では、「通常の」ログインアカウントを使用しています。このサービス専用のユーザー名のセキュリティを追加したい(「nobody」または「web」がApacheで使用される方法と同様)。
要件:
このソリューションでは、su/Sudoをクリエイティブに使用し、アカウントの作成方法の詳細を説明すると思います。
まず、screen
セッションが実行されるアカウント(たとえば、screenimage
と呼ばれる)と、それを使用できるユーザーのグループ(たとえば、screenusers
)を作成します。
adduser --system --group screenimage
addgroup --system screenusers
次に、使用を許可されたユーザーごとに、それらをscreenusers
グループに追加します。
adduser USER screenusers
次に、承認されたユーザーを/etc/sudoers
に追加します。visudo
を実行し、行を追加します
%screenusers ALL = (screenimage) /usr/bin/screen
ETA:この投稿の他の回答に対処するには:--system
はシェルまたはパスワードなしでアカウントを作成します。 sudoers
行は、screen
ユーザーのみとして、ユーザーがscreenimage
の実行に固定されていることを意味します。
ユーザーの作成は簡単です。 adduserスクリプトを使用してユーザーを追加し(これはDebian固有ですが、タグに含まれていることに気付きました)、そのユーザーの結果の/ etc/passwd行を編集するだけです。 x
を!
に変更すると、パスワードが有効と一致しないようになります。 /bin/bash
を/bin/false
に変更して、誰かがこのユーザーとしてログインした場合にシェルを取得しないようにします。
残りの部分については、実行しようとしているサービスや、サービスとの対話方法によって異なります。スクリーンセッションで実行するよりも、おそらくそれを解決するためのより良い方法があるように感じます。
OK、どうですか(/etc/rc.something内):
Sudo -u user screen -d -m service
ser's Shellを/bin/false
に設定します。