summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man8/idmap_script.8
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man8/idmap_script.8')
-rw-r--r--upstream/archlinux/man8/idmap_script.8153
1 files changed, 153 insertions, 0 deletions
diff --git a/upstream/archlinux/man8/idmap_script.8 b/upstream/archlinux/man8/idmap_script.8
new file mode 100644
index 00000000..ef161a5b
--- /dev/null
+++ b/upstream/archlinux/man8/idmap_script.8
@@ -0,0 +1,153 @@
+'\" t
+.\" Title: idmap_script
+.\" Author: [see the "AUTHOR" section]
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\" Date: 02/19/2024
+.\" Manual: System Administration tools
+.\" Source: Samba 4.19.5
+.\" Language: English
+.\"
+.TH "IDMAP_SCRIPT" "8" "02/19/2024" "Samba 4\&.19\&.5" "System Administration tools"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+idmap_script \- Samba\*(Aqs idmap_script Backend for Winbind
+.SH "DESCRIPTION"
+.PP
+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\&.
+.PP
+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\&.
+.SH "IDMAP OPTIONS"
+.PP
+range = low \- high
+.RS 4
+Defines the available matching uid and gid range for which the backend is authoritative\&.
+.RE
+.PP
+script
+.RS 4
+This option can be used to configure an external program for performing id mappings\&.
+.RE
+.SH "IDMAP SCRIPT"
+.PP
+The script idmap backend supports an external program for performing id mappings through the
+/etc/samba/smb\&.conf
+option
+\fIidmap config * : script\fR
+or its deprecated legacy form
+\fIidmap : script\fR\&.
+.PP
+The script should accept the following command line options\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ SIDTOID S\-1\-xxxx
+ IDTOSID UID xxxx
+ IDTOSID GID xxxx
+ IDTOSID XID xxxx
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+And it should return one of the following responses as a single line of text\&.
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ UID:yyyy
+ GID:yyyy
+ XID:yyyy
+ SID:ssss
+ ERR:yyyy
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+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\&.
+.SH "EXAMPLES"
+.PP
+This example shows how script is used as the default idmap backend using an external program via the script parameter:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ [global]
+ idmap config * : backend = script
+ idmap config * : range = 1000000\-2000000
+ idmap config * : script = /usr/local/samba/bin/idmap_script\&.sh
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+This shows a simple script to partially perform the task:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+ #!/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
+
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+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\&.
+.PP
+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\&.
+.PP
+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\&.
+.SH "AUTHOR"
+.PP
+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\&.