複数のユーザーと端末を共有する(画面やその他の手段で)

複数のユーザーと端末を共有する(画面やその他の手段で)

複数の開発者が複数のアプリケーションを操作するサーバーを設定しています。

私は特定の開発者に必要なアプリケーションディレクトリへの共有アクセスを使用しsetgid bitdefault ACLsグループ内のすべての人にアクセスを許可する方法を見つけました。

これらのアプリケーションの多くは、開発中に簡単にアクセスできるように端末で実行されます。自分で作業するときは、アプリケーションのユーザーを設定し、そのユーザーとして画面を実行します。欠点は、それを使用するすべての開発者がscreen sessionパスワードを知る必要があり、ユーザーアカウントとアプリケーションアカウントを分離するのが難しいことです。

これを行う1つの方法は、画面マルチユーザー機能を使用することです。デフォルトでは機能しませんが、画面が必要だと文句を言いますsuid root。欠点はありますか?私は私が使用するすべてに非常に注意を払いますsuid root。たぶんデフォルトではない理由はありますか?

これを行う必要がありますかscreen、それとも私が望むことをする他の合理的な方法はありますか?

答え1

screenはい、マルチユーザーサポートではこれを行うことができます。

まず、新しいセッションを作成します。

screen -d -m -S multisession

それに加えなさい:

screen -r multisession

マルチユーザーサポートを有効にします。

押してCtrl-a入力します(注:Ctrl+aすべてのコマンドの前に必要です、つまりここでは2回)。

:multiuser on
:acladd USER ← use username of user you want to give access to your screen

ここでCtrl-a dセッションをリストします。

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)

これでマルチユーザースクリーンセッションができました。 acl'dユーザーに名前を割り当てて、multisessionユーザーが接続できるようにします。

screen -x youruser/multisession

それはすべてです。

唯一の欠点は、screenrootとして実行する必要があることですsuid。しかし、私が知っている限り、これは基本的で正常な状況です。

別のオプションは次のとおりですscreen -S $screen_id -X multiuser onscreen -S $screen_id -X acladd authorized_user

お役に立てば幸いです。

答え2

@Scyld de Fraudの回答の手順に従った後でも、この質問に対して他の人がマルチユーザー操作を実行できない理由はSELinuxを有効にする必要があるためです(参照)。https://phoenixnap.com/kb/enable-selinux-centos)。マルチユーザーディスプレイで個々のユーザーにアクセスを制限または付与するためにアクセス制御リスト(画面acladdとコマンドを介して)権限を割り当て、ゾンビセッションを再開するなどの機能を使用するには、Screenにこの機能が必要です。aclchg

答え3

オリジナルの投稿 -この回答到着スクリーンセッションでコマンドを実行する方法:

少し時間がかかりましたが、私が見つけたものは次のとおりです。画面4.06 エラーがあります。共有画面セッションを介してこのようなコマンドを送信しようとすると失敗します。

screen -S shared_session_name -X stuff "command \n"

次のエラーが原因で画面が失敗します。

Cannot opendir /run/screen/S-$USER: Permissions denied

バージョン更新後画面4.09効果がある

関連情報