Samba 的工作原理是,讓NETBIOS(Windows95網絡鄰居的通訊協議)和SMA Server Message Block)這兩個協議運行於TCP/IP通信協議之上,並且使用Windows的NETBEUI協議讓LINUX 可以在網絡鄰居上被Windows 看到。 其中最重要的就是SMB協議(Server Message Block),這是一個用於不同計算機之間共享打印機、串行口和通訊抽象(如命名管道、郵件插槽等)的協議。SMB協議是一個非常重要的協議,在所有 的Microsoft Windows系列操作系統中廣爲應用。 Samba是SMB服務器在類UNIX系統上的實現。它是開放源代碼的GPL自由軟件。目前Samba可以在幾乎所有的UNIX變種上運行。
第一部分:Samba服務的控制選項
用戶控制
public = no 不允許匿名用戶訪問
browseable = yes 不隱藏目錄(知道目錄同樣可以訪問) (系統默認yes,可以不寫)
valid users = 用戶或列表或@用戶組
writable = yes 可寫(目錄本身要可寫)
writable list = 用戶或列表或@用戶組
readonly = yes 是否設置只讀(系統默認yes,可以不寫)
create mask = 0744 控制客戶機創建文件的權限(系統默認0744)
directory mask = 0744 控制客戶機創建目錄的權限(系統默認0755)
訪問控制
max connections = 最大連接數目
deadtime = 斷掉連接時間(分鐘)0爲不限制
注:在全局裏增加
hosts deny = .sale.com .net free 表示禁止.sale.com域和.net域及主機名爲free的客戶端訪問
hosts deny = All 表示所有客戶端,並不是說允許主機名爲ALL的客戶端不可以訪問。常用的通配符還有“*”,“?”,“LOCAL”等
hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允許192.168.0.0網段IP地址訪問,但是192.168.0.100和192.168.0.78除外
注:在可在全局與局部裏增加
注::允許優先
第二部分:幾個關鍵字段
根據需要增加在全局裏面。雖然簡單,但功能不簡單,大家在用到的時候慢慢來體會。
include = /etc/samba/%G.smb.conf 調用用戶組相關的配置文件
include = /etc/samba/%U.smb.conf 調用用戶相關的配置文件
username map = /etc/samba/smbusers 調用映射用戶賬號的配置文件
第三部分:和Samba有關的一些命令
批量增加SMB用戶(很多人想要的東東)
# for user in 用戶列表
>do
>useradd -g group -s shell $user
>smbpasswd -a $user
>done
編輯SMB的用戶賬號相關命令
smbpasswd
smbpasswd -a 增加一個賬號
smbpasswd -d 禁用一個賬號
smbpasswd -e 啓用一個賬號
smbpasswd -x 刪除一個賬號
smbpasswd 更改用戶密碼
pdbedit
pdbedit -L 列出SMB中的賬號
pdbedit -a 增加一個賬號
pdbedit -x 刪除一個賬號
注:上面兩個命令,大家根據需要選擇
Linux客戶端的訪問工具
smbtree 顯示局域網中的所有共享主機和目錄列表
smbtree -D 只顯示局域網中的工作組或域名。後面可以加上-U username%passwd ,則表示是相關用戶的訪問權限
nmblookup 某個主機的netbios主機名或工作組。 # 顯示相應的IP
smbclient命令格式
smbclient -L //主機名或IP地址 -U 登錄用戶名 # 列出目標主機共享資源列表
smbclient //主機名或IP地址/共享目錄名 -U 登錄用戶名 # 使用共享資源
mount命令格式
mount //目標IP地址或主機名/共享目錄名稱 掛載點 -o username=用戶名 # 掛載共享
umount 掛載點 # 卸載共享
smbtar -s server –u user –p passwd –x shareneam –t output.tar # 把遠程的內容備份到本地
tar tvf *.tar # 查看TAR文件包裏面的的內容
第四部分:實例詳解
【實例1】員工可以在公司內流動辦公,無論在任何一臺機器上工作,都能把自己的文件放到服務器裏,同時不能使用服務器上的SHELL。(註解:SMB中有關於用戶家目錄的默共享設置,我們只要設置USER級別,然後再增加用戶和指定不可用的SHELL)
smb.conf配置文件更改的內容如下
security = user
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
配置好後,就重新啓動SMB服務
# useradd user -s /dev/null
# smbpasswd -a user
增加好用戶和密碼後,就可以直接測試了!這個不用重新啓動SMB服務了哦!
【實例2】建立共享目錄student,它的本機路徑爲“/home/student”,只有teachers組的用戶可以讀寫該目錄,students用戶組只能讀取。(註解:這個關鍵是不同組對同一個目錄的權限設置,student這個目錄屬於students用戶組,並設置他的OTHER 權限爲7,我們通過這個OTHER權限來實現teachers組對student目錄的訪問,通過SMB的配置文件來限制用戶訪問)
# mkdir /home/student
# groupadd students
# groupadd teachers
# useradd -g students user
# useradd -g teachers user
# smbpasswd -a user
# chgrp students /home/student
# chmod 757 /home/student
# chmod g+s /home/student
smb.conf配置文件更改的內容如下
security = user
[student]
path = /home/student
comment = student
write list = @teachers
valid users = @teachers @students
重新啓動SMB服務,進行測試。
【實例3】公司有二個部門( sales market ),銷售部和市場部有自己單獨的共享目錄,只可以總經理和相應部門員工訪問,並且公司員工禁止訪問非本部門的共享目錄。(註解:這一個內容與第二個類似,只是用戶組變成用戶,多了一個用戶組,只需要把文件夾所有者給總經理,所屬組爲用戶組就OK)
# mkdir /home/sales
# mkdir /home/market
# groupadd sales
# groupadd market
# useradd -g sales user
# useradd -g market user
# smbpasswd -a user
# chgrp sales /home/sales
# chgrp market /home/market
# chown ceo /home/sales
# chown ceo /home/market
# chmod 770 /home/sales
# chmod 770 /home/market
# chmod g+s /home/sales
# chmod g+s /home/market
smb.conf配置文件更改的內容如下
security = user
[sales]
path = /home/sales
comment = sales
write list = @sales ceo
valid users = @sales ceo
create mask = 0770
directory mask = 0770
[market]
path = /home/market
comment = market
write list = @market ceo
valid users = @market ceo
create mask = 0770
directory mask = 0770
重新啓動SMB服務,進行測試。
【實例4】實現在登陸的時候只能看到自己的共享目錄,沒有權限訪問的看不到。
(註解:其實實現這個主要靠加載獨立的配置文件來實現,只要把獨立的文件設置好相應的權限就OK,SMB主配置文件中加入獨立的配置文件,其他不用設置)
關於用戶的增加我這裏就不寫出來了,和上面的沒有區別。(略過)
首先把源始的smb.conf COPY 出來,後面加上相應的用戶或者組,如:smb.conf.user smb.conf.group
然後配置各己的配置文件
如:smb.conf.ceo
[sales]
comment = sales
path = /home/sales
writeable = yes
valid users = ceo
create mask = 0770
directory mask = 0770
[markets]
comment = markets
path = /home/markets
writeable = yes
valid users = ceo
create mask = 0770
directory mask = 0770
如:smb.conf.sales
[sales]
comment = sales
path = /home/sales
writeable = yes
valid users = @sales
create mask = 0770
directory mask = 0770
如:smb.conf.markets
[markets]
comment = markets
path = /home/markets
writeable = yes
valid users = @markets
create mask = 0770
directory mask = 0770
主配置文件如下:
security = user
include = /etc/samba/smb.conf.%G
include = /etc/samba/smb.conf.%U
其他的不用設置,重新啓動SMB服務,然後測試!祝大家好遠!!!
第五部分:Samba服務搭建的注意事項
1、防火牆和SELinux
2、主機名
3、建立Samba用戶
4、用戶的權限
5、目錄的權限
6、其他事項
第六部分:Samba服務排錯
(1)錯誤信息
(2)配置文件
(3)日誌文件
testparm #查看配置文件
testparm /etc/samba/smb.conf 主機名 IP #測試具體機器能否訪問及訪問的範圍
netstat –tlunp | grep service #顯示服務的對應端