3

たとえば、プログラムが root ユーザーによって *nix 環境で実行されているが、プログラムの所有者が root 以外のユーザーである場合、そのプログラムは root 権限でアクションを実行できますか?

4

3 に答える 3

3

アプリケーションの権限は、プログラムを実行したユーザーによって決定されます。

たとえば、所有者の権限が必要な場合、sudoコマンドは何の効果もありません。さらに、/bin(または他のシステムの場所) のほとんどのアプリケーションは root ユーザーによって所有されています (そのため、(簡単に) 変更することはできません) が、ユーザーのアクセス許可で実行されます。

プログラムにsetuidまたはsetgidビットが設定されている場合、アプリケーションはそれぞれユーザーまたはグループのアクセス許可で開始されることに注意してください。これにより、通常のユーザーは、root アカウントにアクセスしなくても、通常は root 権限が必要なアクションを実行できます。

setuidビットを設定するには:

chmod u+s /path/to/application

setgidビットについても同じことが言えますが、g+s代わりにu+s.

于 2013-02-27T11:42:20.337 に答える
2

デフォルトでは、プロセスはプログラム所有者 ID ではなく、プロセスを開始したユーザーの ID と権限で実行されます。したがってroot、一般ユーザーが所有するプログラムからプロセスを開始すると、そのプロセスは ID=0 で実行されます。

Johnsywebコメントで言及されているように、プログラムにビットが設定されている場合、setuid所有者として実行されます。つまり、setuidset user IDです。通常、これは通常のユーザーpingがスーパーユーザー権限を必要とするようなプログラムを実行できるようにするために行われます。

ただし、たとえば Linux には、完全な setuid の代わりに特定の選択パーミッションを付与できる" Linux Capabilities " の形式の優れたメカニズムがあることに注意してください。

于 2013-02-27T11:42:36.847 に答える
1

プログラムを開始するユーザーが、その実行の権限を決定します。別のユーザーの権限でプログラムを実行する場合は、プログラムのビットを使用suまたはsudo設定できますsetuid

chown user program
chmod u+s program

userこれにより、プログラムを実行するユーザーに関係なく、アクセス許可が強制的に使用されます。

于 2013-02-27T11:47:41.490 に答える