Samba属于GNU Public License(简称GPL)的软件;因此,你可以合法且免费地使用它;它重新实现了SMB/CIFS协议,可以在各个平台共享文件和打印机。1991年,还是大学生的And
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 sambaName : sambaEpoch : 0Version : 4.4.4Release : 12.el7_3Architecture: x86_64Install Date: 2017年02月06日 星期一 20时44分28秒Group : System Environment/DaemonsSize : 1869273License : GPLv3+ and LGPLv3+Signature : RSA/SHA256, 2017年01月18日 星期三 08时01分25秒, Key ID 24c6a8a7f4a80eb5Source RPM : samba-4.4.4-12.el7_3.src.rpmBuild Date : 2017年01月17日 星期二 14时10分29秒Build Host : c1bm.rdu2.centos.orgRelocations : (not relocatable)Packager : CentOS BuildSystem <http://bugs.centos.org>Vendor : CentOSURL : http://www.samba.org/Summary : Server and Client software to interoperate with Windows machinesDescription :Samba is the standard Windows interoperability suite of programs for Linux andUnix.
2. 配置Samba服务器
创建共享目录
cd /homemkdir -p samba/share samba/company
配置内核参数
ulimit -n 16384vim /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.confvim 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/sharebrowseable=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 Shareuseradd SharePC
修改操作系统用户的密码(我输入的是123456)
[root@localhost samba]# passwd Share更改用户 Share 的密码 。新的 密码:无效的密码: 密码少于 8 个字符重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。//效果同上[root@localhost samba]# passwd SharePC
创建SAMBA用户
smbpasswd -a Sharesmbpasswd -a SharePC
授权共享目录
chown Share sharechown SharePC company
4. 防火墙关闭
关闭firewall
systemctl stop firewalld.service //停止firewallsystemctl disable firewalld.service //禁止firewall开机启动
关闭iptables
service iptables stop
关闭SELinux:
setenforce 0
设置SELINUX=disabled(需要重启电脑)
vim /etc/selinux/config//文件中设置,SELINUX=disabled //然后重启服务器。
5. 开机启动smb服务
systemctl restart smbsystemctl enable smbsystemctl status smb
6. 客户端链接
Linux
[root@localhost ~]# smbclient -L 192.168.2.206 -U ShareEnter 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/sharenamesmb://[email protected]/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,再试试远程连接。