sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/filesystems/smb/ksmbdmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/filesystems/smb/ksmbdmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/filesystems/smb/ksmbdmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/filesystems/smb/ksmbdmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/filesystems/smb/ksmbdmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/filesystems/smb/ksmbdmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/filesystems/smb/ksmbd.rsthKubhsection)}(hhh](htitle)}(hKSMBD - SMB3 Kernel Serverh]hKSMBD - SMB3 Kernel Server}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hmKSMBD is a linux kernel server which implements SMB3 protocol in kernel space for sharing files over network.h]hmKSMBD is a linux kernel server which implements SMB3 protocol in kernel space for sharing files over network.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hKSMBD architectureh]hKSMBD architecture}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhK ubh)}(hX/The subset of performance related operations belong in kernelspace and the other subset which belong to operations which are not really related with performance in userspace. So, DCE/RPC management that has historically resulted into a number of buffer overflow issues and dangerous security bugs and user account management are implemented in user space as ksmbd.mountd. File operations that are related with performance (open/read/write/close etc.) in kernel space (ksmbd). This also allows for easier integration with VFS interface for all file operations.h]hX/The subset of performance related operations belong in kernelspace and the other subset which belong to operations which are not really related with performance in userspace. So, DCE/RPC management that has historically resulted into a number of buffer overflow issues and dangerous security bugs and user account management are implemented in user space as ksmbd.mountd. File operations that are related with performance (open/read/write/close etc.) in kernel space (ksmbd). This also allows for easier integration with VFS interface for all file operations.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hksmbd (kernel daemon)h]hksmbd (kernel daemon)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hXWhen the server daemon is started, It starts up a forker thread (ksmbd/interface name) at initialization time and open a dedicated port 445 for listening to SMB requests. Whenever new clients make a request, the Forker thread will accept the client connection and fork a new thread for a dedicated communication channel between the client and the server. It allows for parallel processing of SMB requests(commands) from clients as well as allowing for new clients to make new connections. Each instance is named ksmbd/1~n(port number) to indicate connected clients. Depending on the SMB request types, each new thread can decide to pass through the commands to the user space (ksmbd.mountd), currently DCE/RPC commands are identified to be handled through the user space. To further utilize the linux kernel, it has been chosen to process the commands as workitems and to be executed in the handlers of the ksmbd-io kworker threads. It allows for multiplexing of the handlers as the kernel takes care of initiating extra worker threads if the load is increased and vice versa, if the load is decreased it destroys the extra worker threads. So, after the connection is established with the client. Dedicated ksmbd/1..n(port number) takes complete ownership of receiving/parsing of SMB commands. Each received command is worked in parallel i.e., there can be multiple client commands which are worked in parallel. After receiving each command a separated kernel workitem is prepared for each command which is further queued to be handled by ksmbd-io kworkers. So, each SMB workitem is queued to the kworkers. This allows the benefit of load sharing to be managed optimally by the default kernel and optimizing client performance by handling client commands in parallel.h]hXWhen the server daemon is started, It starts up a forker thread (ksmbd/interface name) at initialization time and open a dedicated port 445 for listening to SMB requests. Whenever new clients make a request, the Forker thread will accept the client connection and fork a new thread for a dedicated communication channel between the client and the server. It allows for parallel processing of SMB requests(commands) from clients as well as allowing for new clients to make new connections. Each instance is named ksmbd/1~n(port number) to indicate connected clients. Depending on the SMB request types, each new thread can decide to pass through the commands to the user space (ksmbd.mountd), currently DCE/RPC commands are identified to be handled through the user space. To further utilize the linux kernel, it has been chosen to process the commands as workitems and to be executed in the handlers of the ksmbd-io kworker threads. It allows for multiplexing of the handlers as the kernel takes care of initiating extra worker threads if the load is increased and vice versa, if the load is decreased it destroys the extra worker threads. So, after the connection is established with the client. Dedicated ksmbd/1..n(port number) takes complete ownership of receiving/parsing of SMB commands. Each received command is worked in parallel i.e., there can be multiple client commands which are worked in parallel. After receiving each command a separated kernel workitem is prepared for each command which is further queued to be handled by ksmbd-io kworkers. So, each SMB workitem is queued to the kworkers. This allows the benefit of load sharing to be managed optimally by the default kernel and optimizing client performance by handling client commands in parallel.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]ksmbd-kernel-daemonah ]h"]ksmbd (kernel daemon)ah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h ksmbd.mountd (user space daemon)h]h ksmbd.mountd (user space daemon)}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK2ubh)}(hXksmbd.mountd is a userspace process to, transfer the user account and password that are registered using ksmbd.adduser (part of utils for user space). Further it allows sharing information parameters that are parsed from smb.conf to ksmbd in kernel. For the execution part it has a daemon which is continuously running and connected to the kernel interface using netlink socket, it waits for the requests (dcerpc and share/user info). It handles RPC calls (at a minimum few dozen) that are most important for file server from NetShareEnum and NetServerGetInfo. Complete DCE/RPC response is prepared from the user space and passed over to the associated kernel thread for the client.h]hXksmbd.mountd is a userspace process to, transfer the user account and password that are registered using ksmbd.adduser (part of utils for user space). Further it allows sharing information parameters that are parsed from smb.conf to ksmbd in kernel. For the execution part it has a daemon which is continuously running and connected to the kernel interface using netlink socket, it waits for the requests (dcerpc and share/user info). It handles RPC calls (at a minimum few dozen) that are most important for file server from NetShareEnum and NetServerGetInfo. Complete DCE/RPC response is prepared from the user space and passed over to the associated kernel thread for the client.}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubeh}(h]ksmbd-mountd-user-space-daemonah ]h"] ksmbd.mountd (user space daemon)ah$]h&]uh1hhhhhhhhK2ubeh}(h]ksmbd-architectureah ]h"]ksmbd architectureah$]h&]uh1hhhhhhhhK ubh)}(hhh](h)}(hKSMBD Feature Statush]hKSMBD Feature Status}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjNhhhhhK@ubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jihjfubjj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK1uh1jihjfubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(h Feature nameh]h Feature name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hStatush]hStatus}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjfubhtbody)}(hhh](j)}(hhh](j)}(hhh]h)}(hDialectsh]hDialects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hfSupported. SMB2.1 SMB3.0, SMB3.1.1 dialects (intentionally excludes security vulnerable SMB1 dialect).h]hfSupported. SMB2.1 SMB3.0, SMB3.1.1 dialects (intentionally excludes security vulnerable SMB1 dialect).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKEhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hAuto Negotiationh]hAuto Negotiation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hCompound Requesth]hCompound Request}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhj;ubah}(h]h ]h"]h$]h&]uh1jhj8ubj)}(hhh]h)}(h Supported.h]h Supported.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKIhjRubah}(h]h ]h"]h$]h&]uh1jhj8ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hOplock Cache Mechanismh]hOplock Cache Mechanism}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjrubah}(h]h ]h"]h$]h&]uh1jhjoubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjubah}(h]h ]h"]h$]h&]uh1jhjoubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB2 leases(v1 lease)h]hSMB2 leases(v1 lease)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hDirectory leases(v2 lease)h]hDirectory leases(v2 lease)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKLhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h Multi-creditsh]h Multi-credits}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h NTLM/NTLMv2h]h NTLM/NTLMv2}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjNubah}(h]h ]h"]h$]h&]uh1jhjKubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKNhjeubah}(h]h ]h"]h$]h&]uh1jhjKubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hHMAC-SHA256 Signingh]hHMAC-SHA256 Signing}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSecure negotiateh]hSecure negotiate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSigning Updateh]hSigning Update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hPre-authentication integrityh]hPre-authentication integrity}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhj*ubah}(h]h ]h"]h$]h&]uh1jhj'ubj)}(hhh]h)}(h Supported.h]h Supported.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhjAubah}(h]h ]h"]h$]h&]uh1jhj'ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3 encryption(CCM, GCM)h]hSMB3 encryption(CCM, GCM)}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjaubah}(h]h ]h"]h$]h&]uh1jhj^ubj)}(hhh]h)}(h0Supported. (CCM/GCM128 and CCM/GCM256 supported)h]h0Supported. (CCM/GCM128 and CCM/GCM256 supported)}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjxubah}(h]h ]h"]h$]h&]uh1jhj^ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB direct(RDMA)h]hSMB direct(RDMA)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKThjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3 Multi-channelh]hSMB3 Multi-channel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hMPartially Supported. Planned to implement replay/retry mechanisms for future.h]hMPartially Supported. Planned to implement replay/retry mechanisms for future.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hReceive Side Scaling modeh]hReceive Side Scaling mode}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKWhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3.1.1 POSIX extensionh]hSMB3.1.1 POSIX extension}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhj=ubah}(h]h ]h"]h$]h&]uh1jhj:ubj)}(hhh]h)}(h Supported.h]h Supported.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjTubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hACLsh]hACLs}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjtubah}(h]h ]h"]h$]h&]uh1jhjqubj)}(hhh]h)}(hXPartially Supported. only DACLs available, SACLs (auditing) is planned for the future. For ownership (SIDs) ksmbd generates random subauth values(then store it to disk) and use uid/gid get from inode as RID for local domain SID. The current acl implementation is limited to standalone server, not a domain member. Integration with Samba tools is being worked on to allow future support for running as a domain member.h]hXPartially Supported. only DACLs available, SACLs (auditing) is planned for the future. For ownership (SIDs) ksmbd generates random subauth values(then store it to disk) and use uid/gid get from inode as RID for local domain SID. The current acl implementation is limited to standalone server, not a domain member. Integration with Samba tools is being worked on to allow future support for running as a domain member.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjqubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hKerberosh]hKerberos}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKchjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hDurable handle v1,v2h]hDurable handle v1,v2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hPersistent handleh]hPersistent handle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(h SMB2 notifyh]h SMB2 notify}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjPubah}(h]h ]h"]h$]h&]uh1jhjMubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjgubah}(h]h ]h"]h$]h&]uh1jhjMubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSparse file supporth]hSparse file support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Supported.h]h Supported.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hDCE/RPC supporth]hDCE/RPC support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hXaPartially Supported. a few calls(NetShareEnumAll, NetServerGetInfo, SAMR, LSARPC) that are needed for file server handled via netlink interface from ksmbd.mountd. Additional integration with Samba tools and libraries via upcall is being investigated to allow support for additional DCE/RPC management calls (and future support for Witness protocol e.g.)h]hXaPartially Supported. a few calls(NetShareEnumAll, NetServerGetInfo, SAMR, LSARPC) that are needed for file server handled via netlink interface from ksmbd.mountd. Additional integration with Samba tools and libraries via upcall is being investigated to allow support for additional DCE/RPC management calls (and future support for Witness protocol e.g.)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hksmbd/nfsd interoperabilityh]hksmbd/nfsd interoperability}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h]Planned for future. The features that ksmbd support are Leases, Notify, ACLs and Share modes.h]h]Planned for future. The features that ksmbd support are Leases, Notify, ACLs and Share modes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3.1.1 Compressionh]hSMB3.1.1 Compression}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhj,ubah}(h]h ]h"]h$]h&]uh1jhj)ubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhjCubah}(h]h ]h"]h$]h&]uh1jhj)ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3.1.1 over QUICh]hSMB3.1.1 over QUIC}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjcubah}(h]h ]h"]h$]h&]uh1jhj`ubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjzubah}(h]h ]h"]h$]h&]uh1jhj`ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSigning/Encryption over RDMAh]hSigning/Encryption over RDMA}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hSMB3.1.1 GMAC signing supporth]hSMB3.1.1 GMAC signing support}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hPlanned for future.h]hPlanned for future.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKuhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]colsKuh1jdhjaubah}(h]h ]h"]h$]h&]uh1j_hjNhhhhhNubeh}(h]ksmbd-feature-statusah ]h"]ksmbd feature statusah$]h&]uh1hhhhhhhhK@ubh)}(hhh](h)}(h How to runh]h How to run}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKzubhenumerated_list)}(hhh](h list_item)}(hXCDownload ksmbd-tools(https://github.com/cifsd-team/ksmbd-tools/releases) and compile them. - Refer to README(https://github.com/cifsd-team/ksmbd-tools/blob/master/README.md) to know how to use ksmbd.mountd/adduser/addshare/control utils $ ./autogen.sh $ ./configure --with-rundir=/run $ make && sudo make install h](h)}(hZDownload ksmbd-tools(https://github.com/cifsd-team/ksmbd-tools/releases) and compile them.h](hDownload ksmbd-tools(}(hj<hhhNhNubh reference)}(h2https://github.com/cifsd-team/ksmbd-tools/releasesh]h2https://github.com/cifsd-team/ksmbd-tools/releases}(hjFhhhNhNubah}(h]h ]h"]h$]h&]refurijHuh1jDhj<ubh) and compile them.}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hj8ubh bullet_list)}(hhh]j7)}(hRefer to README(https://github.com/cifsd-team/ksmbd-tools/blob/master/README.md) to know how to use ksmbd.mountd/adduser/addshare/control utils $ ./autogen.sh $ ./configure --with-rundir=/run $ make && sudo make install h](h)}(hRefer to README(https://github.com/cifsd-team/ksmbd-tools/blob/master/README.md) to know how to use ksmbd.mountd/adduser/addshare/control utilsh](hRefer to README(}(hjhhhhNhNubjE)}(h?https://github.com/cifsd-team/ksmbd-tools/blob/master/README.mdh]h?https://github.com/cifsd-team/ksmbd-tools/blob/master/README.md}(hjphhhNhNubah}(h]h ]h"]h$]h&]refurijruh1jDhjhubh@) to know how to use ksmbd.mountd/adduser/addshare/control utils}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjdubh)}(hK$ ./autogen.sh $ ./configure --with-rundir=/run $ make && sudo make installh]hK$ ./autogen.sh $ ./configure --with-rundir=/run $ make && sudo make install}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjdubeh}(h]h ]h"]h$]h&]uh1j6hjaubah}(h]h ]h"]h$]h&]bullet-uh1j_hhhKhj8ubeh}(h]h ]h"]h$]h&]uh1j6hj3hhhNhNubj7)}(hCreate /usr/local/etc/ksmbd/ksmbd.conf file, add SMB share in ksmbd.conf file. - Refer to ksmbd.conf.example in ksmbd-utils, See ksmbd.conf manpage for details to configure shares. $ man ksmbd.conf h](h)}(hNCreate /usr/local/etc/ksmbd/ksmbd.conf file, add SMB share in ksmbd.conf file.h]hNCreate /usr/local/etc/ksmbd/ksmbd.conf file, add SMB share in ksmbd.conf file.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj`)}(hhh]j7)}(hyRefer to ksmbd.conf.example in ksmbd-utils, See ksmbd.conf manpage for details to configure shares. $ man ksmbd.conf h](h)}(hcRefer to ksmbd.conf.example in ksmbd-utils, See ksmbd.conf manpage for details to configure shares.h]hcRefer to ksmbd.conf.example in ksmbd-utils, See ksmbd.conf manpage for details to configure shares.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh block_quote)}(h$ man ksmbd.conf h]h)}(h$ man ksmbd.confh]h$ man ksmbd.conf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjubeh}(h]h ]h"]h$]h&]uh1j6hjubah}(h]h ]h"]h$]h&]jjuh1j_hhhKhjubeh}(h]h ]h"]h$]h&]uh1j6hj3hhhNhNubj7)}(hCreate user/password for SMB share. - See ksmbd.adduser manpage. $ man ksmbd.adduser $ sudo ksmbd.adduser -a h](h)}(h#Create user/password for SMB share.h]h#Create user/password for SMB share.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubj`)}(hhh]j7)}(hnSee ksmbd.adduser manpage. $ man ksmbd.adduser $ sudo ksmbd.adduser -a h](h)}(hSee ksmbd.adduser manpage.h]hSee ksmbd.adduser manpage.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubh)}(hQ$ man ksmbd.adduser $ sudo ksmbd.adduser -a h]hQ$ man ksmbd.adduser $ sudo ksmbd.adduser -a }(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1j6hj ubah}(h]h ]h"]h$]h&]jjuh1j_hhhKhjubeh}(h]h ]h"]h$]h&]uh1j6hj3hhhNhNubj7)}(hXInsert the ksmbd.ko module after you build your kernel. No need to load the module if ksmbd is built into the kernel. - Set ksmbd in menuconfig(e.g. $ make menuconfig) [*] Network File Systems ---> SMB3 server support (EXPERIMENTAL) $ sudo modprobe ksmbd.ko h](h)}(huInsert the ksmbd.ko module after you build your kernel. No need to load the module if ksmbd is built into the kernel.h]huInsert the ksmbd.ko module after you build your kernel. No need to load the module if ksmbd is built into the kernel.}(hjI hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjE ubj`)}(hhh]j7)}(hSet ksmbd in menuconfig(e.g. $ make menuconfig) [*] Network File Systems ---> SMB3 server support (EXPERIMENTAL) $ sudo modprobe ksmbd.ko h]hdefinition_list)}(hhh]hdefinition_list_item)}(hSet ksmbd in menuconfig(e.g. $ make menuconfig) [*] Network File Systems ---> SMB3 server support (EXPERIMENTAL) $ sudo modprobe ksmbd.ko h](hterm)}(h/Set ksmbd in menuconfig(e.g. $ make menuconfig)h]h/Set ksmbd in menuconfig(e.g. $ make menuconfig)}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhje ubh definition)}(hhh]j_ )}(hhh]jd )}(hc[*] Network File Systems ---> SMB3 server support (EXPERIMENTAL) $ sudo modprobe ksmbd.ko h](jj )}(h[*] Network File Systems --->h]h[*] Network File Systems --->}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhj ubjz )}(hhh](j)}(h' SMB3 server support (EXPERIMENTAL) h]h)}(h& SMB3 server support (EXPERIMENTAL)h]h& SMB3 server support (EXPERIMENTAL)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubh)}(h$ sudo modprobe ksmbd.koh]h$ sudo modprobe ksmbd.ko}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jy hj ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj~ ubah}(h]h ]h"]h$]h&]uh1j^ hj{ ubah}(h]h ]h"]h$]h&]uh1jy hje ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj` ubah}(h]h ]h"]h$]h&]uh1j^ hjZ ubah}(h]h ]h"]h$]h&]uh1j6hjW ubah}(h]h ]h"]h$]h&]jjuh1j_hhhKhjE ubeh}(h]h ]h"]h$]h&]uh1j6hj3hhhNhNubj7)}(h8Start ksmbd user space daemon $ sudo ksmbd.mountd h](h)}(hStart ksmbd user space daemonh]hStart ksmbd user space daemon}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubj)}(h$ sudo ksmbd.mountd h]h)}(h$ sudo ksmbd.mountdh]h$ sudo ksmbd.mountd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1j6hj3hhhhhNubj7)}(hUAccess share from Windows or Linux using SMB3 client (cifs.ko or smbclient of samba) h]h)}(hTAccess share from Windows or Linux using SMB3 client (cifs.ko or smbclient of samba)h]hTAccess share from Windows or Linux using SMB3 client (cifs.ko or smbclient of samba)}(hj& hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj" ubah}(h]h ]h"]h$]h&]uh1j6hj3hhhhhNubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1j1hj hhhhhK|ubeh}(h] how-to-runah ]h"] how to runah$]h&]uh1hhhhhhhhKzubh)}(hhh](h)}(hShutdown KSMBDh]hShutdown KSMBD}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjM hhhhhKubj2)}(hhh]j7)}(h?kill user and kernel space daemon # sudo ksmbd.control -s h]j_ )}(hhh]jd )}(h:kill user and kernel space daemon # sudo ksmbd.control -s h](jj )}(h!kill user and kernel space daemonh]h!kill user and kernel space daemon}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhjh ubjz )}(hhh]h)}(h# sudo ksmbd.control -sh]h# sudo ksmbd.control -s}(hj} hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjz ubah}(h]h ]h"]h$]h&]uh1jy hjh ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhje ubah}(h]h ]h"]h$]h&]uh1j^ hja ubah}(h]h ]h"]h$]h&]uh1j6hj^ hhhNhNubah}(h]h ]h"]h$]h&]j@ jA jB hjC jD uh1j1hjM hhhhhKubeh}(h]shutdown-ksmbdah ]h"]shutdown ksmbdah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hHow to turn debug print onh]hHow to turn debug print on}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhKubh)}(h)Each layer /sys/class/ksmbd-control/debugh]h)Each layer /sys/class/ksmbd-control/debug}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj hhubj2)}(hhh](j7)}(h?Enable all component prints # sudo ksmbd.control -d "all" h]j_ )}(hhh]jd )}(h:Enable all component prints # sudo ksmbd.control -d "all" h](jj )}(hEnable all component printsh]hEnable all component prints}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhj ubjz )}(hhh]h)}(h# sudo ksmbd.control -d "all"h]h!# sudo ksmbd.control -d “all”}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jy hj ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj ubah}(h]h ]h"]h$]h&]uh1j^ hj ubah}(h]h ]h"]h$]h&]uh1j6hj hhhNhNubj7)}(hjEnable one of the components (smb, auth, vfs, oplock, ipc, conn, rdma) # sudo ksmbd.control -d "smb" h]j_ )}(hhh]jd )}(heEnable one of the components (smb, auth, vfs, oplock, ipc, conn, rdma) # sudo ksmbd.control -d "smb" h](jj )}(hFEnable one of the components (smb, auth, vfs, oplock, ipc, conn, rdma)h]hFEnable one of the components (smb, auth, vfs, oplock, ipc, conn, rdma)}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhj ubjz )}(hhh]h)}(h# sudo ksmbd.control -d "smb"h]h!# sudo ksmbd.control -d “smb”}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj. ubah}(h]h ]h"]h$]h&]uh1jy hj ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj ubah}(h]h ]h"]h$]h&]uh1j^ hj ubah}(h]h ]h"]h$]h&]uh1j6hj hhhNhNubj7)}(huShow what prints are enabled. # cat /sys/class/ksmbd-control/debug [smb] auth vfs oplock ipc conn [rdma] h]j_ )}(hhh]jd )}(hkShow what prints are enabled. # cat /sys/class/ksmbd-control/debug [smb] auth vfs oplock ipc conn [rdma] h](jj )}(hShow what prints are enabled.h]hShow what prints are enabled.}(hjb hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhj^ ubjz )}(hhh]j_ )}(hhh]jd )}(hK# cat /sys/class/ksmbd-control/debug [smb] auth vfs oplock ipc conn [rdma] h](jj )}(h$# cat /sys/class/ksmbd-control/debugh]h$# cat /sys/class/ksmbd-control/debug}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhjv ubjz )}(hhh]h)}(h%[smb] auth vfs oplock ipc conn [rdma]h]h%[smb] auth vfs oplock ipc conn [rdma]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jy hjv ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhjs ubah}(h]h ]h"]h$]h&]uh1j^ hjp ubah}(h]h ]h"]h$]h&]uh1jy hj^ ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj[ ubah}(h]h ]h"]h$]h&]uh1j^ hjW ubah}(h]h ]h"]h$]h&]uh1j6hj hhhNhNubj7)}(hbDisable prints: If you try the selected component once more, It is disabled without brackets.h]j_ )}(hhh]jd )}(h]Disable prints: If you try the selected component once more, It is disabled without brackets.h](jj )}(hDisable prints:h]hDisable prints:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1ji hhhKhj ubjz )}(hhh]h)}(hMIf you try the selected component once more, It is disabled without brackets.h]hMIf you try the selected component once more, It is disabled without brackets.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jy hj ubeh}(h]h ]h"]h$]h&]uh1jc hhhKhj ubah}(h]h ]h"]h$]h&]uh1j^ hj ubah}(h]h ]h"]h$]h&]uh1j6hj hhhNhNubeh}(h]h ]h"]h$]h&]j@ jA jB hjC jD uh1j1hj hhhhhKubeh}(h]how-to-turn-debug-print-onah ]h"]how to turn debug print onah$]h&]uh1hhhhhhhhKubeh}(h]ksmbd-smb3-kernel-serverah ]h"]ksmbd - smb3 kernel serverah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj= error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j j jKjHjjjCj@jjjJ jG j j j j u nametypes}(j jKjjCjjJ j j uh}(j hjHhjhj@jjjNjG j j jM j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.