GNU Linux-libre 6.8.7-gnu
[releases.git] / fs / smb / client / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 config CIFS
3         tristate "SMB3 and CIFS support (advanced network filesystem)"
4         depends on INET
5         select NLS
6         select NLS_UCS2_UTILS
7         select CRYPTO
8         select CRYPTO_MD5
9         select CRYPTO_SHA256
10         select CRYPTO_SHA512
11         select CRYPTO_CMAC
12         select CRYPTO_HMAC
13         select CRYPTO_AEAD2
14         select CRYPTO_CCM
15         select CRYPTO_GCM
16         select CRYPTO_ECB
17         select CRYPTO_AES
18         select KEYS
19         select DNS_RESOLVER
20         select ASN1
21         select OID_REGISTRY
22         select NETFS_SUPPORT
23         help
24           This is the client VFS module for the SMB3 family of network file
25           protocols (including the most recent, most secure dialect SMB3.1.1).
26           This module also includes support for earlier dialects such as
27           SMB2.1, SMB2 and even the old Common Internet File System (CIFS)
28           protocol.  CIFS was the successor to the original network filesystem
29           protocol, Server Message Block (SMB ie SMB1), the native file sharing
30           mechanism for most early PC operating systems.
31
32           The SMB3.1.1 protocol is supported by most modern operating systems
33           and NAS appliances (e.g. Samba, Windows 11, Windows Server 2022,
34           MacOS) and even in the cloud (e.g. Microsoft Azure) and also by the
35           Linux kernel server, ksmbd.  Support for the older CIFS protocol was
36           included in Windows NT4, 2000 and XP (and later). Use of dialects
37           older than SMB2.1 is often discouraged on public networks.
38           This module also provides limited support for OS/2 and Windows ME
39           and similar very old servers.
40
41           This module provides an advanced network file system client for
42           mounting to SMB3 (and CIFS) compliant servers.  It includes support
43           for DFS (hierarchical name space), secure per-user session
44           establishment via Kerberos or NTLMv2, RDMA (smbdirect), advanced
45           security features, per-share encryption, packet-signing, snapshots,
46           directory leases, safe distributed caching (leases), multichannel,
47           Unicode and other internationalization improvements.
48
49           In general, the default dialects, SMB3 and later, enable better
50           performance, security and features, than would be possible with CIFS.
51
52           If you need to mount to Samba, Azure, ksmbd, Macs or Windows from this
53           machine, say Y.
54
55 config CIFS_STATS2
56         bool "Extended statistics"
57         depends on CIFS
58         default y
59         help
60           Enabling this option will allow more detailed statistics on SMB
61           request timing to be displayed in /proc/fs/cifs/DebugData and also
62           allow optional logging of slow responses to dmesg (depending on the
63           value of /proc/fs/cifs/cifsFYI). See Documentation/admin-guide/cifs/usage.rst
64           for more details. These additional statistics may have a minor effect
65           on performance and memory utilization.
66
67           If unsure, say Y.
68
69 config CIFS_ALLOW_INSECURE_LEGACY
70         bool "Support legacy servers which use less secure dialects"
71         depends on CIFS
72         default y
73         help
74           Modern dialects, SMB2.1 and later (including SMB3 and 3.1.1), have
75           additional security features, including protection against
76           man-in-the-middle attacks and stronger crypto hashes, so the use
77           of legacy dialects (SMB1/CIFS and SMB2.0) is discouraged.
78
79           Disabling this option prevents users from using vers=1.0 or vers=2.0
80           on mounts with cifs.ko
81
82           If unsure, say Y.
83
84 config CIFS_UPCALL
85         bool "Kerberos/SPNEGO advanced session setup"
86         depends on CIFS
87         help
88           Enables an upcall mechanism for CIFS which accesses userspace helper
89           utilities to provide SPNEGO packaged (RFC 4178) Kerberos tickets
90           which are needed to mount to certain secure servers (for which more
91           secure Kerberos authentication is required). If unsure, say Y.
92
93 config CIFS_XATTR
94         bool "CIFS extended attributes"
95         depends on CIFS
96         help
97           Extended attributes are name:value pairs associated with inodes by
98           the kernel or by users (see the attr(5) manual page for details).
99           CIFS maps the name of extended attributes beginning with the user
100           namespace prefix to SMB/CIFS EAs.  EAs are stored on Windows
101           servers without the user namespace prefix, but their names are
102           seen by Linux cifs clients prefaced by the user namespace prefix.
103           The system namespace (used by some filesystems to store ACLs) is
104           not supported at this time.
105
106           If unsure, say Y.
107
108 config CIFS_POSIX
109         bool "CIFS POSIX Extensions"
110         depends on CIFS && CIFS_ALLOW_INSECURE_LEGACY && CIFS_XATTR
111         help
112           Enabling this option will cause the cifs client to attempt to
113           negotiate a feature of the older cifs dialect with servers, such as
114           Samba 3.0.5 or later, that optionally can handle more POSIX like
115           (rather than Windows like) file behavior.  It also enables support
116           for POSIX ACLs (getfacl and setfacl) to servers (such as Samba 3.10
117           and later) which can negotiate CIFS POSIX ACL support.  This config
118           option is not needed when mounting with SMB3.1.1. If unsure, say N.
119
120 config CIFS_DEBUG
121         bool "Enable CIFS debugging routines"
122         default y
123         depends on CIFS
124         help
125           Enabling this option adds helpful debugging messages to
126           the cifs code which increases the size of the cifs module.
127           If unsure, say Y.
128
129 config CIFS_DEBUG2
130         bool "Enable additional CIFS debugging routines"
131         depends on CIFS_DEBUG
132         help
133           Enabling this option adds a few more debugging routines
134           to the cifs code which slightly increases the size of
135           the cifs module and can cause additional logging of debug
136           messages in some error paths, slowing performance. This
137           option can be turned off unless you are debugging
138           cifs problems.  If unsure, say N.
139
140 config CIFS_DEBUG_DUMP_KEYS
141         bool "Dump encryption keys for offline decryption (Unsafe)"
142         depends on CIFS_DEBUG
143         help
144           Enabling this will dump the encryption and decryption keys
145           used to communicate on an encrypted share connection on the
146           console. This allows Wireshark to decrypt and dissect
147           encrypted network captures. Enable this carefully.
148           If unsure, say N.
149
150 config CIFS_DFS_UPCALL
151         bool "DFS feature support"
152         depends on CIFS
153         help
154           Distributed File System (DFS) support is used to access shares
155           transparently in an enterprise name space, even if the share
156           moves to a different server.  This feature also enables
157           an upcall mechanism for CIFS which contacts userspace helper
158           utilities to provide server name resolution (host names to
159           IP addresses) which is needed in order to reconnect to
160           servers if their addresses change or for implicit mounts of
161           DFS junction points. If unsure, say Y.
162
163 config CIFS_SWN_UPCALL
164         bool "SWN feature support"
165         depends on CIFS
166         help
167           The Service Witness Protocol (SWN) is used to get notifications
168           from a highly available server of resource state changes. This
169           feature enables an upcall mechanism for CIFS which contacts a
170           userspace daemon to establish the DCE/RPC connection to retrieve
171           the cluster available interfaces and resource change notifications.
172           If unsure, say Y.
173
174 config CIFS_NFSD_EXPORT
175         bool "Allow nfsd to export CIFS file system"
176         depends on CIFS && BROKEN
177         help
178           Allows NFS server to export a CIFS mounted share (nfsd over cifs)
179
180 if CIFS
181
182 config CIFS_SMB_DIRECT
183         bool "SMB Direct support"
184         depends on CIFS=m && INFINIBAND && INFINIBAND_ADDR_TRANS || CIFS=y && INFINIBAND=y && INFINIBAND_ADDR_TRANS=y
185         help
186           Enables SMB Direct support for SMB 3.0, 3.02 and 3.1.1.
187           SMB Direct allows transferring SMB packets over RDMA. If unsure,
188           say Y.
189
190 config CIFS_FSCACHE
191         bool "Provide CIFS client caching support"
192         depends on CIFS=m && FSCACHE || CIFS=y && FSCACHE=y
193         help
194           Makes CIFS FS-Cache capable. Say Y here if you want your CIFS data
195           to be cached locally on disk through the general filesystem cache
196           manager. If unsure, say N.
197
198 config CIFS_ROOT
199         bool "SMB root file system (Experimental)"
200         depends on CIFS=y && IP_PNP
201         help
202           Enables root file system support over SMB protocol.
203
204           Most people say N here.
205
206 endif