<!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" > </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" > </TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Group mapping HOWTO</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" > </TD ></TR ></TABLE ></DIV ></BODY ></HTML >