I am using firefox 9.0.1 under ubuntu 11.10. Suppose I am lying that I am using internet explorer 8 under windows vista. (by manipulating http request headers). Is there any way for the server to find this out? (at least the fact that I am using Ubuntu not Microsoft Windows)
I know it is possible if javascript is on. Suppose I have switched off the javascript engine of my browser.

Suppose I am the owner of the server. Will I be able to find out, if somebody is faking the user agent string?

There is one way. I can send a javascript file to the client which will execute at the browser and tell me the truth. But what to do if the user has turned off javascript altogether? Will the log files in my server give some clue (at least that some faking taking place)?

In some browsers you can change the user agent, not even javascript will detect the difference. Try it your self if you want:

maybe checking window.navigator.oscpu, you can detect the OS but I think this also is fakeable.. perhaps with flash or a java applet you can detect the right browser, but I'm not sure if this is real possible and how to do it.