Segmentation fault on basic linux commands

Hello out there!!!

I have a Red Hat Entreprise Linux 4 server and I am encountering this error

# grep
Segmentation Fault

I know it is not the right use of grep command, but I did that just for testing purpose,then I did

# which grep
/bin/grep
# ls -l /bin/grep
-rwxr-xr-x 1 root root 79800 Aug 10 11:45 /bin/grep

Notice that Aug 10,11:45 it's the current server's date, and when i do cat /bin/grep, it seems I am rewriting this file each time.

This same thing happens with some other commads (like cp for example).
My question is how can I stop segmentation fault to happen again? I've also updated grep
command using rpm package that came with the recovery CD,but it only works for a while.
And also, I would like to know where can I find an rpm package repository for RHEL 4?, on the web, because my CD's (4) don't have all the rpms.

Thanks in advance for your help.
Any comments would be greatly appreciated.

Are you running as root? It sounds like cat is changing the executable somehow.

First rule of thumb - only run as root when you absolutely have to.

ls -ld /bin does this show as a link like this:

ls -ld /bin
lrwxrwxrwx   1 root     root           9 Jun 16  2008 /bin -> ./usr/bin

For me it is not a link:
there you have it.

ls -ld /bin
drwxr-xr-x 2 user dba 4096 Aug 7 16:03 /bin

One more thing I tried to update grep package again, and I couldn't.
It says grep is already installed, (I know that) and then tried

rpm -Uf grep-2.5.1-32.2.i386.rpm
and it's the same. I was able to update the package using the line above,
but now I can't.

Is it just me or are these permissions way off? Why is the user 'user' the owner of the /bin directory?

I'd suggest doing a md5sum and sha1sum against the /bin directory on a known clean machine and compare the values against what you have here (ideally from a rescue disk/recovery CD)

I agree, you ran with elevated permissions and trashed your distribution.
/bin IS a link RHEL 4. It is not owned by user. Ever.

Consider learning unix commands while running as a user with minimum permissions next time.