简单整理下步骤,详细的见下文。
step1:安装samba
yum install samba samba-client samba-swat
step2:配置/etc/samba/smb.conf
step3:启动samba
/etc/init.d/smb restart
/etc/init.d/nmb restart
step4:增加samba用户
smbpasswd -a root
step5:其他设置(做成开机自启动的方式,编辑 /etc/rc.local)
/etc/init.d/iptables stop // 关闭防火墙
setenforce 0 // 关闭SELinux
step6:设置开机自启动
chkconfig --level 35 smb on
chkconfig --level 35 nmb on
然后restart下smb和nmb。
step7:在windows上或者linux用step4设置的账户密码登陆即可。
step8:改下linux ip为静态ip。编辑:/etc/sysconfig/network-scripts/ifcfg-eth0
=========================分割线========================
首先,在网上查到一份说明比较清晰的配置文章(详细点击此处),这里就不再赘述,该文章给出了从安装samba服务到samba具体配置的全过程,并有详细的解释。
下面是我按照上面提到的文章配置后的一些错误提示及解决方案。
我的smb.conf文件主要内容如下:
[global]
security = share
[public]
comment = Public Stuff
path = /projects
public = yes
writable = yes
browseable = yes
然后重启下smb和nmb服务之后。
/etc/init.d/smb restart
/etc/init.d/nmb restart
会出现如下错误:
windows下的错误提示为:可以浏览文件,但是无法新建文件、写入文件等等,如下图所示。
可以浏览文件。
不能写入文件。
linux下的错误提示为:
该错误的解决有2种途径。
一种是在smb.conf的[global]字段中加入
client lanman auth = yes
client ntlmv2 auth = no
另一种是将security = share改为security = user,即使用用户名密码进行连接。
如此,上述错误解决。
又遇到一个错误,可以浏览文件,可以新建文件,可以写入文件,但是不能删除文件或者重命名文件。
linux下的错误提示为:
该问题的解决方案为改变文件夹权限,需要对我们samba共享的文件夹属性进行更改,改为777。如下:
chmod 777 /projects/
如此,上述错误解决。
有时候会出现连接失败的错误。
windows下错误提示就是连接失败。
linux下的错误提示为:
这是因为smb在linux下没有配置成为开机自启动的服务。
chkconfig smb on
chkconfig nmb on
这2个命令可以解决该问题。
有时候会出现很奇怪的问题,比如在vs下编辑,不能保存,显示错误:没有权限写入,但是如果用记事本编辑/projects/里的文件又可以保存。这个是属主的问题,在linux下用chown改变文件属主为你的samba账户即可。
后来的解决办法是samba不用share模式,用user模式。
将windows下的用户名cj添加到samba用户中,
useradd cj
smbpasswd -a cj
并改变共享文件夹属性,
chown -R cj:cj /projects
chmod 777 /projects
解决了。
PS:
1. 有时候提示无法访问的时候,也可以试试换一个目录试试,比如我最开始的时候设置的共享目录为/home/cj/projects,提示无法访问,后来就把该目录换为/projects/,放在根目录下,就可以了。(这里应该还是用户权限的问题)
2. 防火墙没关闭可能也会影响samba共享,关闭防火墙的命令为:
/etc/init.d/iptables stop 关闭防火墙
3. SELinux没有关闭也可能会影响samba共享,关闭SELinux的命令为:
setenforce 0
或者去修改SELinux的配置文件,使之关闭。
再PS:
samba配置中一些常用命令
/etc/init.d/smb restart 启动smb服务
/etc/init.d/nmb restart 启动nmb服务
testparm 查看配置信息
pdbedit -L 查看有哪些smaba用户
smbclient //192.168.112.133/public -U cj 使用cj用户连接samba服务器
ll /projects/ 查看/project/文件夹属性
vi /etc/samba/smb.conf 编辑samba配置文件
chkconfig smb on 启动smb服务
chkconfig nmb on 启动nmb服务
chkconfig --list 查看系统服务项
修改samba端口
在配置文件smb.conf的[global]字段中增加 smb ports = 端口号
曾今遇到的一个错误
在腾讯云上一台linux主机,想通过samba共享给本地windows或者本地linux,配置都正常,防火墙iptables和SElinux都关闭了,但是就是连不上。telnet看了下139(一般用在局域网共享)和445(一般用在Internet共享,不再同一个局域网)端口都无法连通,原因应该是电信运营商交换机那边直接封掉了这2个端口(应该是出于安全考虑,之前流行的那个NSA病毒啥的,有看到运营商封端口的新闻),后来通过配置smb.conf文件修改了samba共享的端口,就可以共享了。
但是问题又来了,共享给本地linux没问题,通过smbclient //192.168.112.133/public -U cj -p 10000连接没问题;但是共享给windows不知道怎么弄?在windows上映射网络驱动器没办法指定自定义端口。。。