Samba简介
在90年代初,UNIX机器之间的网络文件系统可以基于NFS协议,Window机器之间的网络文件系统可以基于CIFS协议(目前的Windows已经内置了NFS支持)。Windows和UNIX机器之间无法共享网络文件系统,Samba因此出现。
Samba 是 SMB/CIFS 网络协议的实现, 它作为NFS的补充使得在 Linux 和 Windows 系统中进行文件共享、打印机共享更容易实现。Samba对Linux、DOS、Windows、Mac OS等系统提供客户端支持。
本文中的Samba主要指Samba4服务器软件,它提供AD(活动目录,Active Directory)、文件共享以及打印服务。它支持基于SMB/CIFS、DCE/RPC、LDAP等协议与客户端通信。
服务器端安装
安装必要的软件
Shell
1 2 | #安装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 |
转载于:https://blog.51cto.com/wushank/1980749