
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
file
userBがおよびを実行している場合、実行可能ファイルにはfile2
どのグループ権限がありますか?実行可能ファイルにユーザー/グループ権限があるかどうかはわかりません。両方呼び出し元とファイルの所有者または権限が「代替」されているかどうか。
setuidとsetgidは一般的に "catch-all"アプリケーションを呼び出すために使用されるので、これは愚かな例であることを知っていますが、この例ではsetuidとsetgidが実際にどのように機能するかについてより良い概念を提供したいと思います。
答え1
setuid
有効なUID設定UID。
setgid
有効GID設定エジド。
どちらの場合も、呼び出し元 uid と gid はそのまま残ります。したがって、おおよそ言うと、呼び出し元のuidと(アクティブ)gidに加えてuid / gidも得られます。
これをよく区別するプログラムがあります。
システムにログインした後、su
rootを実行してaを実行すると、who am i
「古い」アカウントが表示されます。
su
これはsuidバイナリの1つであり、変更されます。UID。
答え2
私が知っている限り:
実行可能ファイルは、
setuid
実行可能ファイルの所有者であり、呼び出し元のグループとして実行されます。実行可能ファイルの所有者に対するグループ権限がありません。実行
setgid
ファイルは呼び出し元として実行されます。グループセットには、呼び出し元のグループと実行可能ファイルのグループが含まれます。
(もちろん、Ubuntu 10.04でテストしました。)