@@ -28,6 +28,7 @@ struct ksmbd_heartbeat {
#define KSMBD_GLOBAL_FLAG_SMB2_LEASES (1 << 0)
#define KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION (1 << 1)
#define KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL (1 << 2)
+#define KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION_OFF (1 << 3)
struct ksmbd_startup_request {
__u32 flags;
@@ -280,10 +280,13 @@ Maximum length that may be used in a SMB2 WRITE request sent by a client.
Default: \fBsmb2 max write = 4MB\fR \" SMB3_DEFAULT_IOSIZE
.TP
-\fBsmb3 encryption\fR (G)
-Use of SMB3 encryption is allowed.
+\fBserver smb encrypt\fR (G)
+A remote client is allowed or required to use SMB encryption.
+Setting it to \fBoff\fR globally will completely disable the encryption feature for all connections.
+Setting it to \fBdesired\fR on a share will turn on data encryption for this share for clients that support encryption.
+Setting it to \fBrequired\fR on a share will enforce data encryption for this share. i.e. clients that do not support encryption will be denied access to the share.
-Default: \fBsmb3 encryption = no\fR
+Default: \fBserver smb encrypt = desired\fR
.TP
\fBsmbd max io size\fR (G)
Maximum read/write size of SMB-Direct.
@@ -509,11 +509,17 @@ static gboolean global_group_kv(gpointer _k, gpointer _v, gpointer user_data)
return TRUE;
}
- if (!cp_key_cmp(_k, "smb3 encryption")) {
- if (cp_get_group_kv_bool(_v))
+ if (!cp_key_cmp(_k, "server smb encrypt")) {
+ if (!cp_key_cmp(_v, "required")) {
global_conf.flags |= KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION;
- else
+ global_conf.flags &= ~KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION_OFF;
+ } else if (!cp_key_cmp(_v, "off")) {
+ global_conf.flags |= KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION_OFF;
global_conf.flags &= ~KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION;
+ } else if (!cp_key_cmp(_v, "desired")) {
+ global_conf.flags &= ~KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION;
+ global_conf.flags &= ~KSMBD_GLOBAL_FLAG_SMB3_ENCRYPTION_OFF;
+ }
return TRUE;
}
Add 'server smb encrypt' parameter in ksmbd.conf to control data encryption mode with 3 options(off, desired, required). - Setting it to off globally will completely disable the encryption feature for all connections. - Setting it to desired on a share will turn on data encryption for this share for clients that support encryption. - Setting it to required on a share will enforce data encryption for this share. i.e. clients that do not support encryption will be denied access to the share Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> --- include/linux/ksmbd_server.h | 1 + ksmbd.conf.5.in | 9 ++++++--- tools/config_parser.c | 12 +++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-)