CentOS7配置samba4.2到Win8
2016-07-05 11:29
323 查看
环境与目标的说明:VMware11内的系统CentOS7通过samba4.2共享文件夹到主机Win8上。
samba服务在配置的时候老是出错,让我非常郁闷,今天临睡前突然想到一个问题,我在securecrt上登录的是root账号,而samba上配置的是另一账号,结果导致权限不足。因为是用root登录的所以对权限不足一直没考虑到用户去,只是一直在考虑配置问题,想到这点后,起来测试下,果然可以了。
配置samba服务的过程还是遇到蛮多问题的,在这里简要记录下。
这个指令在之前的版本是没有的
启动一个服务:systemctl start smb nmb
关闭一个服务:systemctl stop smb nmb
显示一个服务的状态:systemctl status smb
在开机时启用一个服务:systemctl enable smb
在开机时禁用一个服务:systemctl disable smb
所以我们需要使用systemctl来管理samba服务的,不过如果使用之前的service命令的话也会自动重定向到systemctl上。
网上很多教程都说要关了防火墙 service iptables stop ,但是发现iptables根本就没启动。还一度以为已经关闭了,其实CentOS7已经默认没用iptables了。CentOS7使用的防火墙是firewalld,我们需要使用 systemctl stop firewalld.service 关闭了防火墙。
直接关闭是比较简单粗暴的,最好配置成支持samba服务的。
重启系统后会发现防火墙又启动了,如果想要启动系统时不启动防火墙就使用上面说的指令
systemctl disable firewalld.service
这个命令类似于 chkconfig iptables off
把disable换成enable,或把off换成on 就是表明启动系统时也启动该服务
selinux 用 setenforce 0 关闭,getenforce查看当前等级状态
setenforce 0 是临时关闭,重启后还是会开启
如果要重启后生效,则需修改
一开始我并不知道有
这里对于解决此类配置问题有一个很好的启发就是要能够便捷修改,然后能够运行,在运行的基础上可以看到报错,继续修改。不然一切都是瞎忙活,可惜我花了好多时间瞎忙活,而没有去考虑这个解决问题的过程本身就出现的问题,无法有效看到问题的报错!
后来发现了两个重要的工具,testparm 和 smbclient 。
1
testparm 这个工具是用来测试smb.conf文件的配置是否正确,非常好用。可以通过这个工具的提示来查看那里配置出错。
2
smbclient 本地smb客户端工具,就算testparm测试通过也不代表能够正确连接,还是需要smbclient来进行测试连接的。
导致NT_STATUS_ACCESS_DENIED 报错的情况有多种,网上有教程说其中一种情况就是global的配置和共享目录的配置相互冲突的问题,大概是global的security=share和public=yes冲突的问题。
需要记录的一点是,samba4.2是不支持security=share的配置的,默认使用sercurity=user + map to guest=Bad User来等同于 sercurity=share的配置。
我配置的是不开放所有用户,只开放给指定用户,所以用了 sercurity=user,public=no。
共享目录配置了valid users,public不设置,默认为no。然而还是遇到了一个小坑,就是文章最开始讲到的,用户问题了。
以下为 smb.conf
samba服务在配置的时候老是出错,让我非常郁闷,今天临睡前突然想到一个问题,我在securecrt上登录的是root账号,而samba上配置的是另一账号,结果导致权限不足。因为是用root登录的所以对权限不足一直没考虑到用户去,只是一直在考虑配置问题,想到这点后,起来测试下,果然可以了。
配置samba服务的过程还是遇到蛮多问题的,在这里简要记录下。
systemctl
CentOS7 与之前的版本有一个区别就是使用systemctl来管理系统上的服务这个指令在之前的版本是没有的
启动一个服务:systemctl start smb nmb
关闭一个服务:systemctl stop smb nmb
显示一个服务的状态:systemctl status smb
在开机时启用一个服务:systemctl enable smb
在开机时禁用一个服务:systemctl disable smb
所以我们需要使用systemctl来管理samba服务的,不过如果使用之前的service命令的话也会自动重定向到systemctl上。
防火墙 和 selinux
如果没有配置过防火墙的话,会直接阻挡了samba服务。网上很多教程都说要关了防火墙 service iptables stop ,但是发现iptables根本就没启动。还一度以为已经关闭了,其实CentOS7已经默认没用iptables了。CentOS7使用的防火墙是firewalld,我们需要使用 systemctl stop firewalld.service 关闭了防火墙。
直接关闭是比较简单粗暴的,最好配置成支持samba服务的。
重启系统后会发现防火墙又启动了,如果想要启动系统时不启动防火墙就使用上面说的指令
systemctl disable firewalld.service
这个命令类似于 chkconfig iptables off
把disable换成enable,或把off换成on 就是表明启动系统时也启动该服务
selinux 用 setenforce 0 关闭,getenforce查看当前等级状态
setenforce 0 是临时关闭,重启后还是会开启
如果要重启后生效,则需修改
/etc/selinux/config文件,将 SELINUX=enforcing 改为
SELINUX=disabled
samba
配置samba的过程就是不断修改/etc/samba/smb.conf,重启samba,查看服务是否生效的过程。
一开始我并不知道有
testparm和
smbclient这么好用的工具,导致samba服务启动后就直接去windows上映射网路驱动器。这样的测试过程是非常低效的,因为映射失败后通过windows上的反馈,很难知道错误的原因。根本不知道是windows的问题还是centos的问题,是samba配置权限问题还是路径问题,还是配置文件无法解析的问题。我们需要一个能明确看到报错信息的地方。
这里对于解决此类配置问题有一个很好的启发就是要能够便捷修改,然后能够运行,在运行的基础上可以看到报错,继续修改。不然一切都是瞎忙活,可惜我花了好多时间瞎忙活,而没有去考虑这个解决问题的过程本身就出现的问题,无法有效看到问题的报错!
后来发现了两个重要的工具,testparm 和 smbclient 。
1
testparm 这个工具是用来测试smb.conf文件的配置是否正确,非常好用。可以通过这个工具的提示来查看那里配置出错。
2
smbclient 本地smb客户端工具,就算testparm测试通过也不代表能够正确连接,还是需要smbclient来进行测试连接的。
[root@bogon ~]# smbclient //192.168.204.128/regulus Enter root's password: Domain=[WORKGROUP] OS=[Windows 6.1] Server=[Samba 4.2.10] tree connect failed: NT_STATUS_ACCESS_DENIED
导致NT_STATUS_ACCESS_DENIED 报错的情况有多种,网上有教程说其中一种情况就是global的配置和共享目录的配置相互冲突的问题,大概是global的security=share和public=yes冲突的问题。
需要记录的一点是,samba4.2是不支持security=share的配置的,默认使用sercurity=user + map to guest=Bad User来等同于 sercurity=share的配置。
我配置的是不开放所有用户,只开放给指定用户,所以用了 sercurity=user,public=no。
共享目录配置了valid users,public不设置,默认为no。然而还是遇到了一个小坑,就是文章最开始讲到的,用户问题了。
以下为 smb.conf
[root@bogon ~]# vim /etc/samba/smb.conf [global] workgroup=WORKGROUP netbios name=centos server string=Samba Server #security=share security=user #map to guest = Bad User [regulus] path=/home/regulus #readonly=yes writable=yes browseable=yes #guest ok=yes valid users=root ## 问题在于这里的用户一开始不是root,而smbclient的使用者 write list=root ## 就是root,所以有NT_STATUS_ACCESS_DENIED报错 create mask=0777 directory mask=0777 #public=yes [root@bogon ~]#
win8
centos上的服务配置好了,win8上的操作就简单很多了,只需要 “映射网络驱动器”,然后 //IP/regulus , 要勾选 “使用其他凭证连接”。最后输入用户名和密码就可以连上去了。反思
很多程序在配置过程中肯定会遇到问题的,关键的地方在于明确问题,然后有所针对地去修改。之前一直没弄好,就是连问题是什么都不知道!后面我又想到为什么不去查看下samba的日志呢,也许通过日志文件能能快速的发现问题。相关文章推荐
- 在 Linux 上安装 VMware 工具
- 把Chrome OS安装在VMWare下及Chrome OS的关键特性和一些截图
- 安装 VMware Tools 时报 客户机操作系统已将 CD-ROM 门锁定,并且可能正在使用CD-ROM
- 企业云 2.0:VMware 眼中的企业 IT 的未来
- Windows 8虚拟机不能全屏的解决方法
- 使用VMware Workstation虚拟机保护数据
- VMware Workstation 5.5.3 Build 34685 汉化补丁
- Win8系统中使用PowerShell安装APPX应用命令介绍
- C#实现判断操作系统是否为Win8以上版本
- Samba NT Domain Controller
- Vmware虚拟机的安装及配置方法
- win8下XAMPP中Apache模块无效(apache无法打开)的解决方法
- nasm实现的用vmware运行自做的linux启动盘的引导代码
- CentOS 7中安装mysql server的步骤分享
- Install ESX Server 3.5/3i onto ESX Server安装方法
- RHE5服务器配置-搭建Samba服务器步骤(图)
- centos 7安装mysql5.5的方法
- centos 7安装mysql5.5和安装 mariadb使用的命令
- Centos7 Mysql 5.6 多主一从 解决方案与详细配置
- Android仿Win8界面开发