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標籤可以修改密碼:
主頁圖,功能很豐富,可以自己研究下