標準の RExec クラスよりも、若干、もっと緩めたポリシを 望んでいるとしましょう。例えば、もし /tmp 内のファイルへの書き込みを 喜んで許すならば、RExec クラスを次のように サブクラス化できます:
class TmpWriterRExec(rexec.RExec):
def r_open(self, file, mode='r', buf=-1):
if mode in ('r', 'rb'):
pass
elif mode in ('w', 'wb', 'a', 'ab'):
# ファイル名をチェックします : /tmp/ で始まらなければなりません
if file[:5]!='/tmp/':
raise IOError, " /tmp 以外へは書き込みできません"
elif (string.find(file, '/../') >= 0 or
file[:3] == '../' or file[-3:] == '/..'):
raise IOError, "ファイル名の '..' は禁じられています"
else: raise IOError, "open() モードが正しくありません"
return open(file, mode, buf)