SAMBA、NFS共享區別
NFS開源文件共享程序:NFS(NetworkFile System)是一個能夠將多台Linux的遠程主機數據掛載到本地目錄的服務,屬於輕量級的文件共享服務,不支持Linux與 Windows系統間的文件共享。
Samba服務程序是一款基於SMB協議並由服務端和客戶端組成的開源文件共享軟件,實現了Linux與Windows系統間的文件共享。也可以實現Linux與Linux之間的共享服務。
SMB(Server Messages Block)協議:實現局域網內文件或打印機等資源共享服務的協議。
SAMBA共享服務配置
samba服務器:192.168.10.10 Linux客戶端:192.168.10.20 Windows客戶端:192.168.10.30
Samba配置文件說明:
服務器端安裝Samba服務:yum install samba -y
瀏覽配置文件:cat/etc/samba/smb.conf 過濾掉注釋
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
[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:來訪主機無需驗證口令,更加方便,但安全性很差。 | ||
#user:需由SMB服務驗證來訪主機提供的口令后才可建立訪問,更加的安全。 | ||
#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳號)。 | ||
#domain:使用PDC來完成驗證 | ||
passdb backend = tdbsam | #定義用戶后台的類型,共有3種。 | |
#smbpasswd:使用SMB服務的smbpasswd命令給系統用戶設置SMB密碼。 | ||
#tdbsam:創建數據庫文件並使用pdbedit建立SMB獨立的用戶。 | ||
#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"參數。 | |
writable = no | ||
printable = yes |
參數 | 作用 |
[linuxprobe] | 共享名稱為linuxprobe |
comment = Do not arbitrarily modify the database file | 警告用戶不要隨意修改數據庫 |
path = /home/database | 共享文件夾在/home/database |
public = no | 關閉所有人可見 |
writable = yes | 允許寫入操作 |
----------------------------------------------Linux服務器與Windows之間的共享實驗(user口令驗證)-------------------------------------
第1步:更改為user驗證模式,后台用戶類型為tdbsam
security = user
passdb backend = tdbsam
第2步:創建共享文件夾:
mkdir /database
第2步:描述共享文件夾信息。
在SMB服務主配置文件的最下面追加共享文件夾的配置參數:
[database]
comment = Do not arbitrarily modify the database file
path = /database
public = no
writable = yes
第3步:創建SMB服務獨立的帳號。
SMB服務配置文件中密碼數據庫后台類型為"tdbsam",所以這個帳戶和口令是Samba服務的獨立帳號信息,我們需要使用pdbedit命令來創建SMB服務的用戶數據庫
pdbedit命令用於管理SMB服務的帳戶信息數據庫,格式為:“pdbedit [選項] 帳戶”。
參數 | 作用 |
-a 用戶名 | 建立Samba用戶 |
-x 用戶名 | 刪除Samba用戶 |
-L | 列出用戶列表 |
-Lv | 列出用戶詳細信息的列表 |
先建立系統用戶smbuser,再samba用戶映射到系統用戶:
useradd smbuser
此系統用戶提升為SMB用戶:
[root@linuxprobe ~]# pdbedit -a -u smbuser
new password:設置SMB服務獨立的密碼
retype new password:
Unix username: smbuser
NT username:
Account Flags: [U ]
User SID: S-1-5-21-4146456071-3435711857-2069708454-1000
Primary Group SID: S-1-5-21-4146456071-3435711857-2069708454-513
Full Name:
Home Directory: \\linuxprobe\smbuser
HomeDir Drive:
Logon Script:
Profile Path: \\linuxprobe\smbuser\profile
Domain: LINUXPROBE
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Sat, 11 Jul 2015 18:27:04 CST
Password can change: Sat, 11 Jul 2015 18:27:04 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
第4步:允許防火牆和SELinux設置:命令
iptables -F
service iptables save
chown -Rf smbuser:smbuser /database
setsebool -P samba_enable_home_dirs on
semanage fcontext -a -t samba_share_t /database
restorecon -Rv /database/
第5步:驗證
-------------------------------------------------------------Linux與Linux之間的共享---------------------------------------------------------------
第3步:在root家目錄創建認證文件(依次為SMB用戶名、SMB用戶密碼、SMB共享域):
第6步:驗證
NFS共享
第1步:創建NFS服務端的共享目錄。
清空iptables iptables -F service iptables save
創建nfsfile共享目錄:mkdir /nfsfile
為共享目錄設置權限(讓其他人可以有寫入權限):chmod -Rf 777 /nfsfile
寫入一個文件,用於NFS客戶端讀取:echo "welcome to linuxprobe.com" > /nfsfile/readme
NFS服務端配置文件是"/etc/exports"
[root@linuxprobe ~]# vim /etc/exports
//格式為:共享目錄的絕對路徑 允許訪問NFS資源的客戶端(權限參數)
/nfsfile 192.168.10.*(rw,sync,root_squash)
NFS配置共享的參數有:
參數 | 作用 |
ro | 只讀默認 |
rw | 讀寫模式 |
root_squash | 當NFS客戶端使用root用戶訪問時,映射為NFS服務端的匿名用戶。 |
no_root_squash | 當NFS客戶端使用root用戶訪問時,映射為NFS服務端的root用戶。 |
all_squash | 不論NFS客戶端使用任何帳戶,均映射為NFS服務端的匿名用戶。 |
sync | 同時將數據寫入到內存與硬盤中,保證不丟失數據。 |
async | 優先將數據保存到內存,然后再寫入硬盤,效率更高,但可能造成數據丟失。 |
第2步:啟動NFS服務端
紅帽RHEL7系統中RPC服務已經默認運行(active)了,所以無需再配置RPC服務啦
直接啟動NFS服務端
systemctl start nfs-server
systemctl enable nfs-server
第3步:配置NFS客戶端
查詢遠程NFS服務端中可用的共享資源:(showmount命令用於查詢NFS服務端共享信息,格式為:“showmount [參數] [遠程主機])
參數 | 作用 |
-e | 顯示NFS服務端的共享列表 |
-a | 顯示本機掛載NFS資源的情況 |
-v | 顯示版本號 |
[root@linuxprobe ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/nfsfile (everyone)
創建本地掛載目錄: mkdir /nfsfile
掛載: mount -t nfs 192.168.10.10:/nfsfile /nfsfile
查看到剛剛寫入文件內容:cat /nfsfile/readme
開機后自動將NFS資源掛載到本地,可以通過修改fstab文件來實現
[root@linuxprobe ~]# vim /etc/fstab
192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
Autofs自動掛載
5、重啟autofs服務:
6、驗證:
進入自動掛載目錄中: