一、安装samba服务
apt install samba samba-common -y
安装过程
二、编辑smb配置文件
在/etc/samba/smb.conf末尾中添加
[backup] //此处是路径,例如//10.13.14.2/backups comment = backups //描述 path = /zfs/backups //共享的文件夹 guest ok = no //不允许访客 browseable = no //不允许浏览 write list = root //运行root读写
三、添加用户
smbpasswd -a root
如果是对zfs设smb共享直接启用zfs的sharesmb即可
zfs set sharesmb=on zfs #zfs是zpool的名字
四、重启SMB服务
systemctl restart smbd
查看smb服务的账户有哪些
pdbedit -L
五、如果不使用root账号,新建其他账号访问SMB
#新增系统用户 useradd smbuser1 useradd smbuser2 useradd smbuser3 #新增smb用户 smbpasswd -a smbuser1 smbpasswd -a smbuser2 smbpasswd -a smbuser3
六、创建共享文件夹
mkdir /var/smb/smbuser1 -p mkdir /var/smb/smbuser2 -p mkdir /var/smb/smbuser3 -p
七、修改共享文件夹的权限
chown -R smbuser1 /var/smb/smbuser1/ chown -R smbuser2 /var/smb/smbuser2/ chown -R smbuser3 /var/smb/smbuser3/
八、修改smb配置文件
在 /etc/samba/smb.conf末尾添加
[smbuser1] comment = smbuser1 files path = /var/smb/smbuser1 guest ok = no browseable = no write list = smbuser1 [smbuser2] comment = smbuser2 files path = /var/smb/smbuser2 guest ok = no browseable = no write list = smbuser2 [smbuser3] comment = smbuser3 files path = /var/smb/smbuser3 guest ok = no browseable = no write list = smbuser3
或者
cat >> /etc/samba/smb.conf <<EOF [smbuser1] comment = smbuser1 files path = /var/smb/smbuser1 guest ok = no browseable = no write list = smbuser1 [smbuser2] comment = smbuser2 files path = /var/smb/smbuser2 guest ok = no browseable = no write list = smbuser2 [smbuser3] comment = smbuser3 files path = /var/smb/smbuser3 guest ok = no browseable = no write list = smbuser3 EOF
#重启服务 systemctl restart smbd
smb.conf文件配置说明
常用的全局选项及说明如下所示 先说一下samba定义的变量: %S = 当前服务名(如果有的话) %P = 当前服务的根目录(如果有的话) %u = 当前服务的用户名(如果有的话) %g = 当前用户说在的主工作组 %U = 当前对话的用户名 %G = 当前对话的用户的主工作组 %H = 当前服务的用户的Home目录 %v = Samba服务的版本号。 %h = 运行Samba服务机器的主机名 %m = 客户机的NETBIOS名称 %L = 服务器的NETBIOS名称 %M = 客户机的主机名 %N = NIS服务器名 %p = NIS服务的Home目录 %R = 说采用的协议等级(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1) %d = 当前服务进程的ID %a = 客户机的结构(只能识别几项:Samba,WfWg,WinNT,Win95) %I = 客户机的IP %T = 当前日期和时间 1、workgroup 该选项设置Samba服务器所属工作组名称,通过网上邻居可以从该工作组中找到该Samba服务器。默认设置如下: workgroup = WORKGROUP 2、wins support 该选项设置Samba服务器是否作为WINS服务器。如果要启用该选项,则不能设置wins server选项,默认设置如下 ; wins support = no 选项默认都是被注释掉了 3、wins serve 该选项指定WINS服务器的IP地址或主机名。默认设置如下: ; wins server = w.x.y.z 选项默认都是被注释掉了 4、interfaces 和bind interfaces only = yes 如果服务器有多个IP地址或网络接口,可以使用interfaces选项把IP地址或网络接口列出来。如果bind interfacesonly选项设置为yes,则表示Samba将绑定(监听)interfaces选项所设置的IP地址或网络接口,只通过这个些IP地址或网络接口提供服务,默认设置如下: ; interfaces = 127.0.0.0/8 eth0 ; bind interfaces only = yes 上面两个选项默认都是被注释掉了 5、dns proxy 该选项设置是否启用DNS代理功能,默认设置如下: dns proxy = no 6、log file 该选项用来设置Samba日志文件的存放位置和文件名称,默认设置如下: log file = /var/log/samba/log.%m 这个选项中的.%m是Samba配置文件的保留变量,表示客户端的NetBIOS名称。 7、max log size 日志文件最大能达到多少Kbytes,如果超过该限制,则Samba自动在当前的日志文件名后面加上“.old”然后创建一个新的日志文件继续写入。如果为0,则表示没有大小限制。默认设置如下: max log size = 1000 8、syslog only 设置Samba只通过syslog进行日志记录。默认设置如下: ; syslog only = no 默认这个选项被注销掉 9、syslog syslog的日志级(0,err)(1,warning)(2,notice)(3,ifno)(4或以上,debug)。默认设置如下: syslog = 0 10、server role 服务器角色。定义Samba将以何种模式操作。可能的值是“独立服务器”、“成员服务器”、“经典主域服务器”、“经典备份域控制器”、“活动目录域控制器”,默认设置如下: server role = standalone server 11、passdb backend 密码数据库格式,之前samba服务器的用户信息都是以数据文件信息存放,为了加快速度, 目前密码文件已经转为使用数据库了! 默认的数据库格式为tdbsam,存放在/var/lib/samba/private/passdb.tdb,早期使用smbpasswd命令来管理用户密码, 后来使用 TDB数据库,因此建议使用新的 pdbedit 指令来管理用户数据smbpasswd仍然可以使用。默认设置如下: passdb backend = tdbsam 12、obey pam restrictions 在Samba中集成PAM的访问控制功能。默认设置如下: obey pam restrictions = yes 13、 unix password sync = yes 当用户改变samba加密的密码时,SAMBA会试着更新UNIX用户密码。默认设置如下: unix password sync = yes 14、passwd program 这个就指定更改密码的命令。默认设置如下: passwd program = /usr/bin/passwd %u 15、passwd chat 更改密码时的对话。默认设置如下: passwd chat = Enter\snew\s\spassword:* %n\n Retype\snew\s\spassword:* %n\n password\supdated\ssuccessfully . 16、pam password change 为samba打开pam改变密码控制机制的支持。默认设置如下: pam password change = yes 17、map to guest 这个配置的意思是将所有samba系统主机所不能正确识别的用户都映射成guest用户。默认设置如下: map to guest = bad user 18、usershare max shares 最大用户共享数量,0表示禁用用户共享。默认设置如下: usershare max shares = 100 19、usershare allow guests 是否允许guest用户访问,这相当于在共享定义中设置guest ok = yes选项,最终以共享中的设置为准。 usershare allow guests = yes 以下是smb.conf配置文件中没有提到的,但是可以通过testparm -v命令查看到默认设置,如果不符合自己的实际设置,可以在配置文件中加入相应 的选项。 20、netbios name = DEBIAN 设置Samba Server的NetBIOS名称,在“网上邻居”中显示的主机名,如果不填,则默认会使用该服务器的DNS名称的第一部分。 21、server string = Samba 4.5.12-Debian 设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。 22、hosts allow = 127. 192.168.1 192.168.10.1 设置允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。这选项也可以 在共享段起作用,只对某个共享的目录单独起作用。 hosts deny 与hosts allow 刚好相反。 ALL 表示所有用户,例如:hosts allow = ALL EXCEPT 表示排除,例如:允许除192.168.1.100以为的所有主机访问,格式为 hosts allow = ALL EXCEPT 192.168.1.100 23、max connections = 0 max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。 24、deadtime = 0 deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。 25、time server = yes/no time server用来设置让nmdb成为windows客户端的时间服务器 26、security = user 设置用户访问Samba Server的验证方式,一共有四种验证方式。 user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 domain:域安全级别,使用主域控制器(PDC)来完成认证。 auto:这是Samba中的默认安全设置,Samba会通过服务器角色参数(如果设置)来确定安全模式。 ads:在此模式下,Samba将充当ADS领域中的域成员 在samba4中share 和 server验证方式已被弃用 27、encrypt passwords = yes/no 是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。 28、username map = /etc/samba/smbusers 用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。 29、guest account = nobody 用来设置Samba中guest用户对用的系统用户名。 30、load printers = yes/no 设置是否在启动Samba时就共享打印机。现行几乎都是网络打印机了,默认关闭就可以,这里也不讨论打印机的问题。 31、 smb ports = 139 445 指定服务监听SMB流量的端口。 常用的共享选项及说明 在该段中指定了一个通过Samba进行共享的目录,定义用户访问该目录的各种设置。如下所示: [共享名称]:这个共享名称很重要,它是一个代号而已,用户在“网上邻居”中所看到的共享目录名 comment = 任意字符串 说明:comment是对该共享的描述,可以是任意字符串。 path = 共享目录路径 说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。 browseable = yes/no 说明:browseable用来指定该共享是否在“网上邻居”中可见。 writable = yes/no 说明:writable用来指定该共享路径是否可写。 read only = yes/no 说明:设置共享目录为只读,这个选项和writable是互斥的,最好不要两个同时出现如果同时出现,那么最后出现的那个设置为主要的设置。 available = yes/no 说明:available用来指定该共享资源是否可用。 admin users = 该共享的管理者 说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba3.0中,如果用户验证方式设置成“security=share”时,此项无效。 例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。 valid users = 允许访问该共享的用户 说明:valid users用来指定允许访问该共享资源的用户。 例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。) invalid users = 禁止访问该共享的用户 说明:invalid users用来指定不允许访问该共享资源的用户。 例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。) write list = 允许写入该共享的用户 说明:write list用来指定可以在该共享下写入文件的用户。 例如:write list = bobyuan,@bob public = yes/no 说明:public用来指定该共享是否允许guest账户访问。 guest ok = yes/no 说明:意义同“public”。 create mask = 0700 说明:指定用户通过Samba在该共享目录中创建文件的默认权限。0600代表创建文件的权限为rw———- directory mask = 0700 说明:指定用户通过Samba在该共享目录中创建目录的默认权限。0600代表创建目录的权限为rwx——— 32、vfs objects = recycle及以下数行 recycle:repository = .recycle recycle:exclude = .tmp|.temp recycle:keeptree = yes recycle:versions = yes 在客户端执行删除操作时,不是将文件立即彻底删除,而是移动到一个临时目录中,便于以后需要的时候予以恢复。关于各项的含义,可以参考下面的网页: https://manpages.ubuntu.com/manpages/trusty/man8/vfs_recycle.8.html