Browse Source

smbd: rename from cifsd, update to 3.0.1

* follow upstream rename to 'smbd' and 'smbd-tools'
* config is '/config/smbd' and '/etc/smbd/smb.conf'
* smbd: update to 3.0.1
* smbd: fixes delete access on readonly shares
* smbd: add patch to keep version metadata in kmod
* smbd: add synchrous kill_server patches
* smbd-tools: update to 3.0.1
* smbd-tools: userspace service is now 'usmbd'
* smbd-tools: userspace tools are: 'smbuseradd', 'smbshareadd' with /etc/smbd/smbdpwd.db
* smbd-tools: split package into server/utils (reduce size)
* smbd-tools: fix init (luci save&apply)
* smbd-tools: remove kill_server related timeouts

Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>
lilik-openwrt-22.03
Andy Walsh 4 years ago
parent
commit
6c9973a9d9
11 changed files with 231 additions and 343 deletions
  1. +0
    -53
      kernel/cifsd/Makefile
  2. +52
    -0
      kernel/smbd/Makefile
  3. +10
    -0
      kernel/smbd/patches/01-keep_kmod_metadata.patch
  4. +0
    -59
      net/cifsd-tools/Makefile
  5. +0
    -2
      net/cifsd-tools/files/cifsd.config
  6. +0
    -173
      net/cifsd-tools/files/smb.conf.help
  7. +113
    -0
      net/smbd-tools/Makefile
  8. +5
    -0
      net/smbd-tools/files/smb.conf.template
  9. +3
    -0
      net/smbd-tools/files/smbd.config
  10. +1
    -1
      net/smbd-tools/files/smbd.config.example
  11. +47
    -55
      net/smbd-tools/files/smbd.init

+ 0
- 53
kernel/cifsd/Makefile View File

