d71b808a96
1997-12-08 03:24 Ulrich Drepper <drepper@cygnus.com> * Makeconfig: Define $(rt) to rt if linuxthreads is available. * Makefile (subdirs): Replace rt by $(rt). * shlib-versions: Use version .2 for NSS modules. * grp/fgetgrent_r.c (LINE_PARSER): Call parse_line with extra argument. * pwd/fgetpwent_r.c: Likewise. * spwd/fgetspent_r.c: Likewise. * spwd/sgetspent_r.c: Likewise. * hesiod/nss_hesiod/hesiod-grp.c (lookup): Add new argument. Store error number in *ERRNOP. Little optimization. * hesiod/nss_hesiod/hesiod-pwd.c: Likewise. * hesiod/nss_hesiod/hesiod-service.c: Likewise. * inet/getnetgrent_r.c (__internal_setnetgrent_reuse): Likewise. (__internal_getnetgrent_r): New argument. Call __internal_setnetgrent_reuse with new argument. (__getnetgrent_r): Call __internal_getnetgrent_r with new argument. * inet/netgroup.h: Add argument to prototypes. * nis/nisplus-parser.h: Likewise. * nis/nss_compat/compat-grp.c: Change everything to store error code through provided pointer and not use errno. * nis/nss_compat/compat-pwd.c: Likewise. * nis/nss_compat/compat-spwd.c: Likewise. * nis/nss_nis/nis-alias.c: Likewise. * nis/nss_nis/nis-ethers.c: Likewise. * nis/nss_nis/nis-grp.c: Likewise. * nis/nss_nis/nis-hosts.c: Likewise. * nis/nss_nis/nis-netgrp.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-publickey.c: Likewise. * nis/nss_nis/nis-pwd.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-service.c: Likewise. * nis/nss_nis/nis-spwd.c: Likewise. * nis/nss_nisplus/nisplus-alias.c: Likewise. * nis/nss_nisplus/nisplus-ethers.c: Likewise. * nis/nss_nisplus/nisplus-grp.c: Likewise. * nis/nss_nisplus/nisplus-hosts.c: Likewise. * nis/nss_nisplus/nisplus-netgrp.c: Likewise. * nis/nss_nisplus/nisplus-network.c: Likewise. * nis/nss_nisplus/nisplus-parser.c: Likewise. * nis/nss_nisplus/nisplus-proto.c: Likewise. * nis/nss_nisplus/nisplus-publickey.c: Likewise. * nis/nss_nisplus/nisplus-pwd.c: Likewise. * nis/nss_nisplus/nisplus-rpc.c: Likewise. * nis/nss_nisplus/nisplus-service.c: Likewise. * nis/nss_nisplus/nisplus-spwd.c: Likewise. * nss/nss_db/db-XXX.c: Likewise. * nss/nss_db/db-alias.c: Likewise. * nss/nss_db/db-netgrp.c: Likewise. * nss/nss_files/files-XXX.c: Likewise * nss/nss_files/files-alias.c: Likewise * nss/nss_files/files-netgrp.c: Likewise * nss/nss_files/files-parse.c: Likewise * nss/getXXbyYY_r.c: Call with __errno_location() as value for new parameter of get functions. * nss/getXXent_r.c: Likewise. * localedata/tst-fmon.c: Print debug info if test fails. * rt/Makefile (routines): Add aio_notify. * rt/aio.h: Remove non-public definitions. Add aioinit stuff. * rt/aio_cancel.c: Rewrite to support lio_listio and aio_suspend. * rt/aio_fsync.c: Likewise. * rt/aio_misc.c: Likewise. * rt/aio_misc.h: Likewise. * rt/aio_read.c: Likewise. * rt/aio_read64.c: Likewise. * rt/aio_suspend.c: Likewise. * rt/aio_write.c: Likewise. * rt/aio_write64.c: Likewise. * rt/lio_listio.c: Likewise. * rt/lio_listio64.c: Likewise. * rt/aio_notify.c: New file. * sysdeps/generic/bits/sigset.h: Pretty print. * sysdeps/posix/pwrite.c: Define weak alias only if function is really defined as __pwrite. * sysdeps/unix/sysv/linux/pread.c: Rewrite to use syscall directly instead of pread64. * sysdeps/unix/sysv/linux/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir)=signal] (sysdep_routines): Add rt_sigpending and rt_sigreturn. * sysdeps/unix/sysv/linux/sigaction.c: Use correct value for sigset_t size in syscall. * sysdeps/unix/sysv/linux/sigpending.c: Likewise. * sysdeps/unix/sysv/linux/sigprocmask.c: Likewise. * sysdeps/unix/sysv/linux/sigreturn.c: Likewise. * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise. * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise. * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. Take care for ACT being NULL. * sysdeps/unix/sysv/linux/syscalls.list: Don't mention user for RT signals. * sysdeps/unix/sysv/linux/i386/s_pread64.s: Return ENOSYS if __NR_pread is not defined. * sysdeps/unix/sysv/linux/i386/s_pwrite64.s: Return ENOSYS if __NR_pwrite is not defined. 1997-12-07 11:15 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> * nis/nss_compat/compat-grp.c: If buffer is to small, set the file handle for /etc/group back in some more cases. * nis/nss_compat/compat-pwd.c: If buffer is to small, set the file handle for /etc/passwd back in some more cases. * nis/nss_compat/compat-spwd.c: If buffer is to small, set the file handle for /etc/shadow back in some more cases. 1997-12-06 17:00 H.J. Lu <hjl@gnu.org> * sysdeps/posix/sigblock.c (__sigblock): Don't check int mask beyound its size. * sysdeps/posix/sigsetmask.c (__sigsetmask): Ditto. * sysdeps/posix/sigvec.c (convert_mask, __sigvec): Ditto. 1997-12-06 04:38 Ulrich Drepper <drepper@cygnus.com> * sysdeps/wordsize-32/inttypes.h: Rewrite {str,wcs}to{i,u}max handling. Don't use macros, we need functions. Use inline functions for optimization. * sysdeps/wordsize-64/inttypes.h: Likewise. * sysdeps/wordsize-32/Makefile: Add strtoimax, stroumax, wcstoimax, and wcstoumax. * sysdeps/wordsize-64/Makefile: Likewise. * sysdeps/wordsize-32/Dist: Likewise. * sysdeps/wordsize-64/Dist: Likewise. * sysdeps/wordsize-32/strtoimax.c: New file. * sysdeps/wordsize-32/strtoumax.c: New file. * sysdeps/wordsize-32/wcstoimax.c: New file. * sysdeps/wordsize-32/wcstoumax.c: New file. * sysdeps/wordsize-64/strtoimax.c: New file. * sysdeps/wordsize-64/strtoumax.c: New file. * sysdeps/wordsize-64/wcstoimax.c: New file. * sysdeps/wordsize-64/wcstoumax.c: New file. 1997-12-04 10:40 Philip Blundell <pb@nexus.co.uk> * sysdeps/generic/wait3.c (__wait3): Use ANSI-style definition so that transparent union works. * sysdeps/generic/wait4.c (__wait4): Likewise. * sysdeps/generic/wait.c (__wait): Likewise. * sysdeps/generic/getpeername.c (getpeername): Use socklen_t not size_t. * sysdeps/generic/syscall.c (syscall): Return value and arg are long, to match prototype. * malloc/malloc.c (HAVE_MREMAP): Set to 0 for ARM, as we don't have mremap() yet. * sysdeps/generic/usleep.c (usleep): Returns void, to match prototype. * sysdeps/unix/sysv/linux/arm/syscalls.list: New file. * sysdeps/generic/bits/time.h: Use __time_t not time_t. * sysdeps/generic/bits/resource.h: Include <bits/types.h> for __rlim_t. * sysdeps/standalone/arm/bits/errno.h (ENOTTY): Added. * sysdeps/generic/bits/dirent.h (struct dirent64): Added. * io/sys/stat.h (S_ISLNK): Always false if we don't have __S_IFLNK. * sysdeps/standalone/close.c (_STDIO_H): Define before including <bits/stdio_lim.h>. * sysdeps/standalone/filedesc.h (_STDIO_H): Likewise. 1997-12-06 01:09 Ulrich Drepper <drepper@cygnus.com> * posix/sys/wait.h: Don't use transparent unions in C++. 1997-12-05 Andreas Jaeger <aj@arthur.rhein-neckar.de> * time/time.h: Add strfxtime. * libc.map: Add tcgetsid, strcasestr, wmemrtombs, wmemrtowcs, sysv_signal, strfxtime, pread64, pwrite64. 1997-11-30 21:57 Richard Henderson <rth@cygnus.com> Alpha changes for EGCS: * config.h.in (ASM_ALPHA_NG_SYMBOL_PREFIX): New entry. * configure.in (libc_cv_gcc_alpha_ng_prefix): New check. * sysdeps/alpha/dl-machine.h (_dl_runtime_resolve): Care for prefix. (_start): Likewise. * sysdeps/unix/sysv/linux/alpha/init-first.h: Likewise. |
||
---|---|---|
.. | ||
nss_hesiod | ||
hesiod_p.h | ||
hesiod.c | ||
hesiod.h | ||
libnss_hesiod.map | ||
Makefile | ||
README.hesiod |
The GNU C library contains an NSS module for the Hesiod name service. Hesiod is a general name service for a variety of applications and is based on the Berkeley Internet Name Daemon (BIND). Introduction ============ The Hesiod NSS module implements access to all relevant standard Hesiod types, which means that Hesiod can be used for the `group', `passwd' and `services' databases. There is however a restriction. In the same way that it is impossible to use `gethostent()' to iterate over all the data provided by DNS, it is not possible to scan the entire Hesiod database by means of `getgrent()', `getpwent()' and `getservent()'. Besides, Hesiod only provides support for looking up services by name and not for looking them up by port. In essence this means that the Hesiod name service is only consulted as a result of one of the following function calls: * getgrname(), getgrgid() * getpwname(), getpwuid() * getservbyname() and their reentrant counterparts. Configuring your systems ======================== Configuring your systems to make use use the Hesiod name service requires one or more of the following steps, depending on whether you are already running Hesiod in your network. Configuring NSS --------------- First you should modify the file `/etc/nsswitch.conf' to tell NSS for which database you want to use the Hesiod name service. If you want to use Hesiod for all databases it can handle your configuration file could look like this: # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # passwd: db files hesiod group: db files hesiod shadow: db files hosts: files dns networks: files dns protocols: db files services: db files hesiod ethers: db files rpc: db files For more information on NSS, please refer to the `The GNU C Library Reference Manual'. Configuring Hesiod ------------------ Next, you will have to configure Hesiod. If you are already running Hesiod in your network, you probably already have a file named `hesiod.conf' on your machines (probably as `/etc/hesiod.conf' or `/usr/local/etc/hesiod.conf'). The Hesiod NSS module expects this file to be found in the sysconfdir (`/usr/local/etc/hesiod.conf' by default, see the installation notes on how to change this) or in the location specified by the environment variable `HESIOD_CONFIG'. If there is no configuration file you will want to create your own. It should look something like: rhs=.your.domain lhs=.ns The value of rhs can be overridden by the environment variable HES_DOMAIN. Configuring your name servers ----------------------------- In addition, if you are not already running Hesiod in your network, you need to create Hesiod information on your central name servers. You need to run `named' from BIND 4.9 or higher on these servers, and make them authoritative for the domain `ns.your.domain' with a line in `/etc/named.boot' reading something like: primary ns.your.domain named.hesiod or if you are using the new BIND 8.1 or higher add something to `/etc/named.conf' like: zone "ns.your.domain" { type master; file "named.hesiod"; }; Then in the BIND working directory (usually `/var/named') create the file `named.hesiod' containing data that looks something like: ; SOA and NS records. @ IN SOA server1.your.domain admin-address.your.domain ( 40000 ; serial - database version number 1800 ; refresh - sec servers 300 ; retry - for refresh 3600000 ; expire - unrefreshed data 7200 ) ; min NS server1.your.domain NS server2.your.domain ; Actual Hesiod data. libc.group TXT "libc:*:123:gnu,gnat" 123.gid CNAME libc.group gnu.passwd TXT "gnu:*:4567:123:GNU:/home/gnu:/bin/bash" 456.uid CNAME mark.passwd nss.service TXT "nss;tcp;789;switch sw " nss.service TXT "nss;udp;789;switch sw" where `libc' is an example of a group, `gnu' an example of an user, and `nss' an example of a service. Note that the format used to describe services differs from the format used in `/etc/services'. For more information on `named' refer to the `Name Server Operations Guide for BIND' that is included in the BIND distribution. Security ======== Note that the information stored in the Hesiod database in principle is publicly available. Care should be taken with including vulnerable information like encrypted passwords in the Hesiod database. There are some ways to improve security by using features provided by `named' (see the discussion about `secure zones' in the BIND documentation), but one should keep in mind that Hesiod was never intended to distribute passwords. In the origional design authenticating users was the job of the Kerberos service. More information ================ For more information on the Hesiod name service take a look at some of the papers in ftp://athena-dist.mit.edu:/pub/ATHENA/usenix and the documentation that accompanies the source code for the Hesiod name service library in ftp://athena-dist.mit.edu:/pub/ATHENA/hesiod. There is a mailing list at MIT for Hesiod users, hesiod@mit.edu. To get yourself on or off the list, send mail to hesiod-request@mit.edu.