1、Samba介紹
Samba 是在 Linux 和 UNIX 系統上實現 SMB 協議的一個免費軟件,由服務器及客戶端程序構成,SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。
SMB 協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、 打印機及其他資源。通過設置“NetBIOS over TCP/IP”使得 Samba 不但能與局域網絡主機分享資源,還能與全世界的電腦分享資源。
2、Samba配置文件介紹
篩選Samba註釋配置⽂件
[root@samba-server ~]# grep -v '^#|^$' /etc/samba/smb.conf
[global] //全局參數
workgroup = SAMB //⼯作組名稱
hosts allow = 192.168.56. //表示允許IP或⽹段,允許使⽤通配符或主機名
interfaces = eth0 //SambaServer監聽⽹卡, 也可以寫IP地址
max connections = 0 //最⼤連接數⽬, 超出拒絕, 0表示不限制
max log size = 50 //定義⽇志⽂件的最⼤容量爲50KB
security = user //安全驗證⽅式,總共有4種
//share:⽆需驗證身份, 簡單⽅便, 安全性差
//user:需要驗證⽤戶密碼纔可訪問, 安全性⾼
//server:需要通過三⽅服務驗證賬號密碼, (集中管理賬戶)
//domain: 使⽤域控制器進⾏身份驗證
passdb backend = tdbsam //定義⽤戶密碼的類型,共有3種
//smbpasswd:爲系統⽤戶設置Samba服務程序的密碼
//tdbsam:創建數據庫⽂件並使⽤pdbedit命令建⽴Samba服務程序的⽤戶
//ldapsam: 基於LDAP服務進⾏賬戶驗證
printing = cups //設置Samba共享打印機的類型(bsd, sysv, plp, lprng, aix, hpux, qnx)
printcap name = cups //設置共享打印機的配置⽂件
load printers = yes //設置在Samba服務啓動時是否共享打印機設備
cups options = raw //打印機的選項
爲了更⽅便查閱共享重要參數的功能,共享參數如下:
[共享名/訪問名]
comment = 任意字符串
path = 共享⽬錄路徑
browseable = 指定該共享是否可以瀏覽
writable = 指定該共享路徑是否可寫
valid users = 允許訪問該共享的⽤戶
invalid users = 禁⽌訪問該共享的⽤戶
write list = 允許寫⼊該共享的⽤戶
guest ok = 指定該共享是否允許guest賬戶訪問
3、Samba單用戶訪問配置
3.1 邏輯拓撲圖
3.2 環境準備
[root@samba-server ~]# cat /etc/redhat-release #查看系統版本
[root@samba-server ~]# uname -r #查看內核版本
[root@samba-server ~]# systemctl stop ebtables #關閉ebtables防火牆
[root@samba-server ~]#systemctl disable ebtables #重啓不啓動ebtables防火牆
[root@samba-server ~]# systemctl status ebtables #查看ebtables狀態
[root@samba-server ~]# ifconfig ens33|awk -F '[ :]+' 'NR==2{print $3}' #查看IP地址
[root@samba-server ~]# hostname #查看主機名
3.3 配置Samba服務
1. 安裝samba服務
[root@samba-server ~]# yum -y install samba
2. 創建⽤於共享資源的⽂件⽬錄
[root@samba-server ~]# mkdir -p /data/samba/share
3. 創建系統賬戶,並設置samba密碼
[root@samba-server ~]# useradd chenjf
[root@samba-server ~]# smbpasswd -a chenjf
4. 修改配置文件,修改工作組模式,創建共享
[root@samba-server ~]# vim /etc/samba/smb.conf
5. 重啓服務
[root@samba-server ~]# systemctl restart smb
[root@samba-server ~]# systemctl enable smb
[root@samba-server ~]# systemctl status smb
6. 如果非得開啓firewall防火牆就使用一下命令開啓
[root@samba-server ~]# firewall-cmd --add-service=samba --permanent
[root@samba-server ~]# firewall-cmd –reload
3.4 客戶端訪問
3.4.1 Windows資源管理器訪問
1. 打開運行在運行界面輸入“\\samba-server IP”
2. 輸入賬戶名密碼
3. 進入samba共享目錄
4. 在share下創建一個文件test
3.4.2 Windows 映射到磁盤驅動器訪問
1. 打開資源管理器,點擊計算機
2. 點擊映射網絡驅動器
3. 打開資源管理器就可以看到這個網絡驅動器
4. 點擊進入到網絡驅動器,在其中創建一個目錄“chenjf”。
3.4.3 Linux臨時掛載訪問
1. 安裝samba客戶端軟件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 創建一個掛載目錄
[root@samba-client ~]# mkdir /share
3. 臨時查看 SMB 服務端共享資源
[root@samba-client ~]# smbclient -L 192.168.1.242 -U chenjf
4. 掛載訪問
[root@samba-client ~]# mount -t cifs -o rw,user=chenjf,pass=vancen //192.168.1.242/share /share
也可以將登陸賬戶密碼保存⾄配置⽂件,可以免輸⼊密碼去訪問掛載
5. 創建相應⽂件, 並賦予安全權限
[root@samba-client ~]# vim /etc/samba/chenjf
username=chenjf
password=vancen
domain=vacnen
[root@samba-client ~]# chmod 600 /etc/samba/chenjf
6. 掛載時執⾏⽤戶密碼⽂件credentials=/etc/samba/chenjf
[root@samba-client ~]# mount -t cifs -o rw,credentials=/etc/samba/chenjf //192.168.1.242/share /share/
7. 進入掛載目錄創建一個文件
[root@samba-client ~]# cd /share/
[root@samba-client share]# touch happy
3.4.4 Linux自動掛載訪問
1. 安裝samba客戶端軟件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 創建掛載點/mnt/share
[root@samba-client ~]# mkdir /mnt/share
[root@samba-client ~]# ls /mnt/
方法一、直接用戶密碼驗證
1. 編寫/etc/fstab配置文件使用用戶密碼掛載
[root@samba-client ~]# vim /etc/fstab
//192.168.1.242/share /mnt/share cifs defaults,rw,user=chenjf,pass=vancen 0 0
2. 掛載所有設備
[root@samba-client ~]# mount -a
[root@samba-client ~]# df -h
方法二、已配置文件驗證
1. 編輯驗證密碼配置文件
[root@samba-client ~]# vim /etc/samba/chenjf
username=chenjf
password=vancen
domain=vacnen
2. 修改驗證密碼的配置文件的權限
[root@samba-client ~]# chmod 600 /etc/samba/chenjf
3. 編輯/etc/fstab/配置文件使用密碼配置文件
[root@samba-client ~]# vim /etc/fstab
//192.168.1.242/share /mnt/share cifs defaults,rw credentials=/etc/samba/chenjf 0 0
4. 掛載所有設備
[root@samba-client ~]# mount -a
[root@samba-client ~]# df –h
5. 進入掛載點,創建一個目錄
[root@samba-client ~]# cd /mnt/share/
[root@samba-client share]# mkdir share
[root@samba-client share]# ls
4、Samba多用戶訪問配置
在 Samba Server 服務器上, 共享 /data/samba/public ,實現對訪問掛載後的共享的每個⽤戶單獨的驗證,實現權限隔離。允許chenjf1能夠讀寫,允許chenjf2 能夠讀,允許chenjf3不能訪問
4.1 環境準備
基於samba單用戶的配置環境
4.2 配置Samba多用戶
1. 創建用戶並給用戶設置samba密碼
[root@samba-server ~]# useradd chenjf1
[root@samba-server ~]# useradd chenjf2
[root@samba-server ~]# useradd chenjf3
[root@samba-server ~]# smbpasswd -a chenjf1
[root@samba-server ~]# smbpasswd -a chenjf2
[root@samba-server ~]# smbpasswd -a chenjf3
此處使用腳本創建也可以
2. 創建掛載目錄
[root@samba-server ~]# mkdir /data/samba/public
[root@samba-server ~]# ls /data/samba/
3. 給用戶設置相應的權限
[root@samba-server ~]# setfacl -m u:chenjf1:rwx /data/samba/public/
[root@samba-server ~]# setfacl -m u:chenjf2:r-- /data/samba/public/
[root@samba-server ~]# setfacl -m u:chenjf3:--- /data/samba/public/
[root@samba-server ~]# getfacl /data/samba/public/
4. 編輯samba主配置文件,共享/data/samba/public
[root@samba-server ~]# vim /etc/samba/smb.conf
5. 使⽤testparm測試
[root@samba-server ~]# testparm
注意:testparm命令報錯:rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
解決思路:把用戶文件描述符的數量設置的比默認值高一些
6. 修改testparm屬性,
1、臨時修改
[root@samba-server ~]# ulimit -n 16384
2、永久修改
[root@samba-server ~]# echo "root - nofile 16384" >>/etc/security/limits.conf
7. 重啓samba服務
[root@samba-server ~]# systemctl restart smb nmb
[root@samba-server ~]# systemctl enable smb nmb
4.3 客戶端驗證
1. 安裝客戶端軟件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 使用smbclient查看共享資源
[root@samba-client ~]# smbclient -L 192.168.1.242
3. 使用smbclient命令登陸用chenjf1驗證連接
[root@samba-client ~]# smbclient -U chenjf1 //192.168.1.242/public
4. 創建一個目錄chenjf1
smb: \> mkdir chenjf1
5. 使用smbclient命令登陸用chenjf2驗證連接
[root@samba-client ~]# smbclient -U chenjf2 //192.168.1.242/public
6. 創建一個目錄chenjf2
smb: \> mkdir chenjf2
7. 在chenjf2上查看public內的共享
8. 使用smbclient命令登陸用chenjf3驗證連接
[root@samba-client ~]# smbclient -U chenjf3 //192.168.1.242/public
9. 在/mnt/創建chenjf1,chenjf2,chenjf3
[root@samba-client ~]# mkdir /mnt/chenjf{1,2,3}
[root@samba-client ~]# ls /mnt/
10. 使用mount掛載訪問測試
[root@samba-client ~]# mount -t cifs -o username=chenjf1,pass=vancen //192.168.1.242/public /mnt/chenjf1
[root@samba-client ~]# mount -t cifs -o username=chenjf2,pass=vancen //192.168.1.242/public /mnt/chenjf2
[root@samba-client ~]# mount -t cifs -o username=chenjf3,pass=vancen //192.168.1.242/public /mnt/chenjf3
總結:chenjf1對共享的public目錄能夠讀寫,chenjf2對共享的public目錄能夠讀,chenjf3對共享的public目錄不能訪問
11. 查看目錄信息
[root@samba-client ~]# df –h
12. 開機自動掛載方式,編寫/etc/fstab配置文件
[root@samba-client ~]# vim /etc/fstab
//192.168.1.242/public /mnt/chenjf2 cifs defaults,rw,user=chenjf1,pass=vancen,_netdev 0 0
//192.168.1.242/public /mnt/chenjf2 cifs defaults,rw,user=chenjf2,pass=vancen,_netdev 0 0
註釋:掛載屬性 “_netdev”代表網絡設備,網絡聯通後才掛載此設備
13. 使用mount -a命令全部掛載
[root@samba-client ~]# mount –a
14. 查看掛載目錄
[root@samba-client ~]# df -h