samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件。
1.安装samba
使用Xshell以“root”用户远程连接CentOS7,进入系统命令行界面,使用“rpm -qi samba"命令查询是否已经安装了Samba,然后使用“yum install samba”命令,下载Samba包并安装
yum install samba
// 卸载命令
yum remove –y samba
2.创建账户
useradd name,如:
useradd xiaoer
// 删除账户
userdel xiaoer
smbpasswd –a tkl-share(设置samba账户和密码,即远程登陆账号密码,可以和root一样)
smbpasswd -a xiaoer
3.创建共享目录
我这里是在系统盘/home目录创建的共享目录,
mkdir /home/test
// 目录权限
chmod -R 777 /home/test
使用命令chmod -R 777/home/test
,将整个myshare文件夹与其中的文件和子目录的权限都设置为rwxrwxrwx,即所有人都可以查看操作
4.配置samba
注:smb.conf配置文件分为两大类,一个全局设置参数,一个是文件共享设置参数
使用命令cd /etc/samba
进入Samba配置文件目录,并使用ls
列出该目录下所有的文件,其中smb.conf~bak
,是使用命令cp smb.conf smb.conf~bak
对Samba配置文件做的一个备份,然后编辑 samba 的配置文件 smb.conf
,进行如下配置:
[global]
workgroup = workgroup // 设置为与Windows一样的workgroup
security = user // security:user表示用户名验证方式
server string = Tkl Samba Server %v
passdb backend = tdbsam
map to guest = Bad User // CentOS7以上必须设置,否则 samba 服务无法启动
printing = cups
printcap name = cups
load printers = yes
cups options = raw
netbios name = TklSamba
passdb backend = tdbsam
[test]
comment = yuandian // 描述信息
path = /home/test // 共享目录路径
# admin users = root // 设置共享的管理员,如果security =share 时,引项无效,多用户中间使用逗号隔开,例如admin users = root,user1,user2
valid users = root // 远程登陆用户,就是前面创建的用户(设置允许访问共享的用户,例如valid users = user1,user2,@group1,@group2(多用户或组使用逗号隔开,@group表示group用户组))
browseable = Yes // 设置共享是否可浏览,如果no就表示隐藏,需要通过IP+共享名称进行访问
# read only = No // 设置共享是否具有只读权限
# inherit acls = Yes
# write list = username // 设置在共享具有写入权限的用户,例如例如write list = user1,user2,@group1,@group2(多用户或组使用逗号隔开,@group表示group用户组)
writable = Yes // 设置共享是否具有可写权限
create mask = 0700 // 创建的文件权限为700
directory mask = 0775 // 创建的文件目录为 775
public = Yes // 设置共享是否允许guest账户访问
available = yes // 指定该共享资源是否可用
说明:
[global]
1. workgroup设置为与Windows一样的workgroup
2. security:user表示用户名验证方式,share表示不需要账号密码就可以访问(安全性低,且CentOS7以下可用,CentOS7以上会导导致 samba 服务无法启动)
3. map to guest = Bad User // CentOS7以上必须设置,否则 samba 服务无法启动
其他配置照着上面写即可
[test]
注意:
配置文件中writeable=yes 表示允许这个目录可写,只有设置了writeable=yes,后对create mask 和directory mask 等等一系列预设值才有效
5.关闭防火墙
/etc/init.d/iptables stop // 关闭防火墙
chkconfig --list iptables // 查看防火墙启动状态
chkconfig iptables off //关闭防火墙开机自动启动
注意:Samab服务开启之前需要关闭两个服务,iptables防火墙(如果你熟悉可以不关闭,放行smb的端口即可,SAMBA服务TCP端口139,445 UDP端口 137,138)
centOS7防火墙开放端口及重启
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=137/udp --permanent
firewall-cmd --zone=public --add-port=138/udp --permanent
firewall-cmd --reload
systemctl restart firewalld.service
6.关闭selinux
vim /etc/selinux/config // 永久关闭selinux
把 set SELINUX=disabled # SELINUX=enforcing改为SELINUX=disabled
7.启动 samba服务(smb服务名称)
systemctl start smb // 启动 samba 服务
systemctl enable smb // 设置开机启动 samba 服务
systemctl status smb // 查看 samba 服务启动状态
reboot
重启服务器
启动之后,在 windows 中,按住 win + r 输入Linux服务的ip与共享目录,如:\\192.168.102.101\test
,就可以访问到共享目录了。
注意:此时,可能会遇到一些 windows 7 访问时,输入用户与密码 会显示未知用户或密码错误
解决方法:
按住 win + r 输入 secpol.msc ,之后依次打开 本地策略 => 安全选项 => 网络安全LAN身份验证级别
改为 发送 LM 和 NTLM – 如果已协商,则使用 NTLMv2会话安全
再次访问,如果还不行就继续改为 仅发送 NTLMv2响应
,就ok了。