背景
因为需要通过windows来访问Linux上的文件,所以考虑采用Samba技术,Samba 服务器的工作原理是:让NETBIOS(Windows95网络邻居的通讯协议)和SMA Server Message Block)这两个协议运行于TCP/IP通信协议之上,并且使用Windows 95的NETBEUI协议让LINUX 可以在网络邻居上被Windows 95看到。 其中最重要的就是SMB协议(Server Message Block),这是一个用于不同计算机之间共享打印机、串行口和通讯抽象(如命名管道、邮件插槽等)的协议。SMB协议是一个非常重要的协议,在所有 的Microsoft Windows系列操作系统中广为应用。 Samba是SMB服务器在类UNIX系统上的实现。它是开放源代码的GPL自由软件。目前Samba可以在几乎所有的UNIX变种上运行。
环境
Samba安装和配置
workgroup = WORKGROUP
server string = SVN Server
security = user
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
client lanman auth = yes
lanman auth = yes
username map = /etc/samba/smbusers
log file = /var/log/samba/log.%m
max log size = 1000
#==== Share Definitions ====
[homes]
comment = Home Directories
browseable = no
writable = yes
[public]
comment = Public Stuff
path = /home/public // 设置共享路径
public = yes
browseable = yes
writable = yes
valid users = wur,root
用命令添加系统用户,添加用户到Samba数据库,以及设置路径权限:
修改共享目录安全属性,由于centos默认samba不能访问任何文件夹,需要通过改变文件夹安全属性获得访问权限,否则无法访问(关键)
chcon -R -t samba_share_t /srv/samba
典型问题
tree connect failed: NT_STATUS_BAD_NETWORK_NAME 。
添加samba端口访问允许,注意一定要添加在ACCEPT行后面,不可添加在最后
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT -A INPUT -p udp -m udp --dport 137 -j ACCEPT -A INPUT -p udp -m udp --dport 138 -j ACCEPT
samba_domain_controller --> off
samba_enable_home_dirs --> off (这一项默认是关闭的)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
我们需要将samba_enable_home_dirs --> off这一项开启...使用下面的命令..
[root@station195 share]# setsebool -P samba_enable_home_dirs on
[root@station195 share]# getsebool -a |grep samba
samba_domain_controller --> off
samba_enable_home_dirs --> on(这一项已经开启了)
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
2. 在windows上访问不到linux的共享目录
单击[开始]——[运行] 输入 “secpol.msc”打开管理工具,展开“本地策略”;
然后,单击“安全选项”。 双击“网络安全:LAN Manager 身份验证级别”;
最后,单击列表中:发送LM和NTLMv2,如果已协商,则使用NTLMv2协议
或者smbmount //192.168.0.1/share /mnt -o username=user%passwd
在虚拟机中的CentOS在使用windows下使用ssh登录时(iptables已开启),在输入用户名后,输入密码选项要延迟几十秒才出现,就是
login as: root
找到UseDNS,修改为no
UseDNS no