Samba的搭建和配置詳解

Samba概念

smb: 服務消息塊
cifs: 通用互聯網文件系統

功能:
文件系統共享;
打印機共享;
NetBIos協議

程序環境:
服務端程序包:samba,samba-common,samba-libs
主配置文件:/etc/samba/smb.conf, 由samba-common包提供;
主程序:

Smbd:負責爲客戶機提供服務器中共享資源(目錄和文件)的訪問,監聽139端口(smb協議),445端口(cifs協議)
Nmbd:負責提供基於netblos協議的主機名稱解析,以便爲windows網絡中的主機進行查詢服務,監聽137-138端口(netblos協議)

Unit File(單元文件)	:
		smb.service
		nmb.service

監聽的端口:
137/udp,138/udp
139/tcp,445/tcp

客戶端程序:
smbclient:交互式命令行客戶端,類似於lftp;
mount.cifs:掛載cifs文件系統的專用命令;
samba的配置:
smb.conf

共享文件系統配置:
有三類:
	[homes]:爲每個samba用戶定義其是否能夠通過samba服務訪問自己的家目錄
	[printers]:定義打印服務;
	[shared_fs]:自定義定義共享的文件系統;

samba主配置文件參數和解釋

[global]		#全局參數。
	workgroup = MYGROUP	#工作組名稱
	server string = Samba Server Version %v	#服務器介紹信息,參數%v爲顯示SMB版本號
	log file = /var/log/samba/log.%m	#定義日誌文件的存放位置與名稱,參數%m爲來訪的主機名
	max log size = 50	#定義日誌文件的最大容量爲50KB
	security = user	#安全驗證的方式,總共有4種
	#share:來訪主機無需驗證口令;比較方便,但安全性很差,7.0以上系統不支持share,使用user模式,map to guest=bad user代替
	#user:需驗證來訪主機提供的口令後纔可以訪問;提升了安全性
	#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理賬戶)
	#domain:使用域控制器進行身份驗證
	passdb backend = tdbsam	#定義用戶後臺的類型,共有3種
	#smbpasswd:使用smbpasswd命令爲系統用戶設置Samba服務程序的密碼
	#tdbsam:創建數據庫文件並使用pdbedit命令建立Samba服務程序的用戶
	#ldapsam:基於LDAP服務進行賬戶驗證
	load printers = yes	#設置在Samba服務啓動時是否共享打印機設備
	cups options = raw	#打印機的選項
[homes]		#共享參數
	comment = Home Directories	#描述信息
	browseable = no	#指定共享信息是否在“網上鄰居”中可見
	writable = yes	#定義是否可以執行寫入操作,與“read only”相反
[printers]		#打印機共享參數
	comment = All Printers	
	path = /var/spool/samba	#共享文件的實際路徑(重要)。
	browseable = no	#網絡發現是否可見
	guest ok = no	#是否所有人可見,等同於"public"參數。
	public = yes	#是否所有人可見,yes爲匿名也可以訪問該目錄,no爲只有登錄成功的用戶可以訪問
	read only = yes	#是否爲只讀,如果yes即使有寫入權限也不可寫
	writable = no	#是否允許寫入
	printable = yes
browseable = yse	#網絡發現中是否可見


samba用戶管理

samba用戶管理:
smbpasswd
smbpasswd [options] USERNAME
-a:添加
-x:刪除
-d:禁用
-e:啓用
pdbedit
-L:列出samba服務中的所有用戶;
-a, --create:添加用戶爲samba用戶;
-u, --user=USER:要管理的用戶;
-x, --delete:刪除用戶;
-t, --password-from-stdin:從標準輸出接收字符串作爲用戶密碼;
使用空提示符,而後將密碼輸入兩次;

部署samba服務

匿名方式訪問

準備環境

setenforce 0 //臨時關閉selinux防火牆
systemctl stop firewalld //臨時關閉firewalld防火牆

1.搭建本地yum源
2.使用yum方式安裝samba服務程序

yum install -y samba* //yum安裝samba服務

3.創建共享的目錄

mkdir -p /var/public //創建匿名共享目錄

4.編輯主配置文件

vim /etc/samba/smb.conf 
----------分隔------------
[global]
        workgroup = SAMBA
        security = user  //7.0一下系統將user改爲share
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user //7.0以上匿名訪問必須添加
[ceishi]	//共享的目錄名稱
        comment = zhe shi yi ge ceshi wenjian  //共享的備註解釋
        path = /data/samba/ceshi //共享文件的絕對路徑
        public = yes //是否所有人可見
        browseable = yes //是否可瀏覽,指是否可被用戶查看;
        read only = yes //是否只讀
       

