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