網絡文件共享服務-Samba
阿新 • • 發佈:2018-10-23
當前 windows code The ios 介紹 小寫 cif backend 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服務器全局配置
1、workgroup 指定工作組名稱
2、server string 主機註釋信息
3、netbios name 指定NetBIOS名
4、interfaces 指定服務偵聽接口和IP
5、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
6、hosts deny 拒絕指定主機訪問
7、config file=/etc/samba/conf.d/%U 用戶獨立的配置文件
8、Log file=/var/log/samba/log.%m 不同客戶機采用不同日誌
9、log level = 2 日誌級別,默認為0,不記錄日誌
10、max log size=50 日誌文件達到50K,將輪循rotate,單位KB
11、Security三種認證方式:
share:匿名(CentOS7不再支持)
user:samba用戶(采有linux用戶,samba的獨立口令)
domain:使用DC(DOMAIN CONTROLLER)認證
12、passdb backend = tdbsam 密碼數據庫格式
13、實現samba用戶:
包: samba-common-tools
工具:smbpasswd pdbedit
samba用戶須是Linux用戶,建議使用/sbin/nologin
14、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
基於組的測試
1、創建組
[root@node6 /data]#groupadd smbusers
2、把用戶加進組
[root@node6 /data]#usermod -a -G smbusers ilinux
[root@node6 /data]#id ilinux
uid=1001(ilinux) gid=1001(ilinux) groups=1001(ilinux),1006(smbusers)
3、把共享目錄的權限也賦給這個組
[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
4、配置smb文件
[vol2]
comment = shared volume 2
path = /data/volume2
write list = tom @smbusers
5、重新加載服務
[root@node6 /data]#systemctl reload smb
6、測試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: \>
網絡文件共享服務-Samba