- smb服務
- windows共享看不見盤符
- 自動掛載
- 共享samba用户賬號的家目錄(默認)
- 創建samba賬號
- 更改samba用户賬號共享的目錄
- 不同用户配置不同配置文件
smb服務
1、 SMB:Server Message Block服務器消息塊,IBM發佈,最早是DOS網絡文件共享協議
2、 Cifs:common internet file system,微軟基於SMB發佈
3、 SAMBA:1991年Andrew Tridgell,實現windows和UNIX相通
4、 SAMBA的功能:
• 共享文件和打印,實現在線編輯
• 實現登錄SAMBA用户的身份認證
• 可以進行NetBIOS名稱解析
• 外圍設備共享
5、 計算機網絡管理模式:
• 工作組WORKGROUP:計算機對等關係,帳號信息各自管理
• 域DOMAIN:C/S結構,帳號信息集中管理,DC,AD
6、 相關包:
- Samba 提供smb服務
- Samba-client 客户端軟件
- samba-common 通用軟件
- cifs-utils smb客户端工具
- samba-winbind 和AD相關
7、 相關服務進程:
- smbd 提供smb(cifs)服務 TCP:139,445
- nmbd NetBIOS名稱解析 UDP:137,138
8、 主配置文件:/etc/samba/smb.conf
- 幫助參看:man smb.conf
9、 語法檢查: testparm [-v] [/etc/samba/smb.conf]
10、客户端工具:smbclient,mount.cifs
windows共享看不見盤符
通過命令cmd ; net share 查看 #C:\Windows\System32 找到cmd.exe右鍵以管理員運行
C:\Users\29256>net share
共享名 資源 註解
\-------------------------------------------------------------------------------
C$ C:\ 默認共享
E$ E:\ 默認共享
F$ F:\ 默認共享
IPC$ 遠程 IPC
print$ C:\WINDOWS\system32\spool\drivers
打印機驅動程序
ADMIN$ C:\WINDOWS 遠程管理
sharetools E:\sharetools
命令成功完成。
C:\WINDOWS\system32>net share sharetools /del
sharetools 已經刪除。
如圖
C:\WINDOWS\system32>net user dhy centos /add
命令成功完成。
[root@centos7:~]# locate cifs.ko
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/fs/cifs/cifs.ko.xz
[root@centos7:~]# yum install samba-client
[root@centos7:~]# rpm -ql samba-client
/usr/bin/cifsdd
/usr/bin/dbwrap_tool
/usr/bin/findsmb
/usr/bin/mvxattr
/usr/bin/nmblookup
/usr/bin/oLschema2ldif
/usr/bin/regdiff
/usr/bin/regpatch
/usr/bin/regshell
/usr/bin/regtree
/usr/bin/rpcclient
/usr/bin/samba-regedit
/usr/bin/sharesec
/usr/bin/smbcacls
/usr/bin/smbclient
\**省略**
[root@centos7:~]# smbclient -L 192.168.31.1 -U dhy%centos
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 遠程管理
C$ Disk 默認共享
E$ Disk 默認共享
F$ Disk 默認共享
IPC$ IPC 遠程 IPC
print$ Disk 打印機驅動程序
sharewin Disk
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.31.1 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available
UNC(Universal Naming Convention)通用命名規則,也稱通用命名規範
//192.168.31.1/sharewin linux
\\172.18.118.99\sharewin windows
[root@centos7:~]# smbclient //192.168.31.1/sharewin -U dhy%centos
Try "help" to get a list of possible commands.
smb: \> help
[root@centos7:app]# mount -o username=dhy,password=centos //192.168.31.1/sharewin /app/smb/
//192.168.31.1/sharewin 299G 54G 246G 18% /app/smb #掛載windows共享的文件
[root@centos7:app]# vim /etc/fstab
//192.168.31.1/winshare /app/smb cifs username=dhy,password=centos 0 0
或者
//192.168.31.1/winshare /app/smb cifs credentials=/etc/smb.txt 0 0
[root@centos7:app]#cat > /etc/smb.txt
username=dhy
password=centos
[root@centos7:app]# mount -a #掛載失敗時需要裝包
[root@centos7:app]# yum install cifs-utils #mount.cifs
[root@centos7:app]#chmod 600 /etc/smb.txt
[root@cos7 ~ ]#smbclient -L 192.168.31.1 -U dhy%centos
Connection to 192.168.31.1 failed (Error NT_STATUS_IO_TIMEOUT)
由於從新安裝了一個虛擬機,結果在僅主機模式下,windows(192.168.31.1即vmnet1)可以ping通linux,而linux ping不通windows,解決方法如圖
自動掛載
[root@cos7 ~ ]#vim /etc/auto.master
/- /etc/auto.dhy
[root@cos7 ~ ]#vim /etc/auto.dhy
/app/smb -fstype=cifs,username=dhy,pass=centos ://192.168.31.1/winshare
共享samba用户賬號的家目錄(默認)
兩個linux,一個當客户端,一個當samba服務器,windows當客户端
[root@cos17 ~ ]#yum install samba -y #安裝服務包
[root@cos17 ~ ]#rpm -ql samba
/usr/lib/systemd/system/nmb.service #提供名稱解析為ip,若共享用ip,此服務可以不啓用
/usr/lib/systemd/system/smb.service #提供共享服務
/usr/sbin/nmbd # netbios名解析支持,如windows計算機名解析為ip,可以通過wins,lmhost,廣播
/usr/sbin/smbd # samba共享
**省略*8
#windows10如下
C:\Users\29256>ping acer-zhang #通過廣播找到此計算機名的ip
正在 Ping Acer-Zhang [fe80::f1fb:c301:6a94:9a%8] 具有 32 字節的數據:
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
netbios=計算機名+字符 00 20 #00代表服務
C:\Users\29256>nbtstat -c
以太網:
節點 IP 址址: [172.18.118.99] 範圍 ID: []
緩存中沒有名稱
[root@cos17 ~ ]#ll /etc/samba
total 20
-rw-r--r--. 1 root root 20 Apr 13 23:34 lmhosts #類似hosts文件
-rw-r--r--. 1 root root 706 Apr 13 23:34 smb.conf
-rw-r--r--. 1 root root 11327 Apr 13 23:34 smb.conf.example
#windows開始用FQDN來代替netbios,類似hosts文件
[root@cos17 ~ ]#rpm -qf /etc/samba/smb.conf
samba-common-4.7.1-6.el7.noarch
[root@cos17 ~ ]#mkdir /data/smb1 -p
[root@cos17 ~ ]#mkdir /data/smb2 -p
[root@cos17 ~ ]#systemctl start smb
[root@cos17 ~ ]#ss -ntlp #139 ,445端口
[root@cos17 ~ ]#systemctl start nmb
[root@cos17 ~ ]#ss -nulp #137 138端口
創建samba賬號
創建samba賬號,依賴linux賬號
[root@cos17 ~ ]#useradd -s /sbin/nologin smb1 #系統賬號
[root@cos17 ~ ]#smbpasswd -a smb1 由系統賬號變為samba賬號,改密碼不需要-a選項
New SMB password:
Retype new SMB password:
Added user smb1.
[root@cos17 ~ ]#pdbedit -L
smb1:1001:
[root@cos17 ~ ]#useradd -s /sbin/nologin smb2
[root@cos17 ~ ]#smbpasswd -a smb1
New SMB password:
Retype new SMB password:
[root@cos17 ~ ]#useradd -s /sbin/nologin smb3
[root@cos17 ~ ]#smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.
[root@cos17 ~ ]#ll /var/lib/samba/private/passdb.tdb
-rw------- 1 root root 421888 Aug 19 21:49 /var/lib/samba/private/passdb.tdb
[root@cos17 ~ ]#smbpasswd -x smb3
Deleted user smb3.
[root@cos17 ~ ]#iptables -F #清空防火牆策略windows10中win鍵+r鍵 輸入 \192.168.31.17 如圖 ,2個圖片
windows連接
windows10中win鍵+r鍵 輸入 \192.168.31.17\smb2 如圖
由於samba服務只運行一個客户端登錄一個用户,故而先刪除smb1用户,再登錄smb2用户即可,具體如下:
C:\Users\29256>net use
會記錄新的網絡連接。
狀態 本地 遠程 網絡
-------------------------------------------------------------------------------
OK \\192.168.31.17\IPC$ Microsoft Windows Network
命令成功完成。
C:\Users\29256>net use \\192.168.31.17\IPC$ /del
\\192.168.31.17\IPC$ 已經刪除。
linux客户端連接
[root@cos7 ~ ]#smbclient -L 192.168.31.17
Enter SAMBA\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA COS17
WORKGROUP DESKTOP-977TN2L
[root@cos7 ~ ]#smbclient -L 192.168.31.17 -U smb1%centos
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (Samba 4.7.1)
smb1 Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA COS17
WORKGROUP DESKTOP-977TN2L
[root@cos7 ~ ]#smbclient //192.168.31.17/smb1 -U smb1%centos
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Sun Aug 19 21:47:04 2018
.. D 0 Sun Aug 19 21:49:46 2018
.mozilla DH 0 Sun Aug 19 23:14:23 2018
.bash_logout H 18 Wed Apr 11 08:53:01 2018
.bash_profile H 193 Wed Apr 11 08:53:01 2018
.bashrc H 231 Wed Apr 11 08:53:01 2018
[root@cos7 samba ]#ll
total 20
-rw-r--r--. 1 root root 20 Apr 13 23:34 lmhosts
-rw-r--r--. 1 root root 706 Apr 13 23:34 smb.conf #配置文件,centos7此文件有詳細説明
-rw-r--r--. 1 root root 11327 Apr 13 23:34 smb.conf.example #配置文件詳細説明
[root@cos17 samba ]#pwd
/etc/samba
[root@cos17 samba ]#vim smb.conf #ini格式的文件
[global]
workgroup = SAMBA
security = user #用户名驗證
\#netbios name = cos17 可以ping cos17
\#hosts allow = 172. 192.168.31.7
\#log file = /var/log/samba/log.%m
\#log level = 2 參考man smb.conf
\#max log size = 50
\#參考smb.conf.example文件
passdb backend = tdbsam #存放用户名密碼的數據庫文件
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
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600 #此配置文件可參考smb.conf.example
[root@cos17 samba ]#smbclient -L 192.168.31.1 -U dhy%centos #windows
Failed to connect with SMB1 -- no workgroup available #工作組,邏輯上的概念
更改samba用户賬號共享的目錄
[root@cos17 samba ]#vim smb.conf.example
; [public] #最後幾行,自定義共享設置
; comment = Public Stuff #註釋信息
; path = /home/samba #共享路徑
; public = yes #是否共享,yes匿名用户也可以登錄
; writable = no #是否可寫
; printable = no
; write list = +staff #哪些用户可以寫
[root@cos17 data ]#mkdir smb1dir
[root@cos17 samba ]#vim smb.conf
[share1]
path=/data/smb1dir
writable = yes
public = yes
write list=smb1,smb3 #write list=smb3,+sales;smb3用户,sales組中成員可以訪問
#browsable=no #表示不可以瀏覽,即隱藏效果
[root@cos7 ~ ]#smbclient //192.168.31.17/share1
Enter SAMBA\root's password:
Anonymous login successful
tree connect failed: NT_STATUS_ACCESS_DENIED #writable = no的錯誤提示
[root@cos7 ~ ]#smbclient -L 192.168.31.17
Enter SAMBA\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers #windows中$符號表示隱藏共享
share1 Disk
IPC$ IPC IPC Service (Samba 4.7.1)
不同用户配置不同配置文件
[root@cos17 samba ]#vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
config file = /etc/samba/conf.d/%u #添加此行
[root@cos17 samba ]#mkdir conf.d
[root@cos17 samba ]#cd conf.d
[root@cos17 samba ]#vim smb1
[share1]
comment=test dir1
path=/data/smb1dir111
[root@cos17 samba ]#cd conf.d
[root@cos17 samba ]#mkdir /data/smb1dir111
[root@cos17 samba ]#touch test1.txt
[root@cos17 samba ]#vim smb2
[share1]
comment=test dir1
path=/data/smb1dir111
writable=yes #可寫,同時注意系統文件系統權限
[root@cos17 samba ]#chmod 777 /data/smb1dir111
[root@cos7 ~ ]#smbclient //192.168.31.17/share1 -U smb1%centos