[SUMMARY #2] Cannot perform NFS mounts

foster@bial1.ucsd.edu
Fri, 27 Mar 1998 15:01:22 -0800

This is a followup to an earlier question and summary regarding
NFS mount problems. The previous summary and original post are
below for anyone interested in all the details.

PROBLEM: When attempting to mount NFS directories, received "permission denied"
error message.

FIX: I "fixed" this by commenting out the entries for the remote systems
in the server's /etc/hosts file, without really understanding
why this worked!

UPDATE: Several people were so kind as to point out to me that the
name that is exported in /etc/dfs/dfstab on the server must
match *exactly* the name that the server sees when the request
is made for the mount.

Basically, /etc/dfs/dfstab exported using the FQDN (host.ucsd.edu)
whereas the entries in the /etc/hosts file included only the hostname.
I have updated the dfstab file to contain hostnames only, to agree
with /etc/hosts.

It was suggested that a good way to resolve such issues is to
telnet into the remote machine and run "finger" to see what
hostname it knows you by.

The administrator before me had neglected to create /etc/defaultdomain
files, and thus had to put the FQDN into /etc/dfs/dfstab to get the shares
to work. When I entered the hosts into /etc/hosts to get rsh/rlogin/etc.
to work, this broke NFS!

I have learned a lot in this past week! Thanks to those who followed up
on my summary:

Frank Cusack <fcusack@voicenet.com>
Raymond Wong <negativl@netcom.com>
David Thorburn-Gundlach <david@bae.uga.edu>
"Lee A. Fedor" <fedor@mcc.com>
Jonathan.Loh@BankAmerica.com

----- Begin Included Message -----

>From foster@bial1.ucsd.edu Thu Mar 26 19:06:29 1998
From: foster@bial1.ucsd.edu
Date: Thu, 26 Mar 1998 17:14:52 -0800
To: sun-managers@ra.mcs.anl.gov
Subject: [SUMMARY] Cannot perform NFS mounts

Original post is below. Original problem was that suddenly we could not
NFS mount directories from one of our servers, getting the dreaded
"permission denied" error. Everyone pointed to this being a problem
with the server and not the client.

Basically, the problem went away when I edited the /etc/hosts file on
the server and commented OUT the entries for the remote systems.
Can someone PLEASE explain to me why this is so? We are using DNS,
with the nameservers specified in /etc/resolv.conf. In /etc/nsswitch.conf
the entry for hosts is: "files dns".

Here are some other good suggestions I received:

1. Make sure the server is sharing the directories appropriately.
Check syntax of /etc/dfs/dfstab.

2. Could be NIS-related or DNS-related, caused by a number of
different configuration errors.

3. Check output of: "showmount -e <server>" to be sure the
directories are available for mounting.

4. One suggested that NOT having the IP/hostname in the /etc/hosts
file of the remote system can cause this behavior. I believe we
were using NFS mounts before these were entered into /etc/hosts
of the clients, so maybe this is a local configuration issue.

If anyone can shed some light on this please feel free!

5. One suggested that the systems might not "trust" each-other,
via the /etc/hosts.equiv and/or /.rhosts files. Again, I didn't
think these would be related to NFS mounts.

6. One suggested using snoop to look at packets, and check that
the remote system has the name right (FQDN vs simple name vs bad
/etc/hosts entry).

7. One person had experienced this before with an optical Jukebox,
and the problem was that the /usr/lib/nfs/mountd had to be
stopped, and then replaced by a new daemon supplied with the
Jukebox. This doesn't apply in my case, but it's useful info.

8. Check that client machine is able to resolve server name.
Put an entry in /etc/hosts for NFS server. This is what I
do not understand, BECAUSE THIS IS WHAT BROKE NFS HERE IN
THE FIRST PLACE.

9. One person suggested using the automounter, but we already
do for other directories and this was broken as well.

10. If using netgroups to restrict the shares, make sure that the
client did not get out of the netgroup.

11. Truss the mountd daemon on the server to see why it's it's
denying permission to the client (I haven't tried this yet).

BTW, someone was kind enough to send me the fix for the
"NetISAM: read error" message in /var/adm/messages. Thanks!

The problem is that the files in /TT_DB are corrupt on
the host . As root:


Suspend the rpc.ttdbserver program with:

kill -STOP <pid-#-of-rpc.ttdbserverd>

Remove all of the TT_DB directories and contents.

To get a list of all possible locations where the TT_DB directories
can exist for a host:


df -kF ufs | awk '{if (NR>1) print $6 "/TT_DB"}'

Remove them (back-quotes around the df command):

rm -rf `df -kF ufs | awk '{if (NR>1) print $6 "/TT_DB"}'`
Kill the rpc.ttdbserverd program with:

kill -KILL <pid-#-of-rpc.ttdbserverd>

The next request to rpc.ttdbserverd will restart the
program and re-create the */TT_DB files as they are
needed.

Thanks to:

Joel Lee <jlee@thomas.com>
Michael Hill <Michael_Hill@csgsystems.com>
Ross Helfand <rhelfand@Census.GOV>
Ron Kelley <rkelly@InfoAve.Net>
"Michael J. Connolly" <mjconnly@newton41.ckcorp.com>
Kevin.Sheehan@uniq.com.au (Kevin Sheehan {Consulting Poster Child})
Dennis Martens <MARTENSD@health.qld.gov.au>
Parthasarathi Palanisami <sarathip@cisco.com>
Jean-Philippe.LEROY@st.com
Ramindur Singh <ramindur@zuno.com>
Gustavo Chaves <gustavo@cpqd.com.br>

> System: Sparc5, Solaris 2.5
>
> Remote System: Sparc5, Solaris 2.5
>
> Problem:
>
> Cannot perform NFS mounts, whether listed in /etc/vfstab or
> enabled using the automounter; we get the message "Permission denied".
>
> This appears to be a problem with the local system, as the remote
> system is sharing the volumes appropriately, and we have no problem
> mounting them from other systems.
>
> I'm not sure if it could be related, but on this same system I had
> to remove all of the TT_DB tool-talk databases as one had become
> corrupted (got that "rpc.ttdbserverd[15368]: NetISAM: read failed"
> message).
>
> What follows is the truss output from the mount command which
> attempts to mount a directory that other systems have no problem
> mounting. I've put asterisks around the entries that look
> significant to me. What is strange is that mount tries to open the
> library file /usr/platform/SUNW,SPARCstation-5/lib/libc_psr.so.1
> which doesn't exist anywhere on ANY of our systems!
>
> This is the entry for /opt/AEgs in /etc/vfstab:
>
> galen:/opt/AEgs - /opt/AEgs nfs no yes hard,intr,ro,noquota
>
> If anyone has any ideas I would LOVE to hear them; this is a
> critical machine and of course access to the remote system is
> also critical. I'd rather not have to do a re-install of the OS.
>
> Thanks!
>
> Dave (and yes I will summarize!)
>
>
> # truss mount -F nfs -o hard,ro galen:/opt/AEgs /opt/AEgs
> execve("/usr/sbin/mount", 0xEFFFF390, 0xEFFFF3B0) argc = 7
> open("/dev/zero", O_RDONLY) = 3
> mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> 0xEF7C0000
> open("/usr/lib/libintl.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF04C) = 0
> mmap(0x00000000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED, 4, 0) = 0xEF7B0000
> mmap(0x00000000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF790000
> munmap(0xEF793000, 61440) = 0
> mmap(0xEF7A2000, 2416, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 8192) = 0xEF7A2000
> mmap(0xEF7A3000, 920, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
> 0) = 0xEF7A3000
> close(4) = 0
> open("/usr/lib/libc.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF04C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> mmap(0x00000000, 618496, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF6C0000
> munmap(0xEF73E000, 61440) = 0
> mmap(0xEF74D000, 28768, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED,
> 4, 512000) = 0xEF74D000
> mmap(0xEF755000, 4792, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
> 0) = 0xEF755000
> close(4) = 0
> open("/usr/lib/libw.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF04C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> mmap(0x00000000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF770000
> munmap(0xEF777000, 61440) = 0
> mmap(0xEF786000, 3136, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 24576) = 0xEF786000
> close(4) = 0
> open("/usr/lib/libdl.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF04C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> close(4) = 0
> *****************************************************************************
> open("/usr/platform/SUNW,SPARCstation-5/lib/libc_psr.so.1", O_RDONLY) Err#2
> ENOENT
> *****************************************************************************
> close(3) = 0
> brk(0x00026C38) = 0
> brk(0x00028C38) = 0
> getuid() = 0 [0]
> stat("/opt/AEgs", 0xEFFFF150) = 0
> readlink("/opt", 0xEFFFED74, 1025) Err#22 EINVAL
> readlink("/opt/AEgs", 0xEFFFED74, 1025) Err#22 EINVAL
> access("/usr/lib/fs/nfs/mount", 0) = 0
> execve("/usr/lib/fs/nfs/mount", 0xEFFFF2FC, 0xEFFFF3BC) argc = 5
> open("/dev/zero", O_RDONLY) = 3
> mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 3, 0) =
> 0xEF7C0000
> open("/usr/lib/librpcsvc.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0x00000000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED, 4, 0) = 0xEF7B0000
> mmap(0x00000000, 90112, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF790000
> munmap(0xEF796000, 61440) = 0
> mmap(0xEF7A5000, 1280, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 20480) = 0xEF7A5000
> close(4) = 0
> open("/usr/lib/libnsl.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> mmap(0x00000000, 524288, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF700000
> munmap(0xEF760000, 61440) = 0
> mmap(0xEF76F000, 36557, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED,
> 4, 389120) = 0xEF76F000
> mmap(0xEF778000, 31408, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED,
> 3, 0) = 0xEF778000
> close(4) = 0
> open("/usr/lib/libintl.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> mmap(0x00000000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF6E0000
> munmap(0xEF6E3000, 61440) = 0
> mmap(0xEF6F2000, 2416, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 8192) = 0xEF6F2000
> mmap(0xEF6F3000, 920, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
> 0) = 0xEF6F3000
> close(4) = 0
> open("/usr/lib/libc.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> mmap(0x00000000, 618496, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF640000
> munmap(0xEF6BE000, 61440) = 0
> mmap(0xEF6CD000, 28768, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED,
> 4, 512000) = 0xEF6CD000
> mmap(0xEF6D5000, 4792, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3,
> 0) = 0xEF6D5000
> close(4) = 0
> open("/usr/lib/libdl.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0xEF7B0000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF7B0000
> close(4) = 0
> open("/usr/lib/libmp.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0x00000000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED, 4, 0) = 0xEF630000
> mmap(0x00000000, 77824, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF610000
> munmap(0xEF613000, 61440) = 0
> mmap(0xEF622000, 3318, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 8192) = 0xEF622000
> close(4) = 0
> open("/usr/lib/libw.so.1", O_RDONLY) = 4
> fstat(4, 0xEFFFF05C) = 0
> mmap(0xEF630000, 4096, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_FIXED, 4, 0) =
> 0xEF630000
> mmap(0x00000000, 94208, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF5F0000
> munmap(0xEF5F7000, 61440) = 0
> mmap(0xEF606000, 3136, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4,
> 24576) = 0xEF606000
> close(4) = 0
> *****************************************************************************
> open("/usr/platform/SUNW,SPARCstation-5/lib/libc_psr.so.1", O_RDONLY) Err#2
> ENOENT
> *****************************************************************************
> close(3) = 0
> munmap(0xEF630000, 4096) = 0
> getuid() = 0 [0]
> brk(0x00025778) = 0
> brk(0x00027778) = 0
> open("/etc/netconfig", O_RDONLY) = 3
> fstat(3, 0xEFFFE998) = 0
> brk(0x00027778) = 0
> brk(0x00029778) = 0
> ioctl(3, TCGETA, 0xEFFFE924) Err#25 ENOTTY
> read(3, " #\n # T h e " N e t".., 8192) = 1064
> read(3, 0x00026194, 8192) = 0
> lseek(3, 0, SEEK_CUR) = 1064
> lseek(3, 0, SEEK_SET) = 0
> read(3, " #\n # T h e " N e t".., 8192) = 1064
> read(3, 0x00026194, 8192) = 0
> lseek(3, 0, SEEK_CUR) = 1064
> close(3) = 0
> open("/etc/.name_service_door", O_RDONLY) = 3
> fcntl(3, F_SETFD, 0x00000001) = 0
> door_info(3, 0xEF6D4F18) = 0
> door_call(3, 0xEFFFCCB0, 0x00002000, 0x00000062, 0x00000000) = 0
> open("/dev/udp", O_RDWR) = 4
> ioctl(4, I_FIND, "timod") = 0
> sigfillset(0xEF6D571C) = 0
> sigprocmask(SIG_BLOCK, 0xEFFFECD0, 0xEFFFED80) = 0
> ioctl(4, I_PUSH, "timod") = 0
> sigprocmask(SIG_SETMASK, 0xEFFFED70, 0xEFFFED60) = 0
> ioctl(4, I_STR, 0xEFFFEB78) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFED60, 0xEFFFED40) = 0
> ioctl(4, I_FLUSH, FLUSHRW) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFED80, 0x00000000) = 0
> sigprocmask(SIG_BLOCK, 0xEFFFECC0, 0xEFFFED60) = 0
> ioctl(4, I_STR, 0xEFFFECC0) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFED60, 0x00000000) = 0
> getrlimit(RLIMIT_NOFILE, 0xEFFFECA8) = 0
> brk(0x00029778) = 0
> brk(0x0002D778) = 0
> sigprocmask(SIG_BLOCK, 0xEFFFEBB0, 0xEFFFEC80) = 0
> ioctl(4, I_STR, 0xEFFFEBB0) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEC80, 0x00000000) = 0
> brk(0x0002D778) = 0
> brk(0x0004D778) = 0
> getpid() = 505 [504]
> sigprocmask(SIG_BLOCK, 0xEFFFEB20, 0xEFFFEC80) = 0
> ioctl(4, I_STR, 0xEFFFEC44) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEC80, 0x00000000) = 0
> putmsg(4, 0xEFFFECDC, 0xEFFFEE44, 0) = 0
> poll(0x0002CDBC, 1, 15000) = 1
> getmsg(4, 0xEFFFECF8, 0x00027B40, 0xEFFFED44) = 0
> putmsg(4, 0xEFFFEE8C, 0xEFFFEFF4, 0) = 0
> poll(0x0002CDBC, 1, 10000) = 1
> getmsg(4, 0xEFFFEEA8, 0x00027B40, 0xEFFFEEF4) = 0
> getuid() = 0 [0]
> sigprocmask(SIG_BLOCK, 0xEFFFEE08, 0xEFFFEEB8) = 0
> ioctl(4, I_NREAD, 0xEFFFEE14) = 0
> ioctl(4, I_STR, 0xEFFFEE08) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEEB8, 0x00000000) = 0
> ioctl(4, I_FLUSH, FLUSHRW) = 0
> sigprocmask(SIG_BLOCK, 0xEFFFED58, 0xEFFFEEB8) = 0
> ioctl(4, I_STR, 0xEFFFEE7C) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEEB8, 0x00000000) = 0
> sigprocmask(SIG_BLOCK, 0xEFFFED58, 0xEFFFEEB8) = 0
> ioctl(4, I_STR, 0xEFFFEE7C) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEEB8, 0x00000000) = 0
> getpid() = 505 [504]
> sigprocmask(SIG_BLOCK, 0xEFFFEE18, 0xEFFFEEB8) = 0
> ioctl(4, I_STR, 0xEFFFEE18) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFEEB8, 0x00000000) = 0
> uname(0xEFFFEA10) = 1
> getuid() = 0 [0]
> getgid() = 1 [1]
> getgroups(16, 0xEFFFEF78) = 12
> putmsg(4, 0xEFFFEF0C, 0xEFFFF074, 0) = 0
> poll(0x0002CDBC, 1, 15000) = 1
> getmsg(4, 0xEFFFEF28, 0x00027B40, 0xEFFFEF74) = 0
> brk(0x0004D778) = 0
> brk(0x0004F778) = 0
> *****************************************************************************
> open("/usr/dt/lib/nls/msg/C/SUNW_OST_OSLIB.cat", O_RDONLY) Err#2 ENOENT
> open("/usr/lib/locale/C/LC_MESSAGES/SUNW_OST_OSLIB.mo", O_RDONLY) Err#2 ENOENT
> Permission deniedwrite(2, " P e r m i s s i o n d".., 17) = 17
> *****************************************************************************
>
> write(2, "\n", 1) = 1
> sigprocmask(SIG_SETMASK, 0xEFFFF028, 0xEFFFF018) = 0
> close(4) = 0
> sigprocmask(SIG_SETMASK, 0xEFFFF018, 0xEFFFEFF8) = 0
> lseek(0, 0, SEEK_CUR) = 107132
> _exit(33)
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> David S. Foster Univ. of California, San Diego
> Programmer/Analyst Brain Image Analysis Laboratory
> foster@bial1.ucsd.edu Department of Psychiatry
> (619) 622-5892 8950 Via La Jolla Drive, Suite 2240
> La Jolla, CA 92037
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
David S. Foster Univ. of California, San Diego
Programmer/Analyst Brain Image Analysis Laboratory
foster@bial1.ucsd.edu Department of Psychiatry
(619) 622-5892 8950 Via La Jolla Drive, Suite 2240
La Jolla, CA 92037
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

----- End Included Message -----

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
David S. Foster Univ. of California, San Diego
Programmer/Analyst Brain Image Analysis Laboratory
foster@bial1.ucsd.edu Department of Psychiatry
(619) 622-5892 8950 Via La Jolla Drive, Suite 2240
La Jolla, CA 92037
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~