samba(windows和linux系統之間共享文件 )
功能:windows和linux系統之間共享文件 CIFS協議
環境:
server 192.168.100.11 desk1.uplooking.com
client 192.168.100.12 desk2.uplooking.com
端口:udp/137 udp/138 名稱解析 tcp/139 通信會話 tcp/445 cifs
服務器
一、查看軟件包是否安裝
rpm -qa | grep samba
samba-common-4.4.4-9.el7.noarch 通用組件包
samba-common-tools-4.4.4-9.el7.x86_64 工具包
samba-4.4.4-9.el7.x86_64 主程序包
samba-client-4.4.4-9.el7.x86_64 客戶端軟件包 linux
yum install samba -y //安裝軟件
二、服務器端的配置文件
rpm -ql samba-common
/etc/samba/smb.conf //主配置文件
/etc/samba/smb.conf.example
vim /etc/samba/smb.conf
---------------------------------------參考↓---------------------------------------------
[global] //全局設置
workgroup = SAMBA //定義工作組
security = user //安全驗證的設置
user :需要提供用戶名和密碼才能訪問共享,驗證使用的是本地服務器
share:匿名用戶,不需要提供用戶名和密碼直接就能訪問共享 //7已廢棄
passdb backend = tdbsam //用戶和密碼存放的格式 /var/lib/samba/private/
printing = cups //打印相關選項
printcap name = cups
load printers = yes
cups options = raw
[homes] //定義一個
comment = Home Directories //注釋,對共享的描述
valid users = %S, %D%w%S //只允許某個用戶訪問
browseable = No //不登陸就不可以查看共享目錄
read only = No //可寫
inherit acls = Yes //繼承acl權限
權限控制
read only = Yes
write list = 用戶名 @組名 可寫列表
read only = No
read list = 用戶名 @組名 只讀列表
訪問控制
限制ip
hosts allow = 192.168.1. //只允許網段192.168.1.訪問
hosts deny = 192.168.2. //拒絕網段192.168.2.訪問
限制用戶
valid users = 用戶 @組名 //只允許哪些用戶訪問
invalid users = 用戶 @組名 //拒絕哪些用戶訪問
共享一個/share目錄,共享名叫sharetest,匿名用戶可寫可瀏覽
服務器配置:
mkdir /share
chmod 777 /share
vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
map to guest = bad user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
//阿里雲 smb ports = 1315 1314 #很重要,貌似阿里雲屏蔽了samba默認的端口
[sharetest] //共享名
comment = share test 123 //描述信息
path = /share //共享文件的路徑
browseable = Yes //可瀏覽
guest ok = Yes //允許guest用戶訪問
read only = No //可寫
testparm //測試配置語法
systemctl restart smb
systemctl restart nmb
三、Samba網絡配置
阿里雲上配置,最重要的是要記得配置相應的端口開啟,不然外網是訪問不了的
-
一方法是關閉防火牆
systemctl stop firewalld.service
setenforce 0 -
二方法是添加規則(推薦)
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload-A INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 445 -j ACCEPT -A INPUT -m state –state NEW -m udp -p udp –dport 137 -j ACCEPT -A INPUT -m state –state NEW -m udp -p udp –dport 138 -j ACCEPT -A INPUT -p tcp –dport 22 -j ACCEPT -A INPUT -p tcp –dport 21 -j ACCEPT -A INPUT -p tcp –dport 80 -j ACCEPT -A INPUT -p tcp –dport 443 -j ACCEPT -A INPUT -p icmp –icmp-type 8 -j ACCEPT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -P OUTPUT ACCEPT
-
端口轉發
由於我使用的阿里雲,阿里雲的445端口被屏蔽了,即使你在阿里雲端開放了該端口也無效果,所以需要開放其他端口,並在Windows端進行端口轉發。
//Windows
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=你的服務器地址 connectport=你的端口例如1314
netsh interface portproxy show all #命令查看端口轉發是否成功。
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445 #刪除所有已經有的轉發
- 關閉SELINUX
setenforce 0
四、添加用戶登錄(samba用戶)
pdbedit -a username(這里要是你本機以有的用戶如:root)
[root@iZuf6dnzy9ygt2sur8q2iuZ /]# pdbedit -a root
new password:
retype new password:
Unix username: root
NT username:
Account Flags: [U ]
User SID: S-1-5-21-6561631652-1627451568-1611045335-1000
Primary Group SID: S-1-5-21-6561631652-1627451568-1611045335-513
Full Name: root
Home Directory: \\aaaaaaaaa\root
之后會讓你輸入新建用戶的密碼
pdbedit -L 顯示已存在的用戶
添加samba用戶提示 Failed to add entry for user.
這是因為沒有加相應的系統賬號,只需增加相應的系統賬號就可以了
(samba用戶名=系統賬號)
測試本地掛載
mount -t cifs -o username=username,password=123456,port=1314 //ip/sharetest /掛載目錄
windows客戶端:
在地址欄輸入:\服務器的ip地址
以后想直接訪問共享--->在共享文件夾上右鍵-->映射為網絡驅動器-->選擇驅動器R:-->\服務器的ip地址\共享名-->完成
例: \ip\sharetest
測試:把windows的文件拷貝到共享目錄 如可以拷貝表示成功
1.共享一個/smbtest目錄,共享名叫test,samba服務器提供三個smb用戶,分別是smb1~smb3,smb1和smb2用戶可寫,smba3只能讀和瀏覽,並且只允許192.168.100.11訪問