Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

idmap_script (8)

Name

idmap_script - Samba's idmap_script Backend for Winbind

Synopsis

Please see following description for synopsis

Description

System Administration tools                                    IDMAP_SCRIPT(8)



NAME
       idmap_script - Samba's idmap_script Backend for Winbind

DESCRIPTION
       The idmap_script plugin is a substitute for the idmap_tdb2 backend used
       by winbindd for storing SID/uid/gid mapping tables in clustered
       environments with Samba and CTDB. It is a read only backend that uses a
       script to perform mapping.

       It was developed out of the idmap_tdb2 back end and does not store
       SID/uid/gid mappings in a TDB, since the winbind_cache tdb will store
       the mappings once they are provided.

IDMAP OPTIONS
       range = low - high
           Defines the available matching uid and gid range for which the
           backend is authoritative.

       script
           This option can be used to configure an external program for
           performing id mappings.

IDMAP SCRIPT
       The tdb2 idmap backend supports an external program for performing id
       mappings through the smb.conf option idmap config * : script or its
       deprecated legacy form idmap : script.

       The mappings obtained by the script are then stored in the idmap tdb2
       database instead of mappings created by the incrementing id counters.
       It is therefore important that the script covers the complete range of
       SIDs that can be passed in for SID to Unix ID mapping, since otherwise
       SIDs unmapped by the script might get mapped to IDs that had previously
       been mapped by the script.

       The script should accept the following command line options.

                SIDTOID S-1-xxxx
                IDTOSID UID xxxx
                IDTOSID GID xxxx
                IDTOSID XID xxxx


       And it should return one of the following responses as a single line of
       text.

                UID:yyyy
                GID:yyyy
                XID:yyyy
                SID:ssss
                ERR:yyyy


       XID indicates that the ID returned should be both a UID and a GID. That
       is, it requests an ID_TYPE_BOTH, but it is ultimately up to the script
       whether or not it can honor that request. It can choose to return a UID
       or a GID mapping only.

EXAMPLES
       This example shows how script is used as a the default idmap backend
       using an external program via the script parameter:

                [global]
                idmap config * : backend = script
                idmap config * : range = 1000000-2000000
                idmap config * : script = /usr/local/samba/bin/idmap_script.sh


       This shows a simple script to partially perform the task:

                #!/bin/sh
                #
                # Uncomment this if you want some logging
                #echo $@ >> /tmp/idmap.sh.log
                if [ "$1" == "SIDTOID" ]
                then
                     # Note. The number returned has to be within the range defined
                     #echo "Sending UID:1000005" >> /tmp/idmap.sh.log
                     echo "UID:1000005"
                     exit 0
                else
                     #echo "Sending ERR: No idea what to do" >> /tmp/idmap.sh.log
                     echo "ERR: No idea what to do"
                     exit 1
                fi


       Clearly, this script is not enough, as it should probably use wbinfo to
       determine if an incoming SID is a user or group SID and then look up
       the mapping in a table or use some other mechanism for mapping SIDs to
       UIDs and etc.

       Please be aware that the script is called with the _NO_WINBINDD
       environment variable set to 1. This prevents recursive calls into
       winbind from the script both via explicit calls to wbinfo and via
       implicit calls via nss_winbind. For example a call to ls -l could
       trigger such an infinite recursion.

       It is safe to call wbinfo -n and wbinfo -s from within an idmap script.
       To do so, the script must unset the _NO_WINBINDD environment variable
       right before the call to wbinfo and set it to 1 again right after
       wbinfo has returned to protect against the recursion.

AUTHOR
       The original Samba software and related utilities were created by
       Andrew Tridgell. Samba is now developed by the Samba Team as an Open
       Source project similar to the way the Linux kernel is developed.



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | service/network/samba |
       +---------------+-----------------------+
       |Stability      | Volatile              |
       +---------------+-----------------------+

NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       https://download.samba.org/pub/samba/stable/samba-4.13.17.tar.gz.

       Further information about this software can be found on the open source
       community website at http://www.samba.org/.



Samba 4.13.17                     06/28/2022                   IDMAP_SCRIPT(8)