FromNandの日記

自分的備忘録

pオプションとsetresuid()について

まず、権限下げがない場合について

ノーマルはX
pオプションはO
setresuidはO
pオプション+setresuidはO

次に、権限下げがあった場合について

ノーマルはX
pオプションはX
setresuidはO
pオプション+setresuidはO

/bin/shや/bin/bashを起動する際に、実UIDと実行UIDが異なる場合は、/bin/shや/bin/bashが実行UIDに実UIDをセットしてしまうのは本当。
→権限下げがない場合のノーマルはXなのに対して、権限下げがない場合のpオプションはOであるから

pオプションは/bin/shや/bin/bashの権限下げには対応できるが、ターゲットプログラム内の権限下げには対応できない
→権限下げがない場合のpオプションはOであるが、権限下げがある場合のpオプションはXであるから

setresuidは/bin/shや/bin/bashの権限下げと、ターゲットプログラム内の権限下げの両方に対応している
→権限下げがない場合のsetresuidも、権限下げがある場合のsetresuidもOであるから

つまり、setresuidを使えば、pオプションを使う必要はない