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