rpc.statd won't run when rootfs mounted readonly
Hi,
I have a problem with rpc.statd. We run our linux machines as diskless clients,
they mount their root fs via nfs from a server. For security reasons i would
like to export the root fs readonly. However, rpc.statd will not run. It exits
without an error message, but reports
Sep 26 15:33:48 rpc.statd[680]: Version 1.0 Starting
Sep 26 15:33:53 rpc.statd[681]: unable to register (statd, 1, udp).
via syslog.
I did an strace of the whole thing but am unable to locate the error. I append
it to this message, maybe someone can help (I am not familiar with network
programming).
########################## strace output ####################################
647 execve("/sbin/rpc.statd", ["rpc.statd"], [/* 19 vars */]) = 0
647 uname({sys="Linux", node="reno", ...}) = 0
647 brk(0) = 0x804ff74
647 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory)
647 open("/usr/local/kde/lib/i586/mmx/libwrap.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
647 stat64("/usr/local/kde/lib/i586/mmx", 0xbffff0c4) = -1 ENOENT (No such
file or directory)
647 open("/usr/local/kde/lib/i586/libwrap.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
647 stat64("/usr/local/kde/lib/i586", 0xbffff0c4) = -1 ENOENT (No such file or
directory)
647 open("/usr/local/kde/lib/mmx/libwrap.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
647 stat64("/usr/local/kde/lib/mmx", 0xbffff0c4) = -1 ENOENT (No such file or
directory)
647 open("/usr/local/kde/lib/libwrap.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
647 stat64("/usr/local/kde/lib", {st_mode=S_IFDIR|0755, st_size=17920, ...}) = 0
647 open("/usr/local/lib/i586/mmx/libwrap.so.0", O_RDONLY) = -1 ENOENT (No
such file or directory)
647 stat64("/usr/local/lib/i586/mmx", 0xbffff0c4) = -1 ENOENT (No such file or
directory)
647 open("/usr/local/lib/i586/libwrap.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
647 stat64("/usr/local/lib/i586", 0xbffff0c4) = -1 ENOENT (No such file or
directory)
647 open("/usr/local/lib/mmx/libwrap.so.0", O_RDONLY) = -1 ENOENT (No such
file or directory)
647 stat64("/usr/local/lib/mmx", 0xbffff0c4) = -1 ENOENT (No such file or
directory)
647 open("/usr/local/lib/libwrap.so.0", O_RDONLY) = -1 ENOENT (No such file or
directory)
647 stat64("/usr/local/lib", {st_mode=S_IFDIR|S_ISGID|0775, st_size=2048,
...}) = 0
647 open("/etc/ld.so.cache", O_RDONLY) = 3
647 fstat64(3, {st_mode=S_IFREG|0644, st_size=40661, ...}) = 0
647 old_mmap(NULL, 40661, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000
647 close(3) = 0
647 open("/lib/libwrap.so.0", O_RDONLY) = 3
647 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@ \0\000"...,
1024) = 1024
647 fstat64(3, {st_mode=S_IFREG|0644, st_size=24328, ...}) = 0
647 old_mmap(NULL, 29092, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001e000
647 mprotect(0x40024000, 4516, PROT_NONE) = 0
647 old_mmap(0x40024000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
0x5000) = 0x40024000
647 old_mmap(0x40025000, 420, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40025000
647 close(3) = 0
647 open("/usr/local/kde/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file
or directory)
647 open("/usr/local/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or
directory)
647 open("/lib/libnsl.so.1", O_RDONLY) = 3
647 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 ;\0\000"...,
1024) = 1024
647 fstat64(3, {st_mode=S_IFREG|0644, st_size=69472, ...}) = 0
647 old_mmap(NULL, 80988, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40026000
647 mprotect(0x40037000, 11356, PROT_NONE) = 0
647 old_mmap(0x40037000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
0x10000) = 0x40037000
647 old_mmap(0x40038000, 7260, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40038000
647 close(3) = 0
647 open("/usr/local/kde/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
647 open("/usr/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
directory)
647 open("/lib/libc.so.6", O_RDONLY) = 3
647 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\30\222"..., 1024)
= 1024
647 fstat64(3, {st_mode=S_IFREG|0755, st_size=1153784, ...}) = 0
647 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x4003a000
647 old_mmap(NULL, 1166560, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4003b000
647 mprotect(0x4014e000, 40160, PROT_NONE) = 0
647 old_mmap(0x4014e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x113000) = 0x4014e000
647 old_mmap(0x40154000, 15584, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40154000
647 close(3) = 0
647 munmap(0x40014000, 40661) = 0
647 getpid() = 647
647 brk(0) = 0x804ff74
647 brk(0x8050104) = 0x8050104
647 brk(0x8051000) = 0x8051000
647 brk(0x8054000) = 0x8054000
647 time([1033046254]) = 1033046254
647 open("/etc/localtime", O_RDONLY) = 3
647 fstat64(3, {st_mode=S_IFREG|0644, st_size=837, ...}) = 0
647 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40014000
647 read(3, "TZif\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10"..., 4096)
= 837
647 close(3) = 0
647 munmap(0x40014000, 4096) = 0
647 getpid() = 647
647 rt_sigaction(SIGPIPE, {0x40107f28, [], 0x4000000}, {SIG_DFL}, 8) = 0
647 socket(PF_UNIX, SOCK_DGRAM, 0) = 3
647 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
647 connect(3, {sin_family=AF_UNIX, path="/dev/log"}, 16) = 0
647 send(3, "<29>Sep 26 15:17:34 rpc.statd[64"..., 56, 0) = 56
647 rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
647 fork() = 648
648 setsid() = 648
648 chdir("/var/lib/nfs/" <unfinished ...>
647 _exit(0) = ?
648 <... chdir resumed> ) = 0
648 open("/dev/null", O_RDWR) = 4
648 close(0) = 0
648 dup2(4, 0) = 0
648 close(1) = 0
648 dup2(4, 1) = 1
648 close(2) = 0
648 dup2(4, 2) = 2
648 getrlimit(0x7, 0xbffffc54) = 0
648 close(3) = 0
648 close(4) = 0
[1024 file closes removed]
close(1020) = -1 EBADF (Bad file descriptor)
648 close(1021) = -1 EBADF (Bad file descriptor)
648 close(1022) = -1 EBADF (Bad file descriptor)
648 close(1023) = -1 EBADF (Bad file descriptor)
648 rt_sigaction(SIGHUP, {0x804ad5c, [HUP], SA_RESTART|0x4000000}, {SIG_DFL},
8) = 0
648 rt_sigaction(SIGINT, {0x804ad5c, [INT], SA_RESTART|0x4000000}, {SIG_DFL},
8) = 0
648 rt_sigaction(SIGTERM, {0x804ad5c, [TERM], SA_RESTART|0x4000000},
{SIG_DFL}, 8) = 0
648 rt_sigaction(SIGCHLD, {SIG_IGN}, {SIG_DFL}, 8) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3
648 getpid() = 648
648 bind(3, {sin_family=AF_INET, sin_port=htons(824),
sin_addr=inet_addr("0.0.0.0")}}, 16) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
648 ioctl(4, 0x8912, 0xbfffdc24) = 0
648 ioctl(4, 0x8913, 0xbfffdc2c) = 0
648 ioctl(4, 0x8913, 0xbfffdc2c) = 0
648 ioctl(4, 0x8913, 0xbfffdc2c) = 0
648 close(4) = 0
648 gettimeofday({1033046254, 794199}, NULL) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
648 bind(4, {sin_family=AF_INET, sin_port=htons(825),
sin_addr=inet_addr("0.0.0.0")}}, 16) = 0
648 ioctl(4, 0x5421, [1]) = 0
648 setsockopt(4, SOL_IP, IP_RECVERR, [1], 4) = 0
648 sendto(4, "\\\267\"\320\0\0\0\0\0\0\0\2\0\1\206\240\0\0\0\2\0\0\0"..., 56,
0, {sin_family=AF_INET, sin_port=htons(111),
sin_addr=inet_addr("134.102.176.57")}}, 16) = -1 EINVAL (Invalid argument)
648 close(4) = 0
648 open("/var/lib/nfs/state", O_RDWR|O_CREAT, 0600) = 4
648 read(4, "\25\0\0\0", 4) = 4
648 lseek(4, 0, SEEK_SET) = 0
648 write(4, "\27\0\0\0", 4) = 4
648 fsync(4) = 0
648 close(4) = 0
648 uname({sys="Linux", node="reno", ...}) = 0
648 gettimeofday({1033046254, 799811}, NULL) = 0
648 getpid() = 648
648 open("/etc/resolv.conf", O_RDONLY) = 4
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=51, ...}) = 0
648 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40014000
648 read(4, "search ant.uni-bremen.de\nnameser"..., 4096) = 51
648 read(4, "", 4096) = 0
648 close(4) = 0
648 munmap(0x40014000, 4096) = 0
648 socket(PF_UNIX, SOCK_STREAM, 0) = 4
648 connect(4, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1
ENOENT (No such file or directory)
648 close(4) = 0
648 open("/etc/nsswitch.conf", O_RDONLY) = 4
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=560, ...}) = 0
648 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40014000
648 read(4, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 560
648 read(4, "", 4096) = 0
648 close(4) = 0
648 munmap(0x40014000, 4096) = 0
648 open("/usr/local/kde/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No
such file or directory)
648 open("/usr/local/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
648 open("/etc/ld.so.cache", O_RDONLY) = 4
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=40661, ...}) = 0
648 old_mmap(NULL, 40661, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40014000
648 close(4) = 0
648 open("/lib/libnss_files.so.2", O_RDONLY) = 4
648 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\35\0\000"...,
1024) = 1024
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=32668, ...}) = 0
648 old_mmap(NULL, 36112, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40158000
648 mprotect(0x40160000, 3344, PROT_NONE) = 0
648 old_mmap(0x40160000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4,
0x7000) = 0x40160000
648 close(4) = 0
648 munmap(0x40014000, 40661) = 0
648 open("/etc/host.conf", O_RDONLY) = 4
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=26, ...}) = 0
648 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40014000
648 read(4, "order hosts,bind\nmulti on\n", 4096) = 26
648 read(4, "", 4096) = 0
648 close(4) = 0
648 munmap(0x40014000, 4096) = 0
648 open("/etc/hosts", O_RDONLY) = 4
648 fcntl64(4, F_GETFD) = 0
648 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=317, ...}) = 0
648 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0x40014000
648 read(4, "127.0.0.1\tnewhost\tlocalhost\n\n64."..., 4096) = 317
648 read(4, "", 4096) = 0
648 close(4) = 0
648 munmap(0x40014000, 4096) = 0
648 open("/usr/local/kde/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
648 open("/usr/local/lib/libnss_dns.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
648 open("/etc/ld.so.cache", O_RDONLY) = 4
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=40661, ...}) = 0
648 old_mmap(NULL, 40661, PROT_READ, MAP_PRIVATE, 4, 0) = 0x40014000
648 close(4) = 0
648 open("/lib/libnss_dns.so.2", O_RDONLY) = 4
648 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\r\0\000"...,
1024) = 1024
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=12176, ...}) = 0
648 old_mmap(NULL, 15144, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40161000
648 mprotect(0x40164000, 2856, PROT_NONE) = 0
648 old_mmap(0x40164000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4,
0x2000) = 0x40164000
648 close(4) = 0
648 open("/usr/local/kde/lib/libresolv.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
648 open("/usr/local/lib/libresolv.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
648 open("/lib/libresolv.so.2", O_RDONLY) = 4
648 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\'\0"...,
1024) = 1024
648 fstat64(4, {st_mode=S_IFREG|0644, st_size=56480, ...}) = 0
648 old_mmap(NULL, 65312, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x40165000
648 mprotect(0x40172000, 12064, PROT_NONE) = 0
648 old_mmap(0x40172000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4,
0xd000) = 0x40172000
648 old_mmap(0x40173000, 7968, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40173000
648 close(4) = 0
648 munmap(0x40014000, 40661) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
648 connect(4, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("134.102.176.16")}}, 28) = 0
648 send(4, ">&\1\0\0\1\0\0\0\0\0\0\4reno\3ant\nuni-bremen"..., 40, 0) = 40
648 gettimeofday({1033046254, 834117}, NULL) = 0
648 poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 5000) = 1
648 recvfrom(4, ">&\205\200\0\1\0\1\0\1\0\1\4reno\3ant\nuni-bremen"..., 1024,
0, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("134.102.176.16")}}, [16]) = 94
648 close(4) = 0
648 stat64("/var/lib/nfs/sm", {st_mode=S_IFDIR|0700, st_size=512, ...}) = 0
648 stat64("/var/lib/nfs/sm.bak", {st_mode=S_IFDIR|0700, st_size=512, ...}) = 0
648 open("/dev/null", O_RDONLY|O_NONBLOCK|O_DIRECTORY) = -1 ENOTDIR (Not a
directory)
648 open("/var/lib/nfs/sm", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
648 fstat64(4, {st_mode=S_IFDIR|0700, st_size=512, ...}) = 0
648 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
648 brk(0x8059000) = 0x8059000
648 getdents64(0x4, 0x80525e0, 0x4000, 0) = 48
648 getdents64(0x4, 0x80525e0, 0x4000, 0) = 0
648 close(4) = 0
648 open("/var/lib/nfs/sm.bak", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 4
648 fstat64(4, {st_mode=S_IFDIR|0700, st_size=512, ...}) = 0
648 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0
648 getdents64(0x4, 0x80525e0, 0x4000, 0) = 48
648 getdents64(0x4, 0x80525e0, 0x4000, 0) = 0
648 close(4) = 0
648 getsockname(0, 0xbffffc6c, [16]) = -1 ENOTSOCK (Socket operation on
non-socket)
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
648 ioctl(4, 0x8912, 0xbfffdbb4) = 0
648 ioctl(4, 0x8913, 0xbfffdbbc) = 0
648 ioctl(4, 0x8913, 0xbfffdbbc) = 0
648 ioctl(4, 0x8913, 0xbfffdbbc) = 0
648 close(4) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
648 bind(4, {sin_family=AF_INET, sin_port=htons(826),
sin_addr=inet_addr("0.0.0.0")}}, 16) = 0
648 ioctl(4, 0x5421, [1]) = 0
648 setsockopt(4, SOL_IP, IP_RECVERR, [1], 4) = 0
648 sendto(4, "l>\217\261\0\0\0\0\0\0\0\2\0\1\206\240\0\0\0\2\0\0\0\2"..., 56,
0, {sin_family=AF_INET, sin_port=htons(111),
sin_addr=inet_addr("134.102.176.57")}}, 16) = -1 EINVAL (Invalid argument)
648 close(4) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 4
648 setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
648 bind(4, {sin_family=AF_INET, sin_port=htons(0),
sin_addr=inet_addr("0.0.0.0")}}, 16) = 0
648 bind(4, {sin_family=AF_INET, sin_port=htons(827),
sin_addr=inet_addr("0.0.0.0")}}, 16) = -1 EINVAL (Invalid argument)
648 bind(4, {sin_family=AF_INET, sin_port=htons(0),
sin_addr=inet_addr("0.0.0.0")}}, 16) = -1 EINVAL (Invalid argument)
648 getsockname(4, {sin_family=AF_INET, sin_port=htons(1024),
sin_addr=inet_addr("0.0.0.0")}}, [16]) = 0
648 setsockopt(4, SOL_IP, IP_PKTINFO, [1], 4) = 0
648 getrlimit(0x7, 0xbffffb48) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 5
648 ioctl(5, 0x8912, 0xbfffdb64) = 0
648 ioctl(5, 0x8913, 0xbfffdb6c) = 0
648 ioctl(5, 0x8913, 0xbfffdb6c) = 0
648 ioctl(5, 0x8913, 0xbfffdb6c) = 0
648 close(5) = 0
648 socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 5
648 bind(5, {sin_family=AF_INET, sin_port=htons(828),
sin_addr=inet_addr("0.0.0.0")}}, 16) = 0
648 ioctl(5, 0x5421, [1]) = 0
648 setsockopt(5, SOL_IP, IP_RECVERR, [1], 4) = 0
648 sendto(5, "x\343Bq\0\0\0\0\0\0\0\2\0\1\206\240\0\0\0\2\0\0\0\1\0\0"...,
56, 0, {sin_family=AF_INET, sin_port=htons(111),
sin_addr=inet_addr("134.102.176.57")}}, 16) = -1 EINVAL (Invalid argument)
648 write(2, "Cannot register service: RPC: Un"..., 71) = 71
648 time([1033046254]) = 1033046254
648 getpid() = 648
648 rt_sigaction(SIGPIPE, {0x40107f28, [], 0x4000000}, {SIG_DFL}, 8) = 0
648 send(3, "<27>Sep 26 15:17:34 rpc.statd[64"..., 72, 0) = -1 ENOTCONN
(Transport endpoint is not connected)
648 close(3) = 0
648 socket(PF_UNIX, SOCK_DGRAM, 0) = 3
648 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
648 connect(3, {sin_family=AF_UNIX, path="/dev/log"}, 16) = 0
648 send(3, "<27>Sep 26 15:17:34 rpc.statd[64"..., 72, 0) = 72
648 rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
648 _exit(1) = ?
#############################################################################
Regards
Heinrich Rebehn
University of Bremen
Physics / Electrical and Electronics Engineering
- Department of Telecommunications -
E-mail: mailto:rebehn@ant.uni-bremen.de
Phone : +49/421/218-4664
Fax : -3341
Reply to: