Linux網絡服務——Samba全攻略

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 #顯示服務的對應端

發佈了37 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章