RExec クラスには以下のクラス属性があります。それらは、 __init__() メソッドが使います。それらを既存の インスタンス上で変更しても何の効果もありません;そうする代わりに、 RExec のサブクラスを作成して、そのクラス定義でそれらに 新しい値を割り当てます。そうすると、新しいクラスのインスタンスは、 これらの新しい値を使用します。これらの属性のすべては、文字列のタプルです。
('open', 'reload', '__import__')
です。
(これは例外です。というのは、組み込み関数のほとんど大多数は
無害だからです。この変数をオーバライドしたいサブクラスは、
基本クラスからの値から始めて、
追加した許されない関数を連結して
いかなければなりません - 危険な関数が新しく Python に追加された時は、
それらも、このモジュールに追加します。)
('audioop', 'array', 'binascii',
'cmath', 'errno', 'imageop', 'marshal', 'math', 'md5', 'operator',
'parser', 'regex', 'select', 'sha', '_sre', 'strop',
'struct', 'time')
です。この変数をオーバーライドする場合も、
同様な注意が適用されます - 基本クラスからの値を使って始めます。
sys.path
と同一です。
('error', 'fstat', 'listdir',
'lstat', 'readlink', 'stat', 'times', 'uname', 'getpid', 'getppid',
'getcwd', 'getuid', 'getgid', 'geteuid', 'getegid')
です。
('ps1', 'ps2',
'copyright', 'version', 'platform', 'exit', 'maxint')
です。
(C_EXTENSION,
PY_SOURCE)
です。サブクラスで PY_COMPILEDを追加することは推奨されません;
攻撃者が、バイトコンパイルしたでっちあげのファイル(.pyc)を、
例えば、あなたの公開 FTP サーバの /tmp に書いたり、
/incoming にアップロードしたりして、とにかくあなたのファイルシステム内に
置くことで、制限された実行モードから抜け出ることができるかもしれないからです。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。