/tmp でファイルを開くときに root 権限が失われるという問題が発生しています。問題の行は次のとおりです。
open(filepath, 'wb')
プログラムがsudoコマンドで実行されていない場合、すべてが正常に機能し、os.statの場合の権限は次のとおりです
posix.stat_result(st_mode=17407, st_ino=261652, st_dev=64512L, st_nlink=206, st_uid=1000, st_gid=1000, st_size=12288, st_atime=1352314677, st_mtime=1352316340, st_ctime=1352316340)
プログラムを sudo コマンドで実行すると問題が発生します。次の権限を削除しようとしました
os.setegid(int(os.getenv("SUDO_GID")))
os.seteuid(int(os.getenv("SUDO_UID")))
そしてそれらを再び有効にします
os.seteuid(0)
os.setegid(0)
エラーメッセージは
IOError: [Errno 13] Permission denied:
os.stat 利回り
posix.stat_result(st_mode=17407, st_ino=261652, st_dev=64512L, st_nlink=204, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1352314677, st_mtime=1352316329, st_ctime=1352316329)
理想的には、ユーザーが sudo を呼び出さなかったかのように、root 権限を削除して有効にすることで、特定の機能を実行したいと考えています。