As root:
chown u1:u1 f1.txt
chmod 400 f1.txt
This will ensure that the file is owned by user u1 (chown) and group u1 (assuming that user u1's default group is u1) and that only that user can read the file (chmod). If you would like the user to be able to write to the file, change 400 to 600.
You can add a second user to the default group of the first user with:
useradd -G u1 u2
The above command assumes that user u1's default group is also called u1 and the second user is u2.
Now we change the permissions on f1.txt to allow members of group u1 read access (the second "4" in 400 is group permissions):
chmod 440 f1.txt
Each of the three digits following the chmod command represents the permissions for the owner (first digit), the group (second digit), and all other users (third digit) on the system. A value of 1 is the execute permission, 2 is the write permission and 4 is the read permission. You add add these numbers together to "mix" these three types of permissions. Example, 4 (read) + 1 (execute) = 5, so to allow the owner and the group to read and execute the file but restrict access to everyone else you would use 550, to allow the owner to read and write to the file and the group and all other users to read the file, you would use 644.
There are other formats to setting permissions, type:
man chmod
at the command prompt for more details.
I agree with @webdestroya, and additionally I'd strongly advice you to read my answer. I takes care of your update too. With Access Control Lists you get what you fine grained control on file and directory access. – Peter Jaric – 2010-05-31T19:47:16.313