5.重啓服務,使用windos訪問驗證,無法訪問請檢查IP tables防火牆

systemctr restart smb //重啓samba服務

如果匿名訪問的公共目錄需要指定某些人可以對其目錄有管理權限(刪除寫入等權限),那麼需要對其同一目錄設置兩個smb共享,一個爲匿名所有人可以訪問,一個爲某些特定用戶設置管理權限

[ceshi]  //所有人可以訪問目錄
        comment = zhe shi yi ge ceshi wenjian
        path = /data/samba/ceshi
        public = yes
        read only = yes
[ceshi_admin]  //指定用戶可以管理共享
        comment = woshiyigeadmin
        path = /data/samba/ceshi
        public = yes
        valid users = zhangsan.list
        write list = zhangsan

用戶驗證的共享

實例:創建一個共享文件/smb/yonghu,只用張三和list可以訪問共享,只用張三可以有寫入的權限
注意:創建的共享用戶要有對應的系統用戶
1.創建共享用戶zhagnsan,lisi,創建共享用戶。

useradd zhangsan //創建張三用戶
useradd lisi  //創建李四用戶
mkdir -pv /smb/yonghu //嵌套創建共享目錄
smbpass -a zhangsan //給張三用戶設置爲共享用戶並設置密碼
smbpass -a lisi //給李四用戶設置爲共享用戶並設置密碼
pdbedit -Lv zhagnsan lisi //查看用戶詳細信息

2.修改smb配置文件,設置共享目錄

vim /etc/samba/smb.conf //編輯主配置文件
-------------分隔------------------
[yonghu] //共享目錄名稱
        comment = yonghu  //描述
        path = /smb/yonghu //共享目錄路徑
        public = no //是否所有人可見
        read only = yes //是否只讀
        valid users = zhangsan,lisi  //那些用戶可以訪問
        write list = zhangsan //那些用戶可以寫入,組加上”+組名或者@組名“
        directory mask =  0755 //用戶上傳目錄權限爲755
        create mask = 0644  //用戶上傳文件的權限是644

3.給共享目錄777權限

chmod -R 777 /smb/yonghu //更改共享目錄的權限爲777

4.重啓smb服務驗證權限

systemctl restart smb //重啓samba服務

Windos 清除smb的連接會話

net use //查看連接會話
net use * /del //清除連接會話

用戶映射的共享(安全性高)

正常情況下,一個共享賬號都有一個同名的系統賬號很不安全,可以使用映射的方式,將一個共享用戶映射爲多個不同的名稱(別名),只需要通過共享用戶的別名和密碼就能訪問資源了,而不需要知道真正的共享用戶(系統用戶)名稱

touch /etc/samba/smbusers //創建映射用戶的文件

在主配置文件中啓用用戶映射功能,在全局配置加入:
username map = /etc/samba/smbusers
systemctl restart smb //重啓服務即可生效

訪問地址限制
在globalo或者配置裏面添加hosts allow 或者 hosts deny 即可

hosts allow = 192.168.10. 172.16. 允許10.0 和172.16.0.0的網段訪問
hosts deny = 192.168.20. 172.18. 允許20.0和172.18.0.0的網段訪問


在linux裏面使用smbclient訪問共享

1.查看服務器端的共享:

smbclient -L 192.168.10.10 -U zhangsan

2.匿名訪問共享文件夾

smbclient //192.168.10.10/public

3.交互式文件訪問:

smbclient //192.168.10.10/yonghu -U zhangsan

掛載共享目錄

-t 掛載文件的類型
-o , --options <列表> 掛載選項列表,以英文逗號分隔
如果報cifs錯誤,請安裝cifs-utils軟件包
Linux下掛載samba共享目錄

匿名掛載方法
mount -t cifs //192.168.10.10/public /ceshi
指定用戶掛載
mount -t cifs //SMB_SERVER/SAHRE_NAME -o username=USERNAME,password=PASSWORD
fuser -fm /data/test/ 查看文件的進程號 在使用 kill -9 來殺死這個進程 在取消掛載

linxu下掛載windos共享目錄

1.使用smbclient工具查詢共享目錄
smbclient -L windosIP地址
2.掛載windos共享目錄
mount -t cifs -o username=administrator,password=******* //192.168.10.10/d /ceshi

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章