Samba属于GNU Public License(简称GPL)的软件;因此,你可以合法且免费地使用它;它重新实现了SMB/CIFS协议,可以在各个平台共享文件和打印机。
1991年,还是大学生的Andrew Tridgwell,有三台机器,分别是Microsoft的DOS系统、DEC的Digital Unix系统、以及Sun的Unix系统。当时的技术无法让三者共享文件。为此,他开发了samba并将其开源。
本来改名为smbserver,但是一家商业公司注册了SMBServer商标。他被告知不能使用。于是执行了grep -i '^s.*m.*b' /usr/share/dict/words,从中选择了samba这个词。
什么是SMB?SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议,而Samba则是将SMB协议搬到UNIX上来应用;Samba的核心是SMB(Server Message Block)协议。
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,更能与全世界的电脑分享资源;因为互联网上千千万万的主机所使用的通讯协议就是TCP/IP。
SMB是在会话层(ession layer)和表示层(presentation layer)以及小部分应用层(applicationlayer)的协议。SMB使用了NetBIOS的应用程序接口(Application Program Interface,简称API)。
另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为CIFS(Common Internet File System), 并且加入了许多新的特色,而Samba亦支持了NT Lan Manager 0.12等 SMB 的延伸协议,这是得Samba具有管理NT网域的能力。
访问需求如下
/home/samba/share 允许Share、SharePC访问; /home/samba/company 允许SharePC访问
共享名 | 路径 | 权限 |
---|---|---|
SHAREDOCS | /home/samba/share | 仅允许特定用户进行读写访问 |
COMPANYDOCS | /home/samba/company | 仅允许特定用户进行读写访问 |
1. 安装Samba
yum -y install samba samba-client samba-common
查看安装版本信息
[root@localhost samba]# rpm -qi samba
Name : samba
Epoch : 0
Version : 4.4.4
Release : 12.el7_3
Architecture: x86_64
Install Date: 2017年02月06日 星期一 20时44分28秒
Group : System Environment/Daemons
Size : 1869273
License : GPLv3+ and LGPLv3+
Signature : RSA/SHA256, 2017年01月18日 星期三 08时01分25秒, Key ID 24c6a8a7f4a80eb5
Source RPM : samba-4.4.4-12.el7_3.src.rpm
Build Date : 2017年01月17日 星期二 14时10分29秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.samba.org/
Summary : Server and Client software to interoperate with Windows machines
Description :
Samba is the standard Windows interoperability suite of programs for Linux and
Unix.
2. 配置Samba服务器
创建共享目录
cd /home
mkdir -p samba/share samba/company
配置内核参数
ulimit -n 16384
vim /etc/security/limits.conf
// 在最后加入以下内容
- nofile 16384
Tip: 这主要是避免在启动Samba时出现以下警告信息: rlimit_max: increasing rlimit_max (1024) tominimum Windows limit (16384)
备份原有的配置文件
# cd /etc/samba/
# cp smb.conf smb.conf.bak
删除原有所有内容,
echo '' > smb.conf
vim smb.conf
添加如下内容:
#======================= Global Settings =====================================
[global]
# ----------------------- Network Related Options -------------------------
# 定义工作组,也就是windows中的工作组概念
workgroup=WORKGROUP
# 定义Samba服务器的简要说明
server string= Samba Server Version %v
# 定义windows中显示出来的计算机名称
netbios name=CentOS_Samba
# ----------------------- Standalone Server Options ------------------------
security=user
# --------------------------- Logging Options -----------------------------
#定义Samba用户的日志文件,%m代表客户端主机名
log file = /var/log/samba/log.%m
#============================ Share Definitions ==============================
[SHAREDOCS]
comment=通用共享
path=/home/samba/share
browseable=yes
available=yes
writable=yes
admin users=@SharePC
valid users=@Share @SharePC
write list=@Share @SharePC
create mask=0770
directory mask=0770
[COMPANYDOCS]
comment=公司资料
path=/home/samba/company
public=no
browseable=yes
available=yes
writable=yes
admin users=@SharePC
valid users=@SharePC
write list=@SharePC
create mask=0770
directory mask=0770
3. 创建用户并分配权限
创建操作系统用户
useradd Share
useradd SharePC
修改操作系统用户的密码(我输入的是123456)
[root@localhost samba]# passwd Share
更改用户 Share 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
//效果同上
[root@localhost samba]# passwd SharePC
创建SAMBA用户
smbpasswd -a Share
smbpasswd -a SharePC
授权共享目录
chown Share share
chown SharePC company
4. 防火墙关闭
关闭firewall
systemctl stop firewalld.service //停止firewall
systemctl disable firewalld.service //禁止firewall开机启动
关闭iptables
service iptables stop
关闭SELinux:
setenforce 0
设置SELINUX=disabled(需要重启电脑)
vim /etc/selinux/config
//文件中设置,
SELINUX=disabled
//然后重启服务器。
5. 开机启动smb服务
systemctl restart smb
systemctl enable smb
systemctl status smb
6. 客户端链接
Linux
[root@localhost ~]# smbclient -L 192.168.2.206 -U Share
Enter Share's password:
Domain=[WORKGROUP //定义工作组,也就是WINDOWS中的工作组概念] OS=[Windows 6.1] Server=[Samba 4.4.4]
Sharename Type Comment
--------- ---- -------
SHAREDOCS Disk 通用共享
COMPANYDOCS Disk 公司资料
IPC$ IPC IPC Service (Samba Server Version 4.4.4 //定义Samba服务器的简要说明)
Domain=[WORKGROUP //定义工作组,也就是WINDOWS中的工作组概念] OS=[Windows 6.1] Server=[Samba 4.4.4]
Server Comment
--------- -------
Workgroup Master
--------- -------
Windows
共享文件夹:\\192.168.2.206\sharedocs
用户名:Share
MacOS
打开Finder(或在桌面),CMD + k,可以得到页面,输入:
smb://username@ip/sharename
smb://Share@192.168.2.206/SHAREDOCS
- 1)Finder->Go(前往)->Connete to Server...(连接服务器)(Command+K)
- 输入:smb://主机IP或主机名/共享名
提示:输入samba地址之后可以点击旁边的+按钮收藏,下次就不用再输入了。
- 2)输入密码(没有密码就为空)
- 3)共享目录会自动打开,自动挂载
提示:如果finder不小心关闭后,不需要重新连接,可以再“共享的”列表里找到。
.DS_Store安全隐患
由于Finder自带的.DS_Store包含了太多信息,如果在服务器产生.DS_Store会造成安全隐患。如果没有特殊配置,你用Finder管理远程的文件夹会自动产生.DS_Store。
在云端检查你的共享文件夹,如果发现.DS_Store,立即删除!
ls -a /home/USER_NAME/shared_directory 如何让Finder不在远程连接时产生.DS_Store?
打开Mac的Terminal,输入
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
然后重启Mac,再试试远程连接。