web-dev-qa-db-ja.com

異なるユーザーとしてアプリケーションを実行する

  1. 同じアプリケーションを異なるユーザーで実行できますか?例:Linuxプラットフォームで/home/usr1/App1/home/Usr2/App1の両方で実行されているApp1?
  2. 2人の異なるユーザーに同じUIDを設定できますか?例:/home/usr1/App1/home/usr2/App2、つまり、同じUIDを持つUsr1とUsr2 ??はいの場合、それを行う方法は?
  3. アプリケーションをあるユーザーから別のユーザーに切り替えることはできますか。たとえば、/home/usr1で実行されているapp1は/home/usr2に切り替えることができます。
1
sgpdglb

個別の質問を個別に投稿することをお勧めします。ただし、これらはすべてすばやく回答できるため(そして関連しているため)、そうしました。

  1. 同じアプリケーションが、異なるユーザーによって、異なる時間に、または同時に実行される場合があります。アプリケーションは同じ場所から(両方のユーザーがそれを実行するためのアクセス権を持っている限り)を実行するか、別のコピーを(例のように)異なる場所から実行できます。

  2. 2人の異なるユーザーできません UIDを共有します。 UIDは、実際にはユーザー名よりもユーザーID(したがって名前)の中心にあります。 ファイルまたはフォルダを所有 の場合、ファイルシステムには、ユーザー名ではなく、ファイルに関連付けられたUIDが含まれます。同じUIDを持つ2人のユーザーがいることは、複数の名前を持つ1人のユーザーがいることを意味します(これもサポートされていません)。

  3. はい、ユーザーIDを切り替えることができます。 Sudo -u other-user command...または(現在rootの場合、またはターゲットユーザーがログインを有効にしていてパスワードを知っている場合)su other-user -c 'command...'を使用できます。これらのコマンドは自分で呼び出すことができますが、スクリプトやアプリケーションでも使用できます。

    これがどのように機能し、どのように使用するかの詳細については、 コミュニティのドキュメントman Sudo 、および man su を参照してください。 。作成しているプログラムでは、setuid関数を使用することもできます。 man 2 setuid および man 3 setuid を参照してください。グラフィカルアプリケーションを実行するには、gksuおよびgksudoを直接呼び出す代わりに、kdesudo/suまたは(Kubuntuの場合)Sudoを使用する必要があります(ただし、UbuntuではデフォルトでgksuSudoではなくsuを呼び出すことに注意してください。 コミュニティドキュメントのこのセクションman gksugksudoもカバー)、および man kdesudo を参照してください。 =。

    ユーザーを変更するプログラムやスクリプトを作成する前に、UnixライクなシステムでユーザーIDがどのように機能するかをよく読んでおくことをお勧めします。

2
Eliah Kagan