Samba搭建部署


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了。