blob: e76adb9596d325089c82a73b937c3bb1ad396355 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
'\" t
.\" Title: idmap_script
.\" Author: [see the "AUTHOR" section]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\" Date: 05/09/2024
.\" Manual: System Administration tools
.\" Source: Samba 4.20.1
.\" Language: English
.\"
.TH "IDMAP_SCRIPT" "8" "05/09/2024" "Samba 4\&.20\&.1" "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\&.
|