私は安全なことをしようとしています、そしてそれがそれらを必要としないときにその特権を落とすためにrootとして実行する必要があるプログラムを持っています。chmod
これは、SUIDビットを使用してバイナリをrootに属する場合にうまく機能します。これは、UID =一部のユーザー、EUID = rootであるため、とを使用seteuid(0)
しseteuid(getuid())
て管理者権限をそれぞれ上げたり下げたりできます。
しかしsudo
、SUIDを設定する代わりにを使用すると、UID == EUID == 0になるため、呼び出しseteuid(getuid())
ても効果はありません。UID
また、ランダムなユーザーから値を変更することはできません。mansetuid()
ページには、rootとして実行されているプログラムから呼び出された場合、特権が永久に失われ、元に戻される見込みがないことが明記されています。
では、を使用して実行すると、プログラムの特権が一時的に失われるようにするにはどうすればよいsudo
ですか?