一、用途:linux
文件共享:能夠在Linux/Windows之間,相似於windows之間的網上鄰居,能夠直接訪問文件並修改。ios
二、建立用戶:數據庫
用tdbsam方式創建samba用戶數據庫,可使用smbpasswd -a 來創建samba用戶,不過要創建的用戶必須是系統中存在的用戶,不過咱們能夠不用smbpasswd,用pdbedit命令來完成操做,它的參數不少這裏列出幾個經常使用的:vim
三、在Linux上測試windows
smbclient -L //192.168.1.144 -U username安全
[root@CentOS6 adduser]# smbclient -L //127.0.0.1 -U user1 Enter user1's password: Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9] Sharename Type Comment --------- ---- ------- homes Disk Home Directories IPC$ IPC IPC Service (Samba Server Version 3.6.23-42.el6_9) user1 Disk Home Directories Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9] Server Comment --------- ------- CENTOS6-SMB Samba Server Version 3.6.23-42.el6_9 Workgroup Master --------- ------- SAMBA3-SHARE CENTOS6-SMB
linux掛載smb服務器
sudo mount -o username=colorv,password=123456 //192.168.0.239/data2 /mnt/smb-data2/dom
四、協議、端口、進程tcp
1)沒有使用相似TCP/IP之類的傳輸協議,所以不須要IP設置的。採用NetBIOS協議:主機在NetBIOS協議當中的定義爲使用「NetBIOS Nmae「,每臺主機必需要有不一樣的NetBIOS Name才行。測試
2)(windows網上鄰居:容許你登錄,開放資源給你)samba經過兩個服務來控制這兩個步驟:
nmbd:該daemon用來管理工做組、NetBIOS Name等的解析。用到UDP13七、UDP138端口負責名稱解析任務。['di:mən]守護進程
smdb:該daemon用來管理samba主機共享個的目錄、文件、打印機等。用到TCP13九、tcp445(445不必定使用)傳輸數據
3)開放以上端口、啓動以上兩個服務
五、局域網鏈接方式
1)Peer/Peer(Workgroup, 對等模式)
各臺電腦都是平等的,互相訪問資源,此時須要知道對方電腦的用戶名密碼。
2)Domain model(主控模式)
由一臺服務器,你們去訪問服務器。
(samba能夠實現於上術兩種模式)
六、samba配置文件
/etc/samba/smb.conf
1)#和;都是註釋
2)[global]
工做組、主機的NetBIOS名稱、字符編碼的顯示、日誌文件的設置、是否使用密碼、密碼驗證機制等
workgroup = 工做組的名稱:注意,工做組要相同
netbios name = 主機的NetBIOS名稱,每部主句都不一樣
server string = 主機的簡易說明
display charset = 本服務器上面的顯示編碼,通常與unix charset相同
unix charset = 在linux服務器上面所使用的編碼, /etc/sysconfig/i18n
dos charset = windows客戶端的編碼,gb2312寫爲cp936,(CMD:chcp命令查看)
log file = 日誌文件存儲位置,可以使用變量處理
max log size = 日誌文件最大能達到多少Kbytes,
security = share、user、domain(安全程度:不須要密碼、使用samba服務器自己的密碼數據庫,用戶必須存在於linux帳戶、使用外部服務器密碼,也就是samba是客戶端之意,此時須要提供password server = IP參數)
encrypt passwords = Yes 密碼要加密,爲默認
passdb back = 數據庫格式,默認爲tdbsam(/var/lib/samba/private/passwd.tdb)
# 跟防火牆的議題有關的設定
hosts allow = 127. 192.168.100.254 192.168.100.10 192.168.1.
3)[共享資源名稱]
目錄權限、誰能夠瀏覽該目錄、讀寫等
comment = 目錄說明
path = 共享目錄
browseable = 是否讓全部用戶看到這個項目
writalbe = (read only =)
create mode = 文件權限
directory mode = 目錄權限(不要與系統目錄權限衝突)
writelist = 用戶或 @組,這個選項能夠指定可以進入到此資源名稱的特定用戶
注:變量功能,eg
[home]
valid users = %S #容許的登錄着:表示任何可登錄的用戶都可以登錄的意思,若是是user1,homes就會自動變爲[user1]
七、例子:
1)無密碼
[root@www samba]# vim smb.conf
# 1. 先設定好服務器總體環境方面的參數 [global] # 與主機名有關的設定信息 workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server # 與語系方面有關的設定項目喔,爲什麼如此設定請參考前面的說明 unix charset = utf8 display charset = utf8 dos charset = cp950 # 與登陸文件有關的設定項目,注意變量 (%m) log file = /var/log/samba/log.%m max log size = 50 # 這裏纔是與密碼有關的設定項目哩! security = share # 修改一下打印機的加載方式,不要加載啦! load printers = no # 2. 分享的資源設定方面:主要得將舊的批註,新的加入! # 先取消 [homes], [printers] 的項目,而後針對 /tmp 的設定,可瀏覽且可寫入喔 [temp] <==分享資源名稱 comment = Temporary file space <==簡單的解釋此資源 path = /tmp <==實際 Linux 分享的目錄 writable = yes <==是否可寫入?在此例爲是的 browseable = yes <==能不能被瀏覽到資源名稱 guest ok = yes <==單純分享時,讓用戶隨意登入的設定值
testparm (-v)檢查配置文件,如有中括號表示有問題(這個不臺清楚了)
開啓服務、開機自啓、查看端口(端口是自動開放嗎,這個問題好幼稚嗎)
本機測試,見上邊(//127.0.0.1)
linux掛載:mount -t cifs //127.0.0.1/temp /mnt,而後df能看到
2)密碼user
[root@www ~]# vim /etc/samba/smb.conf [global] workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server unix charset = utf8 display charset = utf8 dos charset = cp950 log file = /var/log/samba/log.%m max log size = 50 load printers = no # 與密碼有關的設定項目,包括密碼檔案所在格式喔! security = user <==這行就是重點啦!改爲 user 層級 passdb backend = tdbsam <==使用的是 TDB 數據庫格式! # 2. 分享的資源設定方面:刪除 temp 加入 homes 與 project [homes] <==分享的資源名稱 homes是最特殊的資源目錄名稱! comment = Home Directories browseable = no <==除了使用者本身外,不可被其餘人瀏覽 writable = yes <==掛載後可擦寫此分享 create mode = 0664 <==創建檔案的權限爲 664 directory mode = 0775 <==創建目錄的權限爲 775 [project] <==就是那三位使用者的共享資源 comment = smbuser's project path = /home/project <==實際的 Linux 上面的目錄位置 browseable = yes <==可被其餘人所瀏覽到資源名稱(非內容) writable = yes <==能夠被寫入 write list = @users <==寫入者有哪些人的意思:@用戶組 # 2. 每次改完 smb.conf 你都須要從新檢查一下語法正確否! [root@www ~]# testparm
注意共享目錄的用戶組,權限等設置!
添加samba帳戶(先linux帳戶)
可能須要修改selinux:setsebool -P samba_enable_home_dirs=1
八、以samba爲例子,介紹selinux
1)找出與samba有關的selinuxguize:getsebool -a | grep samba
[root@www ~]# getsebool -a | grep samba samba_domain_controller --> off <==PDC 時可能會用到 samba_enable_home_dirs --> off <==開放用戶使用家目錄 samba_export_all_ro --> off <==容許只讀文件系統的功能 samba_export_all_rw --> off <==容許讀寫文件系統的功能 samba_share_fusefs --> off samba_share_nfs --> off use_samba_home_dirs --> off <==相似用戶家目錄的開放! virt_use_samba --> off
2)設置:setseboll -P samba_enable_home_dirs=1解決沒法掛載等問題
對共享目錄使用 chcon -t samba_share_t /home/project
若是共享的目錄不僅是samba,還包含ftp等,那就可能須要使用public_content_t這個你們都可以讀取的類型才行。
其餘:
iptable
利用 Quota 限制用戶磁盤使用
sudo mount -t cifs -o username=colorv,password=123456 //192.168.0.239/data2 smb-dir/