Mettiamo di voler imporre una condotta un pò meno rigida rispetto alla classe RExec predefinita. Per esempio, se vogliamo permettere la scrittura di file in /tmp, possiamo derivare la classe 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'): # controlla il nome del file: deve iniziare con /tmp/ if file[:5]!='/tmp/': raise IOError, "can't write outside /tmp" elif (string.find(file, '/../') >= 0 or file[:3] == '../' or file[-3:] == '/..'): raise IOError, "'..' in filename forbidden" else: raise IOError, "Illegal open() mode" return open(file, mode, buf)