[Bug 535517] Re: netatalk fails to generate unique server signatures
dmarks
535517 at bugs.launchpad.net
Tue May 2 18:46:57 UTC 2023
For the record: This bug was fixed with v2.1.0 --
https://sourceforge.net/p/netatalk/bugs/362/
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to coreutils in Ubuntu.
https://bugs.launchpad.net/bugs/535517
Title:
netatalk fails to generate unique server signatures
Status in coreutils package in Ubuntu:
Invalid
Status in eglibc package in Ubuntu:
New
Status in glibc package in Ubuntu:
New
Status in netatalk package in Ubuntu:
Triaged
Bug description:
Binary package hint: netatalk
Description: Ubuntu 9.10
Release: 9.10
ii netatalk
2.0.4~beta2-5ubuntu2 AppleTalk user
binaries
NetATalk fails to generate a unique server signature. Analysis of
client/server communication reveals that both NetATalk servers here
report the signature 01017F0001017F0001017F0001017F00 . This confuses
Mac clients, resulting in them apparently randomly directing AFP
requests to one server or the other. Users will connect to SERVER1 and
get a volume list from SERVER2 or vice versa.
The netatalk code for generating server signatures
(etc/afpd/status.c:191) uses the libc gethostid() call to obtain a
32-bit unique identifier for the host.
GNU Libc's man page for gethostid(3) notes that:
"In the glibc implementation, the hostid is stored in the file /etc/hostid. (In glibc versions before 2.2, the file /var/adm/hostid was used.)
"In the glibc implementation, if gethostid() cannot open the file containing the host ID, then it obtains the hostname using gethostname(2), passes that hostname to gethostbyname_r(3) in order to obtain the host's IPv4
address, and returns a value obtained by bit-twiddling the IPv4 address. (This value may not be unique.)"
Ubuntu systems do not have any /etc/hostid by default, so glibc falls
back on gethostbyname_r(3). However, Ubuntu systems' /etc/hosts files
map the hostname to 127.0.0.1:
127.0.0.1 localhost
127.0.1.1 HOSTNAME.localnet HOSTNAME
so gethostbyname_r for the hostname in /etc/hostname will always
return 127.0.0.1 . gethostid(3) will therefore always return the same
value, and NetATalk's system id will always be the same on different
Ubuntu hosts.
WORKAROUND:
To each line in your afpd.conf, append an
explicit:
-signature user:SERVERNAME
(if you have more than one line in afpd.conf, make sure the signature is
unique for each one).
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/535517/+subscriptions
More information about the foundations-bugs
mailing list