@ -1,53 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cifsd
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd.git
PKG_SOURCE_DATE:=2019-11-27
PKG_SOURCE_VERSION:=b8675c8ac144ece00f3e6bcc5436c8ace99e23e9
PKG_MIRROR_HASH:=3d67af87f30d837f95510663efc42f1451651dc235987408924b56cb277fc8e8
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/fs-cifsd
SUBMENU:=Filesystems
TITLE:=CIFS/SMB kernel server support
URL:=https://github.com/cifsd-team/cifsd
FILES:=$(PKG_BUILD_DIR)/cifsd.ko
DEPENDS:= \
+kmod-nls-base \
+kmod-nls-utf8 \
+kmod-crypto-md4 \
+kmod-crypto-md5 \
+kmod-crypto-hmac \
+kmod-crypto-ecb \
+kmod-crypto-des \
+kmod-crypto-sha256 \
+kmod-crypto-cmac \
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm
endef
define KernelPackage/fs-cifsd/description
Kernel module for a CIFS/SMBv2,3 fileserver.
endef
# broken atm (needs CONFIG_KEYS=y)
#EXTRA_CFLAGS+=-DCONFIG_CIFSD_ACL
define Build/Compile
$(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
CONFIG_CIFS_SERVER=m \
modules
endef
$(eval $(call KernelPackage,fs-cifsd))

+ 52
- 0
kernel/smbd/Makefile View File

@ -0,0 +1,52 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=smbd
PKG_VERSION:=3.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/cifsd-team/$(PKG_NAME)/archive/$(PKG_VERSION)/
PKG_HASH:=6d1bf695aacd5a009eb30c10b31ff7c8942c8f201f7eb436b3cfa66f49d1f9f5
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
define KernelPackage/fs-smbd
SUBMENU:=Filesystems
TITLE:=SMB kernel server support
URL:=https://github.com/cifsd-team/smbd
FILES:=$(PKG_BUILD_DIR)/smbd.ko
DEPENDS:= \
+kmod-nls-base \
+kmod-nls-utf8 \
+kmod-crypto-md4 \
+kmod-crypto-md5 \
+kmod-crypto-hmac \
+kmod-crypto-arc4 \
+kmod-crypto-ecb \
+kmod-crypto-des \
+kmod-crypto-sha256 \
+kmod-crypto-cmac \
+kmod-crypto-sha512 \
+kmod-crypto-aead \
+kmod-crypto-ccm \
+kmod-crypto-gcm
endef
define KernelPackage/fs-smbd/description
Smbd is an In-kernel SMB2/3 fileserver.
It's an implementation of the SMB protocol in kernel space for sharing files and IPC services over network.
endef
define Build/Compile
$(KERNEL_MAKE) SUBDIRS="$(PKG_BUILD_DIR)" \
EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
CONFIG_SMB_SERVER=m \
modules
endef
$(eval $(call KernelPackage,fs-smbd))

+ 10
- 0
kernel/smbd/patches/01-keep_kmod_metadata.patch View File

@ -0,0 +1,10 @@
--- a/glob.h 2019-12-08
+++ b/glob.h 2019-12-08
@@ -7,6 +7,8 @@
#ifndef __SMBD_GLOB_H
#define __SMBD_GLOB_H
+#undef CONFIG_MODULE_STRIPPED
+
#include <linux/ctype.h>
#include <linux/version.h>

+ 0
- 59
net/cifsd-tools/Makefile View File

@ -1,59 +0,0 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cifsd-tools
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/cifsd-team/cifsd-tools.git
PKG_SOURCE_DATE:=2019-11-27
PKG_SOURCE_VERSION:=06fd4153a5d5af1f96a20234f397bd149a8e4832
PKG_MIRROR_HASH:=2849d2af471e327abc8d67afc91ca767c410e2b307d6554531a0b387d9ad909a
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_REMOVE_FILES:=autogen.sh
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/cifsd-tools
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
TITLE:=Kernel CIFS/SMB server support and userspace tools
URL:=https://github.com/cifsd-team/cifsd-tools
DEPENDS:=+kmod-fs-cifsd +glib2 +libnl-core +libnl-genl
endef
define Package/cifsd-tools/description
Userspace tools (cifsd, cifsuseradd, cifsshareadd) for the CIFS/SMB kernel fileserver.
The config file location is /etc/cifs/smb.conf
endef
define Package/cifsd-tools/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcifsdtools.so* $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{cifsuseradd,cifsshareadd,cifsd} $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/cifs $(1)/etc/init.d
$(INSTALL_CONF) ./files/cifsd.config $(1)/etc/config/cifsd
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/cifs/
$(INSTALL_BIN) ./files/cifsd.init $(1)/etc/init.d/cifsd
# copy examples until we have a wiki page
$(INSTALL_DATA) ./files/cifsd.config.example $(1)/etc/cifs/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/Documentation/configuration.txt $(1)/etc/cifs/
endef
define Package/cifsd-tools/conffiles
/etc/config/cifsd
/etc/cifs/smb.conf.template
/etc/cifs/smb.conf
/etc/cifs/cifsdpwd.db
endef
$(eval $(call BuildPackage,cifsd-tools))

+ 0
- 2
net/cifsd-tools/files/cifsd.config View File

@ -1,2 +0,0 @@
config globals
option 'description' 'Cifsd on OpenWrt'

+ 0
- 173
net/cifsd-tools/files/smb.conf.help View File

@ -1,173 +0,0 @@
;******************************************************************************
; File to define cifsd configuration parameters which are comparable with
; samba's ones
;
; Supported [global] level parameters list:
; - server string
; This controls what string will show up in browse lists next
; to the machine name
; - workgroup
; This controls what workgroup your server will appear to be
; in when queried by clients
; - netbios name
; This sets the NetBIOS name by which a SMB server is known.
; By default it is the same as the first component of the host's
; DNS name. If a machine is a browse server or logon server this
; name (or the first component of the hosts DNS name) will be
; the name that these services are advertised under.
; - server min protocol
; This setting controls the minimum protocol version that the
; server will allow the client to use.
; - server max protocol
; The value of the parameter (a string) is the highest protocol
; level that will be supported by the server.
; - server signing
; This controls whether the client is allowed or required to use
; SMB1 and SMB2 signing. Possible values are default, auto,
; mandatory and disabled.
; - guest account
; This is a username which will be used for access to services
; which are specified as guest ok.
; - max active sessions
; This option allows the number of simultaneous connections to
; a service to be limited.
; - ipc timeout
; This option specifies the number of seconds server will wait
; for the userspace to reply to heartbeat frames. If user space
; is down for more than `ipc timeout` seconds the server will
; reset itself - close all sessions and all TCP connections.
; - restrict anonymous
; The setting of this parameter determines whether user and
; group list information is returned for an anonymous connection.
; - map to guest
; This parameter can take four different values, which tell cifsd
; what to do with user login requests.(bad user
; - bind interfaces only
; This global parameter allows the cifsd admin to limit what
; interfaces on a machine will serve SMB requests.
; - interfaces
; This option allows you to override the default network
; interfaces list that cifsd will use for browsing. The option
; takes only list of interface name.
; - deadtime
; The value of the parameter (a decimal integer) represents
; the number of minutes of inactivity before a connection is
; considered dead, and it is disconnected. The deadtime only
; takes effect if the number of open files is zero.
; - root directory
; Sets up a root (base) directory for all shares. In some
; sense it's equal to chroot(). When this option set all shares'
; paths become relative to root directory, IOW the file name
; lookup resolves '/root directory/share path/file path' path.
;
; Supported [share] level parameters list:
; - comment
; comment string to associate with the new share
; - path
; This parameter specifies a directory to which the user of the
; service is to be given access.
; - guest ok
; If this parameter is yes for a service, then no password is
; required to connect to the service.
; - read only
; If this parameter is yes, then users of a service may not
; create or modify files in the service's directory.
; - browseable
; This controls whether this share is seen in the list of
; available shares in a net view and in the browse list.
; - write ok
; - writeable
; Inverted synonym for read only.
; - store dos attributes
; If this parameter is set cifsd attempts to first read DOS
; attributes (SYSTEM, HIDDEN, ARCHIVE or READ-ONLY) from a
; filesystem extended attribute, before mapping DOS attributes
; to UNIX permission bits (such as occurs with map hidden and
; map readonly).
; - oplocks
; This boolean option tells cifsd whether to issue oplocks
; (opportunistic locks) to file open requests on this share.
; - create mask
; When a file is created, the necessary permissions are calculated
; according to the mapping from DOS modes to UNIX permissions, and
; the resulting UNIX mode is then bit-wise 'AND'ed with this
; parameter.
; - directory mask
; This parameter is the octal modes which are used when converting
; DOS modes to UNIX modes when creating UNIX directories.
; - force group
; This specifies a UNIX group name that will be assigned as
; the default primary group for all users connecting to this
; service.
; - force user
; This specifies a UNIX user name that will be assigned as
; the default user for all users connecting to this service.
; - hide dot files
; This is a boolean parameter that controls whether files starting
; with a dot appear as hidden files.
; - hosts allow
; This parameter is a comma, space, or tab delimited set of hosts
; which are permitted to access a service
; - hosts deny
; The opposite of allow hosts - hosts listed here are NOT
; permitted access to services unless the specific services have
; their own lists to override this one. Where the lists conflict,
; the allow list takes precedence.
; - valid users
; This is a list of users that should be allowed to login to this
; service
; - invalid users
; This is a list of users that should not be allowed to login to
; this service.
; - read list
; This is a list of users that are given read-only access to
; a service.
; - write list
; This is a list of users that are given read-write access to
; a service.
; - max connections
; This option allows the number of simultaneous connections to
; a service to be limited.
; - veto files
; This is a list of files and directories that are neither visible
; nor accessible.
;
; Veto any files containing the word Security,
; any ending in .tmp, and any directory containing the
; word root.
; veto files = /*Security*/*.tmp/*root*/
;
; Veto the Apple specific files that a NetAtalk server
; creates.
; veto files = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
; - inherit owner
; The ownership for new files and directories should be controlled
; by the ownership of the parent directory.
; Valid options are yes or no.
; - inherit smack
; This parameter can be used to ensure that if smack label exist
; on parent directories.
; Valid options are yes or no.
; - force create mode
; This parameter specifies a set of UNIX mode bit permissions
; that will always be set on a file created by cifsd.
; - force directory mode
; This parameter specifies a set of UNIX mode bit permissions
; that will always be set on a directory created by cifsd.
;
; Rules to update this file:
; - Every [share] definition should start on new line
; - Every parameter should be indented with single tab
; - There should be single spaces around equal (eg: " = ")
; - Multiple parameters should be separated with comma
; eg: "invalid users = usr1,usr2,usr3"
;
; Make sure to configure the server after making changes to this file.
;******************************************************************************
[global]
netbios name = CIFSD
[homes]
comment = content server share
path = /tmp

+ 113
- 0
net/smbd-tools/Makefile View File

@ -0,0 +1,113 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=smbd-tools
PKG_VERSION:=3.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/cifsd-team/$(PKG_NAME)/archive/$(PKG_VERSION)/
PKG_HASH:=29f85de8b39608d28ec406c8b557264e004f5dce9b307a37f8324508cdea6217
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
PKG_LICENSE:=GPL-2.0-or-later
PKG_LICENSE_FILES:=COPYING
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_REMOVE_FILES:=autogen.sh
PKG_BUILD_DEPENDS:=glib2
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/smbd-tools/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Filesystem
TITLE:=Kernel SMB
URL:=https://github.com/cifsd-team/smbd-tools
DEPENDS:= +glib2 $(ICONV_DEPENDS) $(INTL_DEPENDS)
endef
define Package/smbd-tools/Default/description
Userspace tools for the SMB kernel fileserver (smbd.ko).
The config file location is /etc/smbd/smb.conf
endef
define Package/smbd-server
$(call Package/smbd-tools/Default)
TITLE+= server
DEPENDS+= +kmod-fs-smbd +libnl-core +libnl-genl
endef
define Package/smbd-server/description
installs: usmbd
This provides the basic fileserver service and is the minimum needed to serve 'guest only' file shares or use a existing smbdpwd.db.
endef
define Package/smbd-server/config
select PACKAGE_wsdd2
endef
define Package/smbd-utils
$(call Package/smbd-tools/Default)
TITLE+= user management-util
endef
define Package/smbd-utils/description
installs: smbuseradd (smbshareadd)
Tool needed to create the smbdpwd.db, to manage per user share passwords.
NOTE: Not needed for 'guest only' shares.
endef
define Package/smbd-utils/config
config SMBD_UTILS_SHAREADD
bool "Add smbshareadd util"
depends on PACKAGE_smbd-utils
help
Add the smbshareadd tool, to directly manipulate the /etc/smbd/smb.conf.
default n
endef
CONFIGURE_ARGS += \
--disable-shared \
--enable-static
# CONFIGURE_VARS += GLIB_LIBS="$(STAGING_DIR)/usr/lib/libglib-2.0.a"
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
TARGET_LDFLAGS += -Wl,--gc-sections,--as-needed -liconv $(if $(INTL_FULL),-lintl)
define Package/smbd-server/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/usmbd $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/smbd $(1)/etc/init.d
$(INSTALL_CONF) ./files/smbd.config $(1)/etc/config/smbd
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/smbd/
$(INSTALL_BIN) ./files/smbd.init $(1)/etc/init.d/smbd
# copy examples until we have a wiki page
$(INSTALL_DATA) ./files/smbd.config.example $(1)/etc/smbd/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/Documentation/configuration.txt $(1)/etc/smbd/
endef
define Package/smbd-utils/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbuseradd $(1)/usr/sbin/
ifeq ($(CONFIG_SMBD_UTILS_SHAREADD),y)
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbshareadd $(1)/usr/sbin/
endif
endef
define Package/smbd-server/conffiles
/etc/config/smbd
/etc/smbd/smb.conf.template
/etc/smbd/smb.conf
/etc/smbd/smbdpwd.db
endef
$(eval $(call BuildPackage,smbd-server))
$(eval $(call BuildPackage,smbd-utils))

net/cifsd-tools/files/smb.conf.template → net/smbd-tools/files/smb.conf.template View File


+ 3
- 0
net/smbd-tools/files/smbd.config View File

@ -0,0 +1,3 @@
config globals
option 'workgroup' 'WORKGROUP'
option 'description' 'SMBD on OpenWrt'

net/cifsd-tools/files/cifsd.config.example → net/smbd-tools/files/smbd.config.example View File


net/cifsd-tools/files/cifsd.init → net/smbd-tools/files/smbd.init View File


Loading…
Cancel
Save