- A+
Samba是一款在类Unix系统上实现SMB协议的免费开源软件,简单说就是在Linux上部署Samba服务端,在Windows的网上邻居就可以访问Linux上的共享数据。Samba4版本的配置方法和早期版本有很大不同,今天给大家分享最新版本Samba 4.8.0的简易配置教程。
实验环境 |
实验平台:VMware虚拟机
操作系统:CentOS 6.5 / Windows10
服务端IP:192.168.168.200
客户端IP:192.168.168.201
Samba:4.8.0
服务端篇 |
第一步 准备工作
禁用SElinux
- [root@Wanghualang ~]# setenforce 0
- [root@Wanghualang ~]# sed -ri 's#^(SELINUX=).*#\1disabled#g' /etc/selinux/config
禁用防火墙
- [root@Wanghualang ~]# service iptables stop
- [root@Wanghualang ~]# service ip6tables stop
- [root@Wanghualang ~]# chkconfig iptables off
- [root@Wanghualang ~]# chkconfig ip6tables off
安装常用软件
- [root@Wanghualang ~]# yum -y install wget vim
第二步 安装Samba
精简版的操作系统,在接下来的configure阶段肯定会出现缺失相关开发包的报错,根据提示安装相关开发包即可。教程中为了做到一气呵成,先提前安装好需要的开发包。
- [root@Wanghualang-A ~]# yum -y install gcc gcc-c++ python-devel gnutls-devel libacl-devel openldap-devel pam-devel
- [root@Wanghualang-A ~]# cd /usr/local/src/
- [root@Wanghualang-A src]# wget --no-check-certificate https://download.samba.org/pub/samba/stable/samba-4.8.0.tar.gz
- [root@Wanghualang-A src]# tar xzf samba-4.8.0.tar.gz
- [root@Wanghualang-A src]# cd samba-4.8.0
- [root@Wanghualang-A samba-4.8.0]# ./configure --prefix=/usr/local/samba --sysconfdir=/etc/samba
- [root@Wanghualang-A samba-4.8.0]# make
- [root@Wanghualang-A samba-4.8.0]# make install
第三步 配置Samba
创建配置文件
- [root@Wanghualang-A ~]# cp -rf /usr/local/src/samba-4.8.0/examples/smb.conf.default /etc/samba/smb.conf
配置命令环境变量
- [root@Wanghualang-A ~]# echo "export PATH="/usr/local/samba/sbin:$PATH"" >> /etc/profile
- [root@Wanghualang-A ~]# source /etc/profile
- [root@Wanghualang-A ~]# echo "export PATH="/usr/local/samba/bin:$PATH"" >> /etc/profile
- [root@Wanghualang-A ~]# source /etc/profile
创建Samba系统用户
- [root@Wanghualang-A ~]# groupadd samba
- [root@Wanghualang-A ~]# useradd -M samba -s /sbin/nologin -g samba
创建Samba管理用户,密码设置123456。注意,Samba管理用户和Samba系统用户,在创建顺序上两者之间是有前后关系的。必须先创建Samba系统用户,再创建Samba管理用户。
- [root@Wanghualang-A ~]# smbpasswd -a samba
创建数据文件夹
/data/samba提供给游客匿名访问,/data/samba_security提供给专人加密访问。
- [root@Wanghualang-A ~]# mkdir -p /data/samba_guest
- [root@Wanghualang-A ~]# mkdir /data/samba_security
- [root@Wanghualang-A ~]# chmod 777 -R /data/samba_guest
- [root@Wanghualang-A ~]# chown -R samba:samba /data/samba_security
按需配置文件,教程中把Samba工作组从MYGROUP修改为WORKGROUP,设置两个共享文件夹,一个提供给游客匿名访问,可读。另一个提供给专人加密访问,可读写。
- [root@Wanghualang-A ~]# sed -i 's/MYGROUP/WORKGROUP/' /etc/samba/smb.conf
- [root@Wanghualang-A ~]# sed -i '/workgroup = WORKGROUP/a\\map to guest = bad user' /etc/samba/smb.conf
- [root@Wanghualang-A ~]# sed -i '/workgroup = WORKGROUP/a\\security = user' /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "[Wanghualang_Samba_Guset]" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "comment = Wanghualang_Samba_Guset" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "path = /data/samba_guest" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "browseable = yes" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "guest ok = yes" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "[Wanghualang_Samba_Security]" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "comment = Wanghualang_Samba_Security" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "path = /data/samba_security" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "browseable = yes" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "writable = yes" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "security = user" >> /etc/samba/smb.conf
- [root@Wanghualang-A ~]# echo "valid users = samba" >> /etc/samba/smb.conf
第四步 设置开机启动
创建启动脚本
- [root@Wanghualang-A ~]# cp -rf /usr/local/src/samba-4.8.0/packaging/Example/samba.init /etc/init.d/samba
- [root@Wanghualang-A ~]# sed -i '1a # description: Starts and stops the Samba smbd and nmbd daemons' /etc/init.d/samba
- [root@Wanghualang-A ~]# sed -i '1a # chkconfig: - 91 35' /etc/init.d/samba
- [root@Wanghualang-A ~]# chmod 755 /etc/init.d/samba
- [root@Wanghualang-A ~]# chkconfig --add samba
- [root@Wanghualang-A ~]# chkconfig samba on
启动服务
- [root@Wanghualang-A ~]# service samba start
客户端篇 |
主要介绍CentOS、Windows如何访问Samba服务器,先从CentOS开始。
CentOS
第一步 安装Samba客户端
- [root@Wanghualang-B ~]# yum -y install samba-client cifs-utils
第二步 创建挂载点
创建两个目录,对应挂载Samba服务端的访客匿名共享、专人加密共享。
- [root@Wanghualang-B ~]# mkdir -p /data/{samba_guest,samba_security}
第三步 手动挂载
挂载访客匿名共享
- [root@Wanghualang-B ~]# mount -t cifs -o guest //192.168.168.200/Wanghualang_Samba_Guset /data/samba_guest
挂载专人加密共享
- [root@Wanghualang-B ~]# mount -t cifs -o username=samba,password=123456 //192.168.168.200/Wanghualang_Samba_Security /data/samba_security
第四步 自动挂载
实现自动挂载有两种方法,第一种简单粗暴,但安全性较差;第二种需要创建一个密码文件,安全性较高。
第一种
写入/etc/rc.local实现开机自动挂载,配置起来简单粗暴,但Samba登陆密码任何普通用户都可见,存在一定安全隐患。
- [root@Wanghualang-B ~]# echo "mount -t cifs -o guest //192.168.168.200/Wanghualang_Samba_Guset /data/samba_guest" >> /etc/rc.local
- [root@Wanghualang-B ~]# echo "mount -t cifs -o username=samba,password=123456 //192.168.168.200/Wanghualang_Samba_Security /data/samba_security" >> /etc/rc.local
第二种
写入/etc/fstab实现开机自动挂载,配置起来稍微麻烦,需要事先在普通用户无权访问的路径下创建一个Samba密码文件,但安全性较高。
创建Samba密码文件
- [root@Wanghualang-B ~]# echo "username=samba" >> /root/samba.pass
- [root@Wanghualang-B ~]# echo "password=123456" >> /root/samba.pass
将挂载信息写入/etc/fstab
- [root@Wanghualang-B ~]# echo "//192.168.168.200/Wanghualang_Samba_Guset /data/samba_guest cifs defaults,guest 0 0" >> /etc/fstab
- [root@Wanghualang-B ~]# echo "//192.168.168.200/Wanghualang_Samba_Security /data/samba_security cifs defaults,credentials=/root/samba.pass 0 0" >> /etc/fstab
扩展阅读展开
偶尔需要卸载远程Samba目录的时候,会提示设备正在使用(表面上看起来确实没占用),导致无法正常卸载远程挂载,具体报错如下:
umount: /data/samba_security: device is busy.
可以安装一个非常实用的工具,自动检测并杀死占用该挂载目录的一切进程,再尝试卸载。
- [root@Wanghualang-B ~]# yum -y install psmisc
- [root@Wanghualang-B ~]# fuser -m -v -i -k /data/samba_security/
- [root@Wanghualang-B ~]# umount /data/samba_security/
Windows10
直接打开我的电脑,在地址栏输入:\\192.168.168.200
- 微信赞助网站
-
- 支付宝赞助网站
-