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 |