Samba 实现文件共享
简介
Linux系统与Windows系统之间共享文件资源,小文件可以使用lrzsz,大文件可以使用samba。
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
Samba 的安装
1、yum安装samba
yum install samba
2、修改配置文件,Samba服务程序的主配置文件 /etc/samba/smb.conf。
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global] #全局设置
workgroup = workgroup #工作组名称
security = user #安全验证方式,共有4种
map to guest = bad user #目录匿名访问
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[public] #共享名称
comment = cream mint #提示信息,任意写
path = /home/creammint #共享目录
public = yes #允许“所有人可见”
read only = no #允许写入操作
security = share | user | server | domain #安全验证的方式,总共有4种
- share: 安全级别模式:客户端登录samba 服务器,不需要输入用户名和密码就可以浏览samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba 服务器的安全性。
- user: 客户端登录samba 服务器,需要提×××法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式。
- server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
- domain:使用域控制器进行身份验证
3、创建Samba用户
上面设置的是用户口令认证模式(user);也是默认的模式,需要创建访问共享资源的账户信息。Samba服务程序的用户账号必须在当前系统中已经存在。
[root@yunwei-test ~]# useradd samba
[root@yunwei-test ~]# id samba
uid=1011(samba) gid=1011(samba) groups=1011(samba)
[root@yunwei-test ~]# pdbedit -a -u samba
new password: #输入登录密码
retype new password: #再次输入确认
Unix username: samba
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2653373350-3441109728-1676162852-1003
Primary Group SID: S-1-5-21-2653373350-3441109728-1676162852-513
Full Name:
Home Directory: \\shediaoprint\samba
HomeDir Drive:
Logon Script:
Profile Path: \\shediaoprint\samba\profile
Domain: SHEDIAOPRINT
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Thu, 09 Aug 2018 23:43:20 CST
Password can change: Thu, 09 Aug 2018 23:43:20 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@yunwei-test ~]#
pdbedit命令用于管理SMB服务程序的账户信息,格式为“pdbedit [参数] 账户”
- -a 用户名 #建立Samba用户
- -x 用户名 #删除Samba用户
- -L #列出用户列表
- -Lv #列出用户详细信息的列表
4、 创建共享目录,启动smb服务
[root@localhost ~]# mkdir /home/creammint
[root@localhost ~]# chown -R samba:samba /home/creammint
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl enable smb
5、Windows访问共享目录,windows键+R打开运行窗口,输入Samba服务器的IP地址。
6、输入pdbedit命令设置的用户名和密码登录。
就可以登录到共享界面中了,实现windows与linux的共享。
Samba服务配置
配置文件
/etc/samba/smb.conf #samba的主要配置文件
/usr/bin/smbclient #客户端功能
/usr/bin/smbstatus #服务器功能
/etc/samba/lmhosts #早期的 NetBIOS name
主配置文件由两部分组成:
Global Settings :与Samba服务整体运行环境有关的选项,它的设置是针对所有共享资源的
Share Definition:针对共享目录个别的设置,只对当前的共享资源起作用
/etc/samba/smb.conf 文件的开头部分为samba 配置简介,告诉我们smb.conf 文件的作用及相关信息。还有以“;”开头,这些都是samba 配置的格式范例,默认是不生效滴,可以通过去掉前面的“;”并加以修改来设置想使用的功能。
pdbedit使用
pdbedit用于在samba服务器中管理用户,常见用法:
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用户账号。
也可以使用"smbpasswd"命令添加和管理用户。
注意事项
网络连通性
安装和配置一步一步来,一般是不会有什么问题。但是更多的情况是在Windows的运行命令中,输入了\IP地址之后,没有任何反应。这是最麻烦的地方,因为完全不知道是什么原因导致的。
提供几个可能出问题的地方:
在配置Samba服务器的时候,可以将网络选择为bridge桥模式连接进行测试。
需要保证Linux下的IP和Windows下的IP处于同一网段中,且相互可以进行通信。
Linux 下直接配置ip
ifconfig eth0 223.3.119.130 (网卡改为相应的网卡,ip可以任意设置)
防火墙设置
如果防火墙不关闭,Windows和Samba之间的连通可能会被阻挡。(可以直接关闭防火墙或者设置端口放行,根据实际需要配置即可)
如果防火墙不关闭,Windows和Samba之间的连通可能会被阻挡。(可以直接关闭防火墙或者设置端口放行,根据实际需要配置即可)
配置后需要重启Samba服务器。
无法访问
如果使用windows访问samba,跳出以下对话框的错误:
[root@localhost ~]# cd /home/creammint # 进入到这个文件下
[root@localhost creammint]# chmod 777 pic # 执行以下命令
chmod 改变已有目录或文件的权限
chmod 设置已有目录或文件的权限。可以为指定范围的用户添加或删除权限。
权限范围的表示法如下:
u:User,即文件或目录的拥有者;
g:Group,即文件或目录的所属群组;
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a:All,即全部的用户,包含拥有者,所属群组以及其他用户;
权限设置如下:
r:读取权限,数字代号为“4”;
w:写入权限,数字代号为“2”;
x:执行或切换权限,数字代号为“1”;
-:不具任何权限,数字代号为“0”;
s:特殊功能说明:变更文件或目录的权限。