介绍
samba是在linux系统上实现smb协议的一个免费软件,由服务器及客户端程序构成。samba最大的作用就是可以用于linux与windows系统直接的文件共享和打印共享,samba既可以用于windows与Linux之间的文件共享,也可以用于linux与linux之间的资源共享。
安装samba
dnf -y install samba samba-client
修改配置
vim /etc/samba/smb.conf
部分配置介绍
#全局配置
[global]
server string=smb文件共享服务 #设定samba server的注释,支持变量 t%-访问时间 I%-客户端IP m%-客户端主机名 M%-客户端域名 S%-客户端用户名
workgroup = samba #设定samba server加入的工作组或者域
security = user #设置用户访问samba server的验证方式,一共有四种验证方式。
#share:不需要提供用户名和密码,安全性能较低。
#user:samba server共享目录只能被授权的用户访问,由samba server负责检查账号和密码的正确性。账号和密码要在本samba server中建立。
#server:依靠其他sindows NT/2000或samba server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的sindows用户和口令集中到一个NT系统上,使用windows NT进行samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,samba将使用用户级安全模式作为替代的方式。
#domain:域安全级别,使用主域控制器(PDC)来完成认证。
passdb backend = tdbsam #用户后台。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam是security account manager(安全账户管理)的简写。
printing = cups #设置samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx
printcap name = cups #设置共享打印机的配置文件。可为路径:/etc/printcap
load printers = yes #设置是否在启动samba时就共享打印机。
cups options = raw #通用Unix打印系统配置参数
interfaces = lo ens33 192.168.157.129/24 127.0.0.1/24 #设置samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址,空格分隔。
guert account = pcguest #设定访问samba server的来宾帐户(即访问时不用输入用户名和密码的帐户,也就是匿名用户),若设为pcguest的话则为默认为nobody用户。
log file = /var/log/samba/%m.log #日志文件的储存位置和文件名(%m代表客户端主机名)
max log size = 0 #设定日志文件的最大容量,单位KB,这里的预设值0代表不做限制。
password server = 127.0.0.1 #指定某台服务器(包括windows 和 linux)的密码,作为用户登入时验证的密码。此项需配合security = server时,才可设定本参数。
password level = 8 #密码位数
username level = 4 #用户名位数
encrypt passwords = Yes #设定是否对samba的密码加密。
smb passwd file = /etc/samba/smbpasswd #设定samba的密码文件
local master = no #设定samba server是否要担当LMB角色(LMB负责收集本地网络的Browse List资源),通常无特殊原因设为no
os level = 33 #设定samba server的os level. os level从 0 到 255 . winNT的os level为33, win95/98的os level 是 1 .若要拿samba server 当LMB或DMB则它的os level至少要大于NT的33以上。
domain master = no #设定samba server是否要担当DMB角色(DMB会负责收集其他子网的Browse List资源),通常无特殊原因设为no
preferred master = yes #设定samba server是否要担当PDC角色(PDC会负责追踪网络帐户进行的一切变更),通常无特殊原因设为no,(同一网段内不可有两个PDC,他们会每5分钟抢主控权一次)
wins support = yes #设定samba server是否想网络提供WINS服务,通常无特殊原因设为no。除非所处网络上没有主机提供WINS服务且需要此台samba server提供WINS服务是才设yes,其他wins support和wins server只能选择一个
wins server = 192.168.0.1 #设定samba server是否要使用别台主机提供的WINS服务,通常无特殊原因设为no。除非所处网络上有一台主机提供WINS服务才要设yes,其他wins support和wins server
#分享的资源名称
[homes]
comment = Home Directories #描述
admin users = root #该共享的管理者,多个用户中间用逗号隔开
valid users = %S,%D%w%S #允许访问该共享的用户,多个用户或者组中间用逗号隔开,如果要加入一个组就用"@+组名"表示。%S表示目录登录用户
browseable = Yes #是否隐藏目录(知道目录同样可以访问)
read only = No #是否只读
inherit acls = Yes #是否继承acl权限设置
public = No #不允许匿名用户访问,Yes允许
path = /var/tmp #共享目录路径,可以用%u、%m这样的宏来代替路径里的lnix用户和客户机的netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。
create mask = 0600 #控制用户端创建文件的权限
write list = @printadmin root #允许写入该共享的用户
force group = @printadmin #指定存取资源时须以此设定的群组使用者进入才能存取(@组名)
force user = root #指定存取资源时须以此设定的使用者进入才能存取(用户名)
directory mask = 0775 #控制用户端创建目录的权限
allow hosts = 192.168.157. #设定只有此网段/IP的用户才能访问共享资源
allwo hosts = 192.168.156. #allow hosts的排除ip
deny hosts = 1.1.1. #设定只有此网段/IP的用户不能访问共享资源
writable = yes #是否可写
printable = no #是否为共享段打印机
也可查看 /etc/samba/smb.conf.example
文件获取详细介绍
配置示例
假如我现在需要配置一个work共享目录,配置如下:
[global]
server string=smb文件共享服务
workgroup = root
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
interfaces = lo ens33 192.168.157.129/24 127.0.0.1/24
max log size = 0
[work]
comment = work目录
admin users = root
valid users = @root
browseable = No
read only = No
inherit acls = Yes
public = No
path = /work
create mask = 0644
directory mask = 0744
write list = root
force group = @root
force user = root
allow hosts = 192.168.157.
可使用testparm
命令来查看配置是否正常
其他设置
smbpasswd -a root #先设置登入用户及密码,需要与smb.conf中的admin users配置一致
systemctl stop firewalld.service #临时关闭防火墙
systemctl disable firewalld #禁止开启启动
setenforce 0 #临时关闭SELinux权限
vim /etc/selinux/config #永久关闭,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
启动服务
systemctl restart smb
systemctl enable smb
评论