做家庭服务器的时候因为想到在家本地管理文件方便,于是接受了网友的安利,搞了一波Samba,就简单写一下Samba的搭建是怎么弄的吧。
安装过程
安装方法很简单,直接使用yum安装就可以了。
yum install -y samba配置过程
配置步骤
- 创建系统账户,并把账户拉入samba的授权组
- 修改配置文件,调整全局配置和添加用户权限
- 启动samba服务,并设置为开机启动
创建账户
创建的账户是系统账户,但是要注意的是,samba虽然使用的是系统账户,但是samba的账户密码和系统密码不是一回事。
先讲创建账户,因为只是用于samba,所以不需要指定目录、bash等等。值得注意的是,也可以不申请账户,可以直接使用Root账户。
用以下命令:
useradd 账户名 //用户创建
passwd 账户名 //设置密码然后把账户拉进samba授权组
smbpasswd -a 账户名 //账户名指的是上面创建的账户接下来就是根据提示输入Samba登录的密码,上面说过了,samba的账户密码和系统密码不是一回事,用户无法使用账户密码登录到Samba中,当然也可以设置和账户密码一样方便记忆。
Samba命令
这里提一下Samba的smbpasswd命令
smbpasswd -a //增加samba用户
smbpasswd -d //冻结samba用户
smbpasswd -e //解冻samba用户
smbpasswd -n //Samba用户的密码设置为空
smbpasswd -x //删除samba用户
配置文件
配置文件路径:/etc/samba/smb.conf
配置文件内有一些已有的内容,用户主要看[global],用户可以添加自己的账户名
首先看看global
【该内容来自网络,文章末尾贴上连接】:
以下内容根据用户需要添加或者修改,不需要直接添加所有内容。
[global]
config file = /etc/samba/host/smb.conf.%m
//config file可以让你使用另一个配置文件来覆盖默认的配置文件。如果文件不存在,则该项无效。
假设 主机a 在访问Samba Server时,希望能使用它自己的配置文件,可以先在/etc/samba/host/下为 主机a 配置一个名为smb.conf.a的文件,然后在smb.conf中加入这条参数。这样当 主机a 请求连接Samba时,smb.conf.%m就被替换成smb.conf.a。对于 主机a 而言,它所使用的Samba服务就是由smb.conf.a定义的,但是其他机器访问Samba依然还是使用原来默认的smb.conf。参数中的%m是一个后缀,代表多个配置文件不同的后缀,而文件的后缀需要和主机名对应。
workgroup = WORKGROUP
//设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
//设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
netbios name = smbserver
//设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
//设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
//表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=M1,M2
表示容许来自M1和M2两台计算机连接
hosts allow=@pega
表示容许来自pega网域的所有计算机连接
max connections = 0
//max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
deadtime = 0
//deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
time server = yes/no
//time server用来设置让nmdb成为windows客户端的时间服务器。
log file = /var/log/samba/log.%m
//设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
max log size = 50
//设置Samba Server日志文件的最大容量,单位为kB,0代表不限制。
security = user
//设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
passdb backend = tdbsam
//passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
encrypt passwords = yes/no
//是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
smb passwd file = /etc/samba/smbpasswd
//用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
username map = /etc/samba/smbusers
//用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
guest account = nobody
//用来设置guest用户名。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
//用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
domain master = yes/no
//设置Samba服务器是否要成为网域主浏览器,网域主浏览器可以管理跨子网域的浏览服务。
local master = yes/no
//local master用来指定Samba Server是否试图成为本地网域主浏览器。如果设为no,则永远不会成为本地网域主浏览器。但是即使设置为yes,也不等于该Samba Server就能成为主浏览器,还需要参加选举。
preferred master = yes/no
//设置Samba Server一开机就强迫进行主浏览器选举,可以提高Samba Server成为本地网域主浏览器的机会。如果该参数指定为yes时,最好把domain master也指定为yes。使用该参数时要注意:如果在本Samba Server所在的子网有其他的机器(不论是windows NT还是其他Samba Server)也指定为首要主浏览器时,那么这些机器将会因为争夺主浏览器而在网络上大发广播,影响网络性能。如果同一个区域内有多台Samba Server,将上面三个参数设定在一台即可。
os level = 200
//设置samba服务器的os level。该参数决定Samba Server是否有机会成为本地网域的主浏览器。os level从0到255,winNT的os level是32,win95/98的os level是1。Windows 2000的os level是64。如果设置为0,则意味着Samba Server将失去浏览选择。如果想让Samba Server成为PDC,那么将它的os level值设大些。
domain logons = yes/no
//设置Samba Server是否要做为本地域控制器。主域控制器和备份域控制器都需要开启此项。
wins support = yes/no
//设置samba服务器是否提供wins服务。
wins server = wins服务器IP地址
//设置Samba Server是否使用别的wins服务器提供wins服务。
wins proxy = yes/no
//设置Samba Server是否开启wins代理服务。
dns proxy = yes/no
//设置Samba Server是否开启dns代理服务。
load printers = yes/no
//设置是否在启动Samba时就共享打印机。
printcap name = cups
//设置共享打印机的配置文件。
printing = cups
//设置Samba共享打印机的类型。现在支持的打印系统有:bsd, sysv, plp, lprng, aix, hpux, qnx接下来看一下用户自定义:
用户直接在配置文件末尾开启一个,格式:[自定义用户名]
本文以test为例
[test]
comment = test //Samba服务器介绍,可自定义
path = /path/to/share //用于共享的目录路径
public = yes|no //是否允许guest用户访问
writable = yes|no //允许在heijunma目录下写入
directory mask = 0775 //默认创建目录权限,遵循Linux文件权限代号
create mask = 0775 //默认创建文件权限,遵循Linux文件权限代号
valid users = test //允许访问该共享的用户,需要参与了samba组的用户
write list = test //可写入共享的用户列表,需要参与了samba组的用户
browseable = yes|no //该指定共享目录可浏览
available = yes|no //该指定共享资源可使用
Samba端口
| TCP | UDP |
|---|---|
| 139 | 137 |
| 445 | 138 |
开启服务
systemctl start smb
Windows挂载方法
打开资源管理器,在路径栏输入\\ip,记得一定是反斜杠,然后右击共享的文件夹,选择映射即可,盘符没有要求。
注意事项
- 记得一定要关闭SElinux。
- 如果打开了防火墙,请先用
netstat -an查一下开放了Samba的哪个端口,然后添加放行端口就可以了
参考文献
最后一次更新于2020-04-03




0 条评论