* 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
@ -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)) |
@ -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)) |
@ -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> |
@ -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)) |
@ -1,2 +0,0 @@ | |||
config globals | |||
option 'description' 'Cifsd on OpenWrt' |
@ -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 |
@ -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)) |
@ -0,0 +1,3 @@ | |||
config globals | |||
option 'workgroup' 'WORKGROUP' | |||
option 'description' 'SMBD on OpenWrt' |