SAMBA服務簡介
SMB:
Server Message Block服務器消息塊,IBM發佈,最先是DOS網絡文件共享協議
Cifs:
common internet file system,微軟基於SMB發佈
SAMBA:
1991年Andrew Tridgell,實現windows和UNIX相通
SAMBA的功能:
共享文件和打印,實如今線編輯
實現登陸SAMBA用戶的身份認證
能夠進行NetBIOS名稱解析
外圍設備共享
計算機網絡管理模式:
工做組WORKGROUP:計算機對等關係,賬號信息各自管理
域DOMAIN:C/S結構,賬號信息集中管理,DC,AD
SAMBA介紹
相關包:
Samba 提供smb服務
Samba-client 客戶端軟件
samba-common 通用軟件
cifs-utils smb客戶端工具
samba-winbind 和AD相關
相關服務進程:
smbd 提供smb(cifs)服務 TCP: 139,445
nmbd NetBIOS名稱解析 UDP: 137,138
主配置文件:
etc/samba/smb.conf
幫助參看:man smb.conf
語法檢查:
testparm [-v] [/etc/samba/smb.conf]
客戶端工具:
smbclient,mount.cifs
SAMBA服務器配置
smb.conf繼承了.ini文件的格式,用[ ] 分紅不一樣的部分
全局設置:
[global] 服務器通用或全局設置的部分
特定共享設置:
[homes] 用戶的家目錄共享
[printers] 定義打印機資源和服務
[sharename] 自定義的共享目錄配置
其中:
#和;開頭的語句爲註釋,大小寫不敏感
宏定義:
%m 客戶端主機的NetBIOS名 %M 客戶端主機的FQDN
%H 當前用戶家目錄路徑%U 當前用戶用戶名
%g 當前用戶所屬組%h samba服務器的主機名
%L samba服務器的NetBIOS名%I 客戶端主機的IP
%T 當前日期和時間 %S 可登陸的用戶名
SAMBA服務器全局配置
一、workgroup 指定工做組名稱
二、server string 主機註釋信息
三、netbios name 指定NetBIOS名
四、interfaces 指定服務偵聽接口和IP
五、hosts allow 可用「,」 ,空格,或tab分隔,默認容許全部主機訪問,也可在每一個共享獨立配置,如在[global]設置,將應用並覆蓋全部共享設置
IPv4 network/prefix: 172.25.0.0/24 IPv4前綴: 172.25.0.
IPv4 network/netmask: 172.25.0.0/255.255.255.0
主機名: desktop.example.com
以example.com後綴的主機名: .example.com
示例:
hosts allow = 172.25.
hosts allow = 172.25. .example.com
六、hosts deny 拒絕指定主機訪問
七、config file=/etc/samba/conf.d/%U 用戶獨立的配置文件
八、Log file=/var/log/samba/log.%m 不一樣客戶機採用不一樣日誌
九、log level = 2 日誌級別,默認爲0,不記錄日誌
十、max log size=50 日誌文件達到50K,將輪循rotate,單位KB
十一、Security三種認證方式:
share:匿名(CentOS7再也不支持)
user:samba用戶(採有linux用戶,samba的獨立口令)
domain:使用DC(DOMAIN CONTROLLER)認證
十二、passdb backend = tdbsam 密碼數據庫格式
1三、實現samba用戶:
包: samba-common-tools
工具:smbpasswd pdbedit
samba用戶須是Linux用戶,建議使用/sbin/nologin
1四、nfs ftp smb都有一個共同法則,任何用戶經過網絡服務所訪問的權限取決於共享權限和文件系統權限的交集
管理SAMBA用戶
添加samba用戶
smbpasswd -a <user>
pdbedit -a -u <user>
修改用戶密碼
smbpasswd <user>
刪除用戶和密碼:
smbpasswd –x <user>
pdbedit –x –u <user>
查看samba用戶列表:
/var/lib/samba/private/passdb.tdb
pdbedit –L –v
查看samba服務器狀態
smbstatus
配置目錄共享
每一個共享目錄應該有獨立的[ ]部分
[共享名稱] 遠程網絡看到的共享名稱
comment 註釋信息
path 所共享的目錄路徑
public 可否被guest訪問的共享,默認no,和guest ok 相似
browsable 是否容許全部用戶瀏覽此共享,默認爲yes,no爲隱藏
writable=yes 能夠被全部用戶讀寫,默認爲no
read only=no 和writable=yes等價,如與以上設置衝突,放在後面的設置生效,默認只讀
write list 三種形式:用戶,@組名,+組名,用,分隔
如writable=no,列表中用戶或組可讀寫,不在列表中用戶只讀
valid users 特定用戶才能訪問該共享,如爲空,將容許全部用戶,用戶名之間用空格分隔
SMB客戶端訪問
UNC路徑: Universal Naming Convention,通用命名規範
格式:\\sambaserver\sharename
終端下使用smbclient登陸服務器
smbclient -L instructor.example.com
smbclient -L instructor.example.com -U ilinux
> cd directory
> get file1
> put file2
smbclient //instructor.example.com/shared -U ilinux
可使用-U選項來指定用戶%密碼,或經過設置和導出USER和PASSWD環境變量來指定
掛載CIFS文件系統
須要安裝cifs-util
[root@node7 ~]#yum -y install cifs-utils
手動掛載
mount -t cifs -o user=wang,password=magedu //server//shared /mnt/smb
[root@node7 ~]# mount -t cifs -o user=ilinux,password=123456 //192.168.137.56/vol2 /media
開機自動掛載
cat /etc/fstab 能夠用文件代替用戶名和密碼的輸入
//server/homes /mnt cifs credentials=/etc/smb.txt 0 0
cat /etc/smb.txt
username=ilinux
password=password
chmod 600 /etc/smb.txt
samba簡單示例
安裝Samba,本地測試須要客戶端 也得裝客戶端
[root@node6 ~]#yum -y install samba samba-client
配置smb的配置文件定義相關的選項
[root@node6 /etc/samba]#vim smb.conf
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
hosts allow = 127. 192.168.137.
hosts deny = all
log file = /var/log/samba/log.%m
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
檢測配置文件語法
[root@node6 /etc/samba]#testparm -h
建立Samba用戶,Samba用戶的話是用系統用戶來轉換成Samba用戶的
[root@node6 /etc/samba]#pdbedit -a -u ilinux
new password:
retype new password:
列出Samba用戶
[root@node6 /etc/samba]#pdbedit -L -v
啓動Samba服務
[root@node6 /etc/samba]#systemctl start smb
客戶端測試,能夠用win也能夠用Linux 都行 Linux的話 須要裝Samba的客戶端
[root@node7 /mnt]#yum -y install samba-client
Linux客戶端訪問:
[root@node7 /mnt]#smbclient -L ilinux -L 192.168.137.56
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
--------- -------
另一種方式登陸:
[root@node7 /mnt]#smbclient -U ilinux //192.168.137.56/ilinux
Enter SAMBA\ilinux's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue Oct 23 16:08:43 2018
.. D 0 Tue Oct 23 16:12:48 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
issue N 23 Mon Oct 22 21:19:01 2018
.cache DH 0 Tue Oct 23 13:45:54 2018
.config DH 0 Tue Oct 23 13:45:54 2018
.bash_history H 41 Tue Oct 23 13:53:32 2018
win.jpg A 48822 Tue Sep 4 21:40:09 2018
51175000 blocks of size 1024. 49355436 blocks available
smb: \>
自定義存儲路徑
修改配置文件,在最後添加一段
[root@node6 /data]#vim /etc/samba/smb.conf
[vol2]
comment = shared volume 2
path = /data/volume2
writable = no
檢查語法,並從新加載服務
[root@node6 /data]#testparm
[root@node6 /data]#systemctl reload smb
客戶端測試此目錄的權限
[root@node7 /mnt]#smbclien -L ilinux -L 192.168.137.56ux
Enter SAMBA\root's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
IPC$ IPC IPC Service (Samba 4.7.1)
vol2 Disk shared volume 2
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
[root@node7 /mnt]#smbclient -U tom //192.168.137.56/vol2
Enter SAMBA\tom's password:
Try "help" to get a list of possible commands.
smb: \> lcd /etc
smb: \> put issue
NT_STATUS_ACCESS_DENIED opening remote file \issue
smb: \>
在服務器端給共享目錄添加rwx權限,後續在客戶端測試可否可寫
[root@node6 /data]#setfacl -m u:tom:rwx /data/volume2/
客戶端測試:
[root@node7 /mnt]#smbclient -U tom //192.168.137.56/vol2
Enter SAMBA\tom's password:
Try "help" to get a list of possible commands.
smb: \> lcd /etc/
smb: \> put issue
NT_STATUS_ACCESS_DENIED opening remote file \issue
smb: \>
須要在服務器上修改配置文件加上寫權限,此次只給定tom用戶寫權限,其它用戶是照樣寫不進的
[vol2]
comment = shared volume 2
path = /data/volume2
writable = no
write list = tom
從新加載服務
[root@node6 /datasystemctl reload smb
在客戶端上測試tom用戶
[root@node7 /mnt]#smbclient -U tom //192.168.137.56/vol2
Enter SAMBA\tom''s password:
Try "help" to get a list of possible commands.
smb: \> lcd /etc/
smb: \> put issue
putting file issue as \issue (5.6 kb/s) (average 5.6 kb/s)
smb: \> rm issue
smb: \> ls
基於組的測試
一、建立組
[root@node6 /data]#groupadd smbusers
二、把用戶加進組
[root@node6 /data]#usermod -a -G smbusers ilinux
[root@node6 /data]#id ilinux
uid=1001(ilinux) gid=1001(ilinux) groups=1001(ilinux),1006(smbusers)
三、把共享目錄的權限也賦給這個組
[root@node6 /data]#setfacl -m g:smbusers:rwx /data/volume2
[root@node6 /data]#getfacl !$
getfacl /data/volume2
getfacl: Removing leading '/' from absolute path names
# file: data/volume2
# owner: root
# group: root
user::rwx
user:tom:rwx
group::r-x
group:smbusers:rwx
mask::rwx
other::r-x
四、配置smb文件
[vol2]
comment = shared volume 2
path = /data/volume2
write list = tom @smbusers
五、從新加載服務
[root@node6 /data]#systemctl reload smb
六、測試smbusers組中的ilinux用戶是否有寫功能
[root@node7 /mnt]#smbclient -U ilinux //192.168.137.56/vol2
Enter SAMBA\ilinux''s password:
Try "help" to get a list of possible commands.
smb: \> lcd /etc/
smb: \> put fstab
putting file fstab as \fstab (290.5 kb/s) (average 290.5 kb/s)
smb: \>