WINBINDD(8)
๐ WINBINDD โ the manual page, but make it make sense ๐
winbindd โ that's the Name Service Switch daemon bestie, the one that goes and resolves names from NT servers so you don't have to ๐ญโจ
โจ SYNOPSIS โจ
winbindd [-D|--daemon] [-i|--interactive] [-F|--foreground]
[--no-process-group] [-n|--no-caching] [-d <debug level>]
[--debug-stdout] [--configfile=<configuration file>]
[--option=<name>=<value>] [-l|--log-basename <log directory>]
[--leak-report] [--leak-report-full] [-V|--version]
๐ธ DESCRIPTION ๐ธ
Okay so first things first: this program is part of the samba(7) suite. Family member. Part of the ensemble. ๐
winbindd is a daemon, and it's out here providing a whole bunch of services to the Name Service Switch capability that lives in most modern C libraries, plus to random applications through PAM and ntlm_auth, and also to Samba itself. It's giving networking icon, it's giving "I talk to everyone".
And like, even if winbind isn't being used for nsswitch? It still provides a service to smbd, ntlm_auth and the pam_winbind.so PAM module, by managing connections to domain controllers. In this configuration the idmap config * : range parameter is not required. (This whole situation is known as ``netlogon proxy only mode''.) ๐
The Name Service Switch lets user and system information be pulled from different database services like NIS or DNS. The exact behaviour is configurable through the /etc/nsswitch.conf file. Users and groups get allocated as they're resolved, into a range of user and group ids that the administrator of the Samba system specified. Slay, custom ranges.
The service winbindd provides is called ``winbind'' and it can be used to resolve user and group information from a Windows NT server. It can also hand out authentication services via an associated PAM module. Versatile queen.
The pam_winbind module supports the auth, account and password module-types. Quick note though: the account module just does a getpwnam() to verify that the system can obtain a uid for the user, because the domain controller already did the access control part. So if the libnss_winbind library is correctly installed, or an alternate source of names is configured, this should always succeed. No drama. ๐ซถ
The following nsswitch databases are implemented by the winbindd service:
- hosts โ okay so this feature is only available on IRIX. User information traditionally stored in the
hosts(5)file and used by thegethostbyname(3)functions. Names are resolved through the WINS server or by broadcast. - passwd โ user information traditionally stored in the
passwd(5)file and used by thegetpwent(3)functions. - group โ group information traditionally stored in the
group(5)file and used by thegetgrent(3)functions.
For example, the following simple configuration in the /etc/nsswitch.conf file can be used to initially resolve user and group information from /etc/passwd and /etc/group and then from the Windows NT server. Look at it. It's so tidy:
passwd: files winbind
group: files winbind
## only available on IRIX: use winbind to resolve hosts:
# hosts: files dns winbind
## All other NSS enabled systems should use libnss_wins.so like this:
hosts: files dns wins
And this next one โ the following simple configuration in the /etc/nsswitch.conf file โ can be used to initially resolve hostnames from /etc/hosts and then from the WINS server. Baby steps, filesystem first:
hosts: files wins
๐ OPTIONS ๐
-D|--daemonโ if you specify this, the server operates as a daemon. Meaning: it detaches itself and runs in the background on the appropriate port. And heads up, this switch is assumed ifwinbinddis executed on the command line of a shell. It just does it. Main character behaviour honestly.-i|--interactiveโ tellswinbinddto not become a daemon and not detach from the current terminal. Devs use this when they need interactive debugging ofwinbindd. Also,winbinddlogs to standard output in this mode, as if the-Sparameter had been given. ๐-F|--foregroundโ if specified, the mainwinbinddprocess will not daemonize, i.e. it won't double-fork and disassociate with the terminal. Child processes are still created as normal to service each connection request, but the main process does not exit. This mode is perfect for runningwinbinddunder process supervisors likesuperviseandsvscanfrom Daniel J. Bernstein's daemontools package, or the AIX process monitor. Supervisor girlies, this one's for you ๐--no-process-groupโ do not create a new process group forwinbindd. That's it, that's the whole thing.-n|--no-cachingโ disables some caching. Which meanswinbinddwill often have to wait for a response from the domain controller before it can respond to a client, so yeah, things get slower. But the results will be more accurate, since results from the cache might not be up-to-date. It might also temporarily hangwinbinddif the DC doesn't respond ๐ญ. Important: this does not disable the samlogon cache, because that one is required for group membership tracking in trusted environments.-d|--debuglevel=levelโ level is an integer from 0 to 10. The default value if this parameter is not specified is 0.
The higher this value, the more detail gets logged to the log files about what the server is doing. At level 0, only critical errors and serious warnings get logged. Level 1 is a reasonable level for day-to-day running โ it generates a small amount of information about operations carried out.
Levels above 1 generate considerable amounts of log data, so only use them when investigating a problem. Levels above 3 are designed for developers only and generate HUGE amounts of log data, most of which is extremely cryptic. You have been warned bestie ๐
Also note: specifying this parameter here will override the log level parameter in the /etc/samba/smb.conf file. Command line wins, always.
--debug-stdoutโ this redirects debug output to STDOUT. By default, server daemons log to a log file. Now they can log at you directly.--configfile=CONFIGFILEโ the file specified here contains the configuration details required by the server. The info in this file includes server-specific stuff like what printcap file to use, plus descriptions of all the services the server is meant to provide. See/etc/samba/smb.conffor more. The default configuration file name is determined at compile time.--option=<name>=<value>โ set thesmb.conf(5)option "<name>" to value "<value>" from the command line. This overrides compiled-in defaults and options read from the configuration file. If a name or a value includes a space, wrap the whole--option=name=valueinto quotes. Don't forget, or it will simply not work and you'll be sad.-l|--log-basename=logdirectoryโ base directory name for log/debug files. The parent process uses filenamelog.winbindd, the child process uses filenamelog.wb-<name>. And no,winbinddnever removes the log file. It just keeps it. Forever. ๐ซถ--leak-reportโ enable talloc leak reporting on exit. Snitching on leaks, as it should.--leak-report-fullโ enable full talloc leak reporting on exit. The deluxe snitching package.-V|--versionโ prints the program version number.-?|--helpโ print a summary of command line options.--usageโ display brief usage message.
๐ NAME AND ID RESOLUTION ๐
Users and groups on a Windows NT server get assigned a security id (SID) which is globally unique when the user or group is created. To convert a Windows NT user or group into a unix user or group, you need a mapping between SIDs and unix user and group ids. And that, bestie, is one of the jobs that winbindd performs. It's the translator. The go-between. ๐
As winbindd resolves users and groups from a server, user and group ids get allocated from a specified range. This happens on a first come, first served basis, although all existing users and groups will be mapped as soon as a client performs a user or group enumeration command. The allocated unix ids are stored in a database and will be remembered. Memory like an elephant, no cap.
WARNING: the SID to unix id database is the only location where the user and group mappings are stored bywinbindd. If this store is deleted or corrupted, there is no way forwinbinddto determine which user and group ids correspond to Windows NT user and group rids. Protect that database with your life. It's the whole plot. ๐ญ
โญ CONFIGURATION โญ
Configuration of the winbindd daemon happens through configuration parameters in the smb.conf(5) file. All parameters should be specified in the [global] section of smb.conf. No scattering them around, keep it in global.
winbind separatoridmap config * : rangeidmap config * : backendwinbind cache timewinbind enum userswinbind enum groupstemplate homedirtemplate shellwinbind use default domainwinbind: rpc onlyโ setting this parameter forceswinbinddto use RPC instead of LDAP to retrieve information from Domain Controllers.
โจ EXAMPLE SETUP โจ
okay bestie, here's the whole vibe of getting winbindd running for user + group lookups and authentication from a domain controller. This setup was tested on an early Red Hat Linux box, so it's giving certified classic ๐
In /etc/nsswitch.conf you're gonna put this:
passwd: files winbind
group: files winbind
Then in /etc/pam.d/* you replace the auth lines with something like this:
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_unix.so \
use_first_pass shadow nullok
Note ๐ซถ The PAM modulepam_unixhas recently replaced the modulepam_pwdb. Some Linux systems use the modulepam_unix2in place ofpam_unix.
and notice, like, notice ๐ the use of the sufficient keyword and the use_first_pass keyword. Those two are the moment, fr fr.
Now replace the account lines with this:
account required /lib/security/pam_winbind.so
Next step: join the domain. Do that with the net program, like this:
net join -S PDC -U Administrator
The username after the -U can be any Domain user that has administrator privileges on the machine. And substitute the name or IP of your PDC for "PDC", obviously bestie, don't just copy it ๐
Next, copy libnss_winbind.so to /lib and pam_winbind.so to /lib/security. You also need a symbolic link made from /lib/libnss_winbind.so to /lib/libnss_winbind.so.2. And if you're on an older version of glibc, then the target of the link should be /lib/libnss_winbind.so.1 instead. slay โจ
Finally, set up a smb.conf(5) containing directives like the following:
[global]
winbind separator = +
winbind cache time = 10
template shell = /bin/bash
template homedir = /home/%D/%U
idmap config * : range = 10000-20000
workgroup = DOMAIN
security = domain
password server = *
Now start winbindd and you should find that your user and group database is expanded to include your NT users and groups, and that you can login to your unix box as a domain user, using the DOMAIN+user syntax for the username. You may wish to use the commands getent passwd and getent group to confirm the correct operation of winbindd. go verify, you got this ๐ธ
๐ NOTES ๐
The following notes are useful when configuring and running winbindd:
- PAM is really easy to misconfigure. Make sure you know what you are doing when modifying PAM configuration files. It is possible to set up PAM such that you can no longer log into your system. no like seriously, you can lock yourself out of your own machine, be careful!! ๐ญ
- If more than one UNIX machine is running
winbindd, then in general the user and groups ids allocated bywinbinddwill not be the same. The user and group ids will only be valid for the local machine, unless a sharedidmap config * : backendis configured. - If the Windows NT SID to UNIX user and group id mapping file is damaged or destroyed then the mappings will be lost. ๐
๐จ SIGNALS ๐จ
The following signals can be used to manipulate the winbindd daemon.
SIGHUPโ Reload thesmb.conf(5)file and apply any parameter changes to the running version ofwinbindd. This signal also clears any cached user and group information. The list of other domains trusted bywinbinddis also reloaded.
Instead of sending a SIGHUP signal, a request to reload configuration file may be sent using smbcontrol(1) program.
SIGUSR2โ TheSIGUSR2signal will causewinbinddto write status information to the winbind log file.
Log files are stored in the filename specified by the log file parameter.
๐ FILES ๐
/etc/nsswitch.conf(5)โ Name service switch configuration file./run/samba/winbindd/pipeโ The UNIX pipe over which clients communicate with thewinbinddprogram. For security reasons, the winbind client will only attempt to connect to thewinbindddaemon if both the/run/samba/winbindddirectory and/run/samba/winbindd/pipefile are owned byroot.
winbindd socket directory overrides this default.
$STATEDIR/winbindd_privileged/pipeโ The UNIX pipe over which 'privileged' clients communicate with thewinbinddprogram. For security reasons, access to somewinbinddfunctions - like those needed by thentlm_authutility - is restricted. By default, only users in the 'root' group will get this access, however the administrator may change the group permissions on$STATEDIR/winbindd_privilegedto allow programs like 'squid' to usentlm_auth. Note that the winbind client will only attempt to connect to thewinbindddaemon if both the$STATEDIR/winbindd_privilegeddirectory and$STATEDIR/winbindd_privileged/pipefile are owned byroot.
state dir controls what $STATEDIR refers to.
/lib/libnss_winbind.so.Xโ Implementation of name service switch library.$STATEDIR/winbindd_idmap.tdbโ Storage for the Windows NT rid to UNIX user/group id mapping. The directory is specified when Samba is initially compiled using the--with-statediroption orstate dir. The default directory in this installation is/var/lib/samba.$LOCKDIR/winbindd_cache.tdbโ Storage for cached user and group information.
๐ VERSION ๐
This man page is part of version 4.24.7 of the Samba suite.
๐ SEE ALSO ๐
nsswitch.conf(5), samba(7), wbinfo(1), ntlm_auth(8), smb.conf(5), pam_winbind(8)
๐ 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.
wbinfo and winbindd were written by Tim Potter.
The conversion to DocBook for Samba 2.2 was done by Gerald Carter. The conversion to DocBook XML 4.2 for Samba 3.0 was done by Alexander Bokovoy.
and that's the whole page bestie!! ๐ฆ this one's from Samba version 4.24.7, dated 09/09/2026 โ go forth and winbind, you absolute icon ๐
โจ
๐ฆ where this page comes from
- fedora 44: samba-winbind 2:4.24.7-1.fc44 ยท GPL-3.0-or-later AND LGPL-3.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms