setuidとsetgidが混同される

setuidとsetgidが混同される

setuidとsetgidの概念を完全に理解しようとしていますが、実際に権限を昇格する方法がわかりません。たとえば、見てみましょう。

ユーザー

userA (groups: userA groupA)
userB (groups: userB groupB GroupC)

実行可能ファイル

Permission owner group  filename
-rws-----x userA groupD file
-rwsrws--x userA groupD file2

fileuserBがおよびを実行している場合、実行可能ファイルにはfile2どのグループ権限がありますか?実行可能ファイルにユーザー/グループ権限があるかどうかはわかりません。両方呼び出し元とファイルの所有者または権限が「代替」されているかどうか。

setuidとsetgidは一般的に "catch-all"アプリケーションを呼び出すために使用されるので、これは愚かな例であることを知っていますが、この例ではsetuidとsetgidが実際にどのように機能するかについてより良い概念を提供したいと思います。

答え1

setuid有効なUID設定UIDsetgid有効GID設定エジド

どちらの場合も、呼び出し元 uid と gid はそのまま残ります。したがって、おおよそ言うと、呼び出し元のuidと(アクティブ)gidに加えてuid / gidも得られます。

これをよく区別するプログラムがあります。

システムにログインした後、surootを実行してaを実行すると、who am i「古い」アカウントが表示されます。

suこれはsuidバイナリの1つであり、変更されます。UID

答え2

私が知っている限り:

  • 実行可能ファイルは、setuid実行可能ファイルの所有者であり、呼び出し元のグループとして実行されます。実行可能ファイルの所有者に対するグループ権限がありません。

  • 実行setgidファイルは呼び出し元として実行されます。グループセットには、呼び出し元のグループと実行可能ファイルのグループが含まれます。

(もちろん、Ubuntu 10.04でテストしました。)

関連情報