<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Portability</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="SAMBA Project Documentation"
HREF="Samba-HOWTO.html"><LINK
REL="PREVIOUS"
TITLE="Group mapping HOWTO"
HREF="groupmapping.html"></HEAD
><BODY
CLASS="CHAPTER"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>SAMBA Project Documentation</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="groupmapping.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="CHAPTER"
><H1
><A
NAME="PORTABILITY">Chapter 21. Portability</H1
><P
>Samba works on a wide range of platforms but the interface all the 
platforms provide is not always compatible. This chapter contains 
platform-specific information about compiling and using samba.</P
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN3119">21.1. HPUX</H1
><P
>HP's implementation of supplementary groups is, er, non-standard (for
hysterical reasons).  There are two group files, /etc/group and
/etc/logingroup; the system maps UIDs to numbers using the former, but
initgroups() reads the latter.  Most system admins who know the ropes
symlink /etc/group to /etc/logingroup (hard link doesn't work for reasons
too stupid to go into here).  initgroups() will complain if one of the
groups you're in in /etc/logingroup has what it considers to be an invalid
ID, which means outside the range [0..UID_MAX], where UID_MAX is (I think)
60000 currently on HP-UX.  This precludes -2 and 65534, the usual 'nobody'
GIDs.</P
><P
>If you encounter this problem, make sure that the programs that are failing 
to initgroups() be run as users not in any groups with GIDs outside the 
allowed range.</P
><P
>This is documented in the HP manual pages under setgroups(2) and passwd(4).</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN3124">21.2. SCO Unix</H1
><P
> 
If you run an old version of  SCO Unix then you may need to get important 
TCP/IP patches for Samba to work correctly. Without the patch, you may 
encounter corrupt data transfers using samba.</P
><P
>The patch you need is UOD385 Connection Drivers SLS. It is available from
SCO (ftp.sco.com, directory SLS, files uod385a.Z and uod385a.ltr.Z).</P
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN3128">21.3. DNIX</H1
><P
>DNIX has a problem with seteuid() and setegid(). These routines are
needed for Samba to work correctly, but they were left out of the DNIX
C library for some reason.</P
><P
>For this reason Samba by default defines the macro NO_EID in the DNIX
section of includes.h. This works around the problem in a limited way,
but it is far from ideal, some things still won't work right.</P
><P
> 
To fix the problem properly you need to assemble the following two
functions and then either add them to your C library or link them into
Samba.</P
><P
> 
put this in the file <TT
CLASS="FILENAME"
>setegid.s</TT
>:</P
><P
><PRE
CLASS="PROGRAMLISTING"
>        .globl  _setegid
_setegid:
        moveq   #47,d0
        movl    #100,a0
        moveq   #1,d1
        movl    4(sp),a1
        trap    #9
        bccs    1$
        jmp     cerror
1$:
        clrl    d0
        rts</PRE
></P
><P
>put this in the file <TT
CLASS="FILENAME"
>seteuid.s</TT
>:</P
><P
><PRE
CLASS="PROGRAMLISTING"
>        .globl  _seteuid
_seteuid:
        moveq   #47,d0
        movl    #100,a0
        moveq   #0,d1
        movl    4(sp),a1
        trap    #9
        bccs    1$
        jmp     cerror
1$:
        clrl    d0
        rts</PRE
></P
><P
>after creating the above files you then assemble them using</P
><P
><B
CLASS="COMMAND"
>as seteuid.s</B
></P
><P
><B
CLASS="COMMAND"
>as setegid.s</B
></P
><P
>that should produce the files <TT
CLASS="FILENAME"
>seteuid.o</TT
> and 
<TT
CLASS="FILENAME"
>setegid.o</TT
></P
><P
>then you need to add these to the LIBSM line in the DNIX section of
the Samba Makefile. Your LIBSM line will then look something like this:</P
><P
><PRE
CLASS="PROGRAMLISTING"
>LIBSM = setegid.o seteuid.o -ln</PRE
></P
><P
> 
You should then remove the line:</P
><P
><PRE
CLASS="PROGRAMLISTING"
>#define NO_EID</PRE
></P
><P
>from the DNIX section of <TT
CLASS="FILENAME"
>includes.h</TT
></P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="groupmapping.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="Samba-HOWTO.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Group mapping HOWTO</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>