samba伺服器是linux下合windows共用檔案的一種解決方案,它可以通過wendows的近端分享來和Linux共用資料夾,將linux偽裝成一個windows在近端分享上。
那麼它是基於什麼原理實現的?
首先,我們要知道windows的近端分享實現方式,它通過以下兩個協議來實現
NETBIOS 主機名稱解析
FILE sharing
通過NETBIOS可以在近端分享上顯示出你的主機名稱,通過FILE share協議來共用檔案。
而SAMBA類比了這兩種實現方法,對應關係如下:
SMB (service message block)---- > NETBIOS
CIFS (common internet file system)----- > FILE share
下面來使用samba
(一)SAMBA伺服器的安裝,簡單配置
1.通過yum安裝SAMBA伺服器
# yum install samba
2.修改主設定檔,主設定檔位於/etc/samba/smb.cnf
# vim /etc/samba/smb.cmf
找到workgroup欄位修改為WORKGROUP
workgroup = WORKGROUP //WORKGROUP是win能識別的近端分享使用者組
開啟netbios name 選項,將前面的;去掉
netbios name = DEANHEHIEHEI //後面就是你在windows近端分享裡顯示的主機名稱
3.開啟samba服務,注意使用前關閉selinux,避免影響使用samba
# setenforce 0
# service samba start
4.效果如下:
但是這個時候還只能用guest帳號訪問,不能建立檔案
(二)配置一個共用的檔案夾tools,並且配置一個賬戶slockware,可以建立檔案
1.修改主設定檔,增加欄位[tools]
# vim /etc/samba/smb.conf
[tools]
comment = My tools # comment是注釋資訊
path = /tools # 共用資料夾路徑,如果不存在需要手動建立
browseable = yes # 是否允許瀏覽
public = yes # 是否開啟來賓帳號
write list = slockware # 指定只有slockware帳號有寫入權限
2.添加使用者slockware,建立檔案夾/tools ,設定acl許可權
# useradd slockware
# smbpasswd -a slockware
New SMB password:
Retype new SMB password:
# mkdir /tools
# setfacl -m u:slockware:rwx /tools //必須設定了使用者讀寫權限
3.重啟samba服務,試下效果,輸入使用者名稱和密碼後,可以在tools裡建立檔案了
# service samba restart
**4.實現使用者組mygrp的可讀寫:
增加使用者組mygrp,建立使用者gentoo,將gentoo和slockware添加到mygrp裡
# useradd gentoo
# smbpasswd gentoo
# groupadd mygrp
# usermod -aG gentoo mygrp
# usermod -aG slockware mygrp
在第1步的欄位[tools]裡,將write list修改為:
wreite list = +mygrp
修改/tools檔案夾許可權為mygrp組可讀寫
# setfacl -m g:mygrp:rwx /tools
現在,使用gentoo和slockware登陸都可以建立檔案了
其他補充:
smbpasswd
-a 表示把此使用者加入到samba裡
-x 刪除使用者
-d 臨時性取消使用者
-e 啟用被臨時性取消的使用者
testparm 可以檢查語法錯誤
(三)linux下如何訪問samba共用資料夾
1.需要使用smbclinet命令,一般情況下,系統都預設安裝好了,首先查看伺服器上的檔案夾
smbclient -L 192.168.0.48
Password: # 需要輸入密碼,直接斷行符號,進入來賓目錄
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
IPC$ IPC IPC Service (DEANHELLO)
Server Printer Printing Server
想進入slockware使用者的目錄,需使用
# smbclient -L 192.168.0.48 -U slockware
2.根據看到的目錄,通過smbclinet訪問想要去的檔案夾
# smbclient //192.168.0.48/tools -U slockware
Password:
Domain=[DEANHEHIEHEI] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
smb: \> help # 輸入help 可以看到能夠使用的命令,挺豐富的吧
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!
如果出現如下錯誤
administrator@ubuntu:~$ smbclient //192.168.0.156/shared
Enter administrator's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
解決方案:應該是/tools 主設定檔裡定義的[tools]那麼它對應的命令要是/tools,而不是你定義的路徑/shared
**3.通過掛載的方式來進入共用目錄
# mount -t cifs //172.16.100.1/tools /mnt -o username=slockware
Password:
# cd /mnt
# ls
dd.txt ss.txt
mount -o 指定使用者身份
(四)通過網頁來控制samba伺服器----samba-swat的使用
samba-swat是一個圖形化管理samba伺服器的軟體,功能非常豐富,我們現在來看看怎麼使用它
1.安裝samba-swat
# yum install samba-swat
2.修改設定檔:(samba-swat不屬於服務,它是一個非獨立守護進程,依賴於超級守護進程xinetd,xinetd管理的進程設定檔都存放在/etc/xinetd.d/目錄下)
# cd /etc/xinetd.d
# vim swat
service swat
{
port = 901 # 進程運行連接埠定義
socket_type = stream
wait = no
only_from = 192.168.0.0/24 # 指定運行訪問的網段或IP
user = root # 指定登陸使用者身份
server = /usr/sbin/swat
log_on_failure += USERID
disable = no # 是否禁用,no開啟
}
3.開啟swat,方式比較特殊
# service xineted start
# netstat -nltp # 查看是否開啟901連接埠,沒有的話可能忘了設disable = no
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:901 0.0.0.0:* LISTEN 3351/xinetd
4.在瀏覽器裡輸入http://192.168.0.48:901 登陸管理頁面,需要注意的是root的密碼是作業系統的root密碼,所以登陸後我們要修改密碼,這樣下次登陸就是修改後的密碼,系統密碼不受影效。
點pssword標籤可以修改密碼:
首頁圖,功能很豐富,可以自己研究下