複数の開発者が複数のアプリケーションを操作するサーバーを設定しています。
私は特定の開発者に必要なアプリケーションディレクトリへの共有アクセスを使用しsetgid bit
、default 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
それはすべてです。
唯一の欠点は、screen
rootとして実行する必要があることですsuid
。しかし、私が知っている限り、これは基本的で正常な状況です。
別のオプションは次のとおりですscreen -S $screen_id -X multiuser on
。screen -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効果がある