Overloading backticks and system might not be enough. What is to stop people writing a script (in Perl, ksh, or anything else) which does the nasty things, and calling that?
How are the commands getting into the Perl script? If they are coming-in as strings from the user then it is not really neessary to overload back-ticks or system(), just test the string before you execute it - probably something you should do anyway.
If the user write her own scripts then I can't see how you can prevent them calling anything they want - unless you trap them in a restricted environment. That is then more of an administrator problem than a Perl one.