No users, including myself or root, have the MANPATH environment variable set. (I'm using bash, if it matters). It says inin /etc/man.config that if the MANPATH variable is not set, then it executes the manpath command to get the man paths. That command works fine (that is, produces the appropriate directories) for all users. So this does not appear to be the problem.
However, your post led me to the manpath man page ( it's a man, man
which in turn led me to the -d option, which prints debugging info. Since I'd call this a bug, running "man -d ls" with a user who can't access the man pages yields the following:
$ man -d ls # user who can't get the page
Reading config file /etc/man.config
found man directory /usr/share/man
found man directory /usr/X11R6/man
found man directory /usr/local/man
found man directory /usr/kerberos/man
found man directory /usr/man
found manpath map /bin --> /usr/share/man
found manpath map /sbin --> /usr/share/man
found manpath map /usr/bin --> /usr/share/man
found manpath map /usr/sbin --> /usr/share/man
found manpath map /usr/local/bin --> /usr/local/man
found manpath map /usr/local/sbin --> /usr/local/man
found manpath map /usr/X11R6/bin --> /usr/X11R6/man
found manpath map /usr/bin/X11 --> /usr/X11R6/man
found manpath map /usr/bin/mh --> /usr/share/man
found manpath map /usr/kerberos/bin --> /usr/kerberos/man
found manpath map /usr/kerberos/sbin --> /usr/kerberos/man
using less as pager
path directory /sbin is in the config file
adding /usr/share/man to manpath
path directory /usr/sbin is in the config file
path directory /bin is in the config file
path directory /usr/bin is in the config file
path directory /usr/X11R6/bin is in the config file
adding /usr/X11R6/man to manpath
path directory /usr/local/bin is in the config file
adding /usr/local/man to manpath
path directory /usr/local/sbin is in the config file
adding mandatory man directories
adding /usr/man to manpath
No manual entry for ls
------------------END OUTPUT-----------------------
Here is the output for my installation-created login, which has no problem:
$ man -d ls
Reading config file /etc/man.config
found man directory /usr/share/man
found man directory /usr/X11R6/man
found man directory /usr/local/man
found man directory /usr/kerberos/man
found man directory /usr/man
found manpath map /bin --> /usr/share/man
found manpath map /sbin --> /usr/share/man
found manpath map /usr/bin --> /usr/share/man
found manpath map /usr/sbin --> /usr/share/man
found manpath map /usr/local/bin --> /usr/local/man
found manpath map /usr/local/sbin --> /usr/local/man
found manpath map /usr/X11R6/bin --> /usr/X11R6/man
found manpath map /usr/bin/X11 --> /usr/X11R6/man
found manpath map /usr/bin/mh --> /usr/share/man
found manpath map /usr/kerberos/bin --> /usr/kerberos/man
found manpath map /usr/kerberos/sbin --> /usr/kerberos/man
using less as pager
path directory /usr/local/bin is in the config file
adding /usr/local/man to manpath
path directory /bin is in the config file
adding /usr/share/man to manpath
path directory /usr/bin is in the config file
path directory /usr/X11R6/bin is in the config file
adding /usr/X11R6/man to manpath
path directory /usr/games is not in the config file
but there is a man directory nearby
adding /usr/man to manpath
path directory /home/chris/bin is not in the config file
and we found no man directory nearby
path directory /usr/java/j2sdk1.4.2_06/jre/bin is not in the config file
and we found no man directory nearby
adding mandatory man directories
using default preprocessor sequence
found tbl(1) directive
not executing command:
(cd /usr/share/man && (echo ".pl 1100i"; /usr/bin/bzip2 -c -d '/usr/share/man/man1/ls.1.bz2'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/gtbl | /usr/bin/nroff -Tlatin1 -mandoc -c | less)
-----------------END OUTPUT---------------
They are the same up until near the end, after "adding mandatory man directories". A user who can access gets the "using default preprocessor sequence", but the user who can't, doesn't. Instead he gets "adding /usr/man to manpath".
I'm still not sure what's going on.