Bukkit permissions allow you to specify exactly who can do what on your server.
How they work
"Permissions" look like this:
You could give a user only one of those permissions, which would correspond to some function that the user would be allowed to do. By default, a user has no permissions, so the user can't do much at all, except place blocks and a few other things (which work because they don't require any permissions). Permissions are in a virtual tree, with periods (.) conventionally used to separate branches and leaves. The permission "worldedit.navigation" has the parent "worldedit" and the branch "navigation," and if you were to give "worldedit" alone, it would also give permission to "worldedit.navigation" and anything else "under" the "worldedit" node.
However, to actually give people permissions, you have to install a permissions plugin that hooks into the server and lets you define the permissions.
Minecraft comes with "op" functionality where you can just give people "op" (an on/off state) that gives them all permissions. To do that, use
/op NAME_OF_PLAYER in the server console.
WEPIF is an alternative to the Bukkit permissions system, and predates it. It was supposed to be a temporary system until Bukkit permissions were to be implemented, but that eventually turned out to take very many months, and the process was very turbulent. WEPIF has very simple built-in permissions providers that you can use if you want, though it will only work for plugins that use WEPIF (sk89q's plugins).