I think everyone can agree there isn't much you can do about users entering in authorisation details when they shouldn't. There is no practical way to tell the difference between a hostile program and one doing what it is meant to, best you can hope for is to educate users to check before they do such things.
Luckily this means should only need to worry about software downloaded and executed, or attempting to install which in turn is something that should not be possible without human interaction to kick it off. That is not to say there haven't been cases where flaws in things like media decoders have allowed well crafted webpages and the like to trigger code execution, it's just that the open source model allows such things to be hunted and fixed easier.
Viruses that don't require any human interaction are far rarer on linux that other operating system, despite the fact the majority of servers online are running a version a linux. A lot of this is probably also to do with the fact there are so many different distros and what works against the version of software on one may not on another, however it is also do to with the fact there is just less loop holes to exploit and those that are get fixed quicker.
Edit: Of course it's not that open source, scrutinised code is immune to flaws, or sabotage, as there is a fairly famous case of one of the unix guys managed to put a backdoor into the authorisation system which wasn't spotted because it was actually a flaw in of the of the compilers (that the guy also maintained) which meant his password was always accepted. It is only known about because he admitted it some 15 years later.