さて、やっとここに書く時間がとれた。

chmod()を使うからいけないんだと思うですよ。
fchmod()を使って、アトミックにすべきかと。

6.10. 競合状態を避ける
http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/avoid-race.html
より引用。

他の例として、ファイルのメタ情報をいろいろ操作する作業を行う場合(オーナーの変更、
ファイルの状態確認、パーミッションビットの変更等)、まずファイルを開いて、開いたファイルに
対して操作してください。つまりこれは、chown()や chgrp()、chmod()のようなファイル名を
受けとる関数ではなく、fchown()や fstat()、fchmod()システムコールを使うことを意味して
います。こうすることで、プログラムが動作している間にファイルの置き換わりを防げます
(おそらく競合状態も)。たとえば、あるファイルを閉じてから、chmod()を使ってパーミッションを
変更すると、攻撃者はその 2 ステップ間にそのファイルを移動もしくは削除し、別のファイルに
対してシンボリックリンクを張ってしまえるかもしれません(たとえば、 /etc/passwd に対して)。