Yes, people should fight back when are attacked, because it's better for the attacker to get hurt than the victim. If a person attacks you, fighting back is fair. They started it, and you have a right to not be hurt by another person. If the person attacks you, justice dictates that they are hurt instead.
Sometimes when you are attacked, you have no other choice but to fight back. In fact, in some situations it is the only ethical thing to do. How is it ethical to allow yourself to be assaulted or killed? Or to demand everything allow this to happen to them? Reality doesn't agree with absolute pacifism.
Run or hide. Only fight if there is no other recourse. The reason is simple: to minimize injury to yourself, and potentially to bystanders. Fighting seems attractive but the truth of the matter is that it is rarely effective. It is, of course, justifiable as self-defense--just not the smartest move.