Samba简介python
在90年代初,UNIX机器之间的网络文件系统能够基于NFS协议,Window机器之间的网络文件系统能够基于CIFS协议(目前的Windows已经内置了NFS支持)。Windows和UNIX机器之间没法共享网络文件系统,Samba所以出现。ios
Samba 是 SMB/CIFS 网络协议的实现, 它做为NFS的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。Samba对Linux、DOS、Windows、Mac OS等系统提供客户端支持。git
本文中的Samba主要指Samba4服务器软件,它提供AD(活动目录,Active Directory)、文件共享以及打印服务。它支持基于SMB/CIFS、DCE/RPC、LDAP等协议与客户端通讯。github
服务器端安装服务器
安装必要的软件网络
Shellide
1ui 2spa |
#安装Samba4命令行 sudo apt-get install samba samba-common python-glade2 system-config-samba |
提供一个匿名共享目录给Windows客户端访问
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#备份原配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak #建立共享目录 sudo mkdir -p /var/samba/anonymous
sudo vi /etc/samba/smb.conf #设置为如下内容 [global] #工做组名称,和Windows客户端的工做组保持一致 workgroup = GMEM netbios name = amethystine security = user #把全部不能识别的用户映射为guest map to guest = bad user dns proxy = no #方括号内是共享目录的名字 [Anonymous] path = /var/samba/anonymous browsable =yes writable = yes guest ok = yes read only = no # 限定能访问此共享目录的IP地址 hosts allow = 10.0.0.0/255.0.0.0
#修改目录权限 cd /var/samba sudo chmod -R 0755 anonymous/ sudo chown -R nobody:nogroup anonymous/
#重启服务 service samba restart |
完成以上步骤后,在Windows资源管理器中输入\\amethystine(若是域名解析没有设置,能够使用\\Ubuntu服务器的IP地址),便可看见一个目录:Anonymous,能够写入文件。
设置一个须要身份验证的共享目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#建立共享目录 sudo mkdir -p /var/samba/secured #建立共享目录专用组和用户 sudo addgroup smbgrp sudo adduser smbuser -ingroup smbgrp #根据提示输入必要的用户信息
#添加Samba用户,根据提示设置密码,例如smb sudo smbpasswd -a smbuser
#在上节的smb.conf中增长下面一段内容: [secured] path = /var/samba/secured valid users = @smbgrp guest ok = no writable = yes browsable = yes
#修改目录权限 cd /var/samba sudo chmod -R 0770 secured/ sudo chown -R smbuser:smbgrp secured/
#重启服务 service samba restart |
完成上述设置后,便可使用smbuser来访问secured目录。
客户端访问
Windows客户端
在资源管理器中能够直接访问,例如 \\server\Anonymous ,若是须要身份验证,资源管理器会弹出对话框
Linux客户端
能够在文件管理器(例如nautilus)中输入 smb://server/ 访问
还能够使用命令行:
Shell
1 2 3 4 |
# 命令格式: smbclient //server/sharename -U username # 举例: smbclient //zircon.local/Anonymous |
访问Windows网络驱动器
使用Samba客户端能够直接在Linux中访问Windows网络驱动器(Network Driver),例如:smb://192.168.0.200/d$/ ,输入合法的远程机器用户名、密码便可。
挂载文件系统
现代Linux内核自带cifs模块(对于Ubuntu14.04之类的系统,你能够须要到synaptic中搜索cifs-utils、mount.nfs并安装),这是一个特殊的文件系统,用它能够挂载Samba共享目录:
Shell
1 2 3 4 5 6 7 8 9 10 |
# 命令格式: mount -t cifs //server/sharename mountpoint # 举例: sudo mkdir -p /nas/zircon/Anonymous sudo chmod 777 /nas/zircon/Anonymous sudo mount -t cifs //zircon.local/Anonymous /nas/zircon/Anonymous # 指定用户密码 sudo mount -t cifs //10.0.0.3/tdj_p_w_picpaths /tmp/tudouji/p_w_picpaths -o username=alex,password=lavender # 挂载Windows共享目录为读写,因为Linux不理解Windows用户和权限,Windows也不理解UNIX用户,所以你须要指定uid、gid选项,才能保证可读写 sudo mount -t cifs //10.0.0.3/tdj_p_w_picpaths /tmp/tudouji/p_w_picpaths -o username=alex,password=lavender,rw,uid=alex,gid=alex |
或者修改 /etc/fstab 以便在系统启动时自动挂载:
Shell
1 2 3 4 5 6 |
# 格式: //server/sharename mountpoint cifs user=user,pass=password 0 0 # 若是没有在NAS上设置任何用户,则: //server/sharename mountpoint cifs guest,_netdev,uid=curusername 0 0 # 举例 //zircon.local/Anonymous /nas/zircon/Anonymous cifs guest,_netdev,uid=pi 0 0 |