大綱:linux
NFS服務器運行原理ios
實戰配置NFS服務器vim
配置Samba服務器配置現實文件共享windows
-----------------------------------------------centos
問題:緩存
# 怎麼查看文件系統類型?!安全
file -s /dev/sda #可查看未掛載的文件系統服務器
df -T #df -lhT #查看已掛載文件系統網絡
mount #查看已掛載文件系統dom
fdisk /dev/sda <輸入 c 或 u 或 p 查看信息>
parted <輸入p 打印分區表>
cat /etc/fstab # 查看掛載信息
------------------------------------------------
NFS服務:網絡文件服務系統(Network File System)
簡述:NFS,是Network File System的簡寫,即網絡文件系統。
網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱爲NFS.
NFS容許一個系統在網絡上與他人共享目錄和文件。
經過使用NFS,用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件。
功能:共享本地目錄和文件給網絡上的其餘人
特色:用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件.
模式:C/S模式
監聽端口:2049
cat /etc/services | grep nfs
#/etc/services 是linux系統中,全部服務的端口的註冊文件
安裝:
yum -y install nfs*
由於我使用的是centos6.8版本的系統,有兩個iso鏡像.其中有部分安裝包,在DVD2中,因此,在安裝過程當中出現以下錯誤!
Error Downloading Packages:
libgssglue-devel-0.1-11.el6.x86_64: failure: Packages/libgssglue-devel-0.1-11.el6.x86_64.rpm from CentOS6-SERVER: [Errno 256] No more mirrors to try.
由此可知,在本地yum源中,找不到這個文件,手動從DVD2中拷貝這個包,並安裝便可
rpm -ivh libgssglue-devel-0.1-11.el6.x86_64.rpm
rpm -ivh nfs-utils-lib-devel-1.1.5-11.el6.x86_64.rpm
繼續安裝便可!
安裝成功!!!
設置開機自啓動:
chkconfig --add nfs
chkconfig --list nfs
chkconfig nfs on
啓動NFS服務:
/etc/init.d/nfs start
或
service nfs start
配置文件位置:
vim /etc/exports
查看服務是否正常:
showmount -e 192.168.171.120
showmount -e 127.0.0.1
配置文件詳解:
默認格式:
<Shared File Path> <allow IP>(權限)
一些特殊處理:
/tmp/a/no_root_squash *(rw,no_root_squash)
/tmp/a/sync 192.168.0.0/24(rw,sync)
/tmp/a/ro 192.168.1.64(ro)
/tmp/a/all_squash 192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)
/tmp/a/async 192.168.3.0/255.255.255.0(async)
/tmp/a/rw 192.168.3.0/255.255.255.0(rw) 192.168.4.0/255.255.255.0(rw)
/tmp/a/root_squash *(rw,root_squash)
部分權限解析:
sync/async:數據同步寫入硬盤/不一樣步寫入在內存中緩存
root_squash(壓制):若是用root登陸nfs,使其身份自動切換成nfsnobody。
no_root_squash:若是用root登陸nfs,使其身份就是root。
all_squash:用戶登陸nfs時,指定身份爲UID/GID的用戶。
注意:在發佈共享目錄的格式中除了共享目錄是必跟參數外,其餘參數都是可選的。而且共享目錄與客戶端之間及客戶端與客戶端之間須要使用空格符號,可是客戶端與參數之間是不能有空格的
NFS服務,存在兩種權限,一種是服務自己的權限,另外一種是目錄的訪問權限!!
通常狀況,遠程登陸的用戶,是使用的nfsnobody(在安裝nfs服務時,建立的用戶)進行遠程操做的.可是當咱們要對目錄進行讀寫操做時,要給予共享的目錄對應的權限!!
chmod 777 -R /test
tail -1 /etc/passwd #安裝完成服務後,查看密碼文件,能夠看到建立的nfsnobody用戶
部分問題解決方案:
當出現Permission denied或Read-only file system時,
解決方法:
設置訪問權限通常包含2部分
1)服務自己權限
2)目錄訪問權限
首先,查看配置文件/etc/exports中,共享的目錄是否有相應權限
在檢查共享的文件目錄,是否有對應用戶的訪問權限!
修改權限
chmod 777 -R /test/
或
chown nfsnobody.nfsnobody -R /test/
#############################
# NFS共享文件最經常使用配置以下:
# <Shared File Path> *(rw)
#############################
實戰:安裝配置NFS服務器,並實現文件共享
第一步:服務端安裝NFS服務,並設置開機自動掛載
yum -y install nfs*
yum -y install nfs-utils
主服務包是nfs-utils
chkconfig --add nfs
chkconfig nfs on
chkconfig --list nfs
第二步:修改配置文件以下:
#/etc/exports
/test/a/sync 192.168.0.0/24(rw,sync)
/test/a/async 192.168.3.0/255.255.255.0(rw,async)
/test/a/ro 192.168.171.121(ro)
/test/a/rw 192.168.171.121(rw) 192.168.172.0(rw)
/test/a/anonuid 192.168.171.0/255.255.255.0(rw,anonuid=500,anongid=500)
/test/a/all_squash 192.168.171.0/255.255.255.0(rw,all_squash,anonuid=500,anongid=500)
/test/a/root_squash *(rw,root_squash)
/test/a/no_root_squash *(rw,no_root_squash)
第三步:建立相應目錄,如上配置共享路徑,並啓動nfs服務
/etc/init.d/nfs start
第四步:查看服務運行狀態並查看共享是否生效
netstat -anlptu | grep nfs #查看服務監聽信息
showmount -e 127.0.0.1 #查看本地共享文件是否生效
第五步:客戶端查看共享是否生效(使用與服務器相同網段的網卡)
showmount -e 192.168.171.120
第六步:掛載共享文件系統,並檢測
mount -t nfs 192.168.171.120:/test/a/rw /test
df -h
當掛在時,出現以下錯誤:
mount.nfs: rpc.statd is not running but is required for remote locking.
是由於rpcbind服務沒有啓動,rpc服務是nfs的支持和依賴
第七步:添加開機啓動,自動掛載NFS文件系統
echo "192.168.171.120:/test/a/rw /test nfs defaults 0 0" >> /etc/fstab
保證下次開機時,自動掛載
第八步:分別掛載其餘目錄,測試(在服務器端運行命令 chmod 777 -R /test)
[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/ro /test
[root@xiaogan121 ~]# touch /test/a.txt
touch: cannot touch `/test/a.txt': Read-only file system
[root@xiaogan121 ~]# umount /test
[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/anonuid /test
[root@xiaogan121 ~]# touch /test/a.txt
touch: cannot touch `/test/a.txt': Permission denied
[root@xiaogan121 ~]# touch /test/a.txt
[root@xiaogan121 ~]# ls -l /test/a.txt
-rw-r--r-- 1 nobody nobody 0 Sep 14 08:53 /test/a.txt
[root@xiaogan121 ~]# umount /test
[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/all_squash /test
[root@xiaogan121 ~]# touch /test/a.txt
[root@xiaogan121 ~]# ls -l /test/a.txt
-rw-r--r-- 1 nobody nobody 0 Sep 14 08:54 /test/a.txt
[root@xiaogan121 ~]# umount /test
[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/root_squash /test
[root@xiaogan121 ~]# touch /test/a.txt
[root@xiaogan121 ~]# ls -l /test/a.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Sep 14 08:55 /test/a.txt
[root@xiaogan121 ~]# umount /test
[root@xiaogan121 ~]# mount -t nfs 192.168.171.120:/test/a/no_root_squash /test
[root@xiaogan121 ~]# touch /test/a.txt
[root@xiaogan121 ~]# ls -l /test/a.txt
-rw-r--r-- 1 root root 0 Sep 14 08:55 /test/a.txt
[root@xiaogan121 ~]# umount /test
[root@xiaogan121 ~]#
Samba服務---不一樣系統間資源共享(文件/打印機)
一. 簡述:
Samba最早在Linux和Windows兩個平臺之間架起了一座橋樑,使咱們能夠在Linux系統和Windows系統之間互相通訊.(例如:拷貝文件\實現不一樣操做系統之間的資源共享等等).利用Samba服務,咱們能夠將其架設成爲一個功能很是強大的文件服務器,也能夠將其架設成打印服務器提供本地和遠程鏈接打印.
運行模式:C/S模式
二. Samba服務功能:
文件和打印機共享:文件和打印機共享是Samba的主要功能,SMB進程實現資源共享,將文件和打印機發布到網絡之中,以供用戶訪問.
身份驗證和權限設置:smbd服務支持user mode 和domain mode等身份驗證和權限設置模式.
三. 監聽端口:
port 139和445
NetBIOS是Network Basic Input/Output System的簡稱,網絡基本輸入/輸出系統協議。協議,通常指用於局域網通訊的一套API,是由IBM公司開發。主要做用:經過NETBIOS協議得到計算機名稱,而後把計算機名解析爲對應IP地址。
四. 安裝:
yum -y install samba samba-client
Server:
samba-3.5.10-114.el6.x86_64.rpm # ----> 主程序包
Client:
samba-client-3.5.10-114.el6.x86_64.rpm # ----> 客戶端安裝這個包
五. 配置文件位置:
ls /etc/samba/smb.conf
六. 配置文件詳解及配置:
路徑:/etc/samba/smb.conf
/etc/samba/smb.conf ---> samba主要配置文件
samba存在不少的配置選項,在smb.conf中存在少許的介紹,大量介紹見下:
Samba-HOWTO-Collection ---> 查看安裝\配置和使用信息
http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf
Samba-Guid ----> smb.conf配置案例
http://www.samba.org/samba/docs/Samba-Guide.pdf
其中,以; 開頭行,表示samba的配置信息,默認不生效,想要讓配置生效,去掉;便可
以# 開頭的行,表示註釋信息
當配置完成後,可使用testparm命令,對配置文件進行基本的語法檢查
配置文件中,存在兩種參數,全局參數和局部參數
全局參數,全局生效!局部參數,局部生效!
在配置文件中,全局參數從
[Global]
行開始!往下,到遇到下一個中括號結束
全局參數:
==== Global Settings ====
全局參數聲明:
[Global]
字段值=設定值
---- Network Related Options ----
workgroup = <GroupName> #組名或工做域名
server string = <Descript Information> #描述信息
netbios name = #指定特定的服務名稱,而不予主機名相同
Interfaces = #指定咱們可使用的端口,可以使用多端口 (never omit localhost)
Hosts Allow/Hosts Deny #讓咱們能夠設置誰能夠鏈接,也可設置爲局部參數
例如:
workgroup = MYGROUP
server string = Samba Server Version %v
netbios name = MYSERVER
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
hosts allow = 127. 192.168.12. 192.168.13.
1)設置samba 服務器所在工做組或域名
咱們設置samba 服務器的工做組爲xuegod.cn
workgroup = xuegod.cn #工做組
2)服務器描述,服務器描述實際上相似於備註信息,
設置samba 描述信息爲「xuegod.cn Samba Server 」。
server string = xuegod.cn Samba Server #samba服務器描述
---- Logging Options -----
log file = <Log File Path> #日誌文件路徑
max log size = <Size> #日誌文件大小
log file 設置samba 日誌的字段。
---- Standalone Server Options ----
security = user #設置安全模式
# 安全模式 share user server domain AD
# share安全模式 不用用戶名密碼
# user安全模式 須要提交合法的賬號和密碼 默認級別
passdb backend = tdbsam # 值:tdbsam(默認)/ldapsam
smbpasswd = <FilePath> # 值: samba 用戶的passwd
3)設置samba 服務器安全模式。常見模式有兩種:share 安全級別模式和user 安全級別模式
samba 服務器有share、user、server、domain 和AD活動目錄 五種安全模式。
(1)share 安全級別模式
客戶端登陸samba 服務器,不須要輸入用戶名和密碼就能夠瀏覽samba 服務器的資源,適用於公
共的共享資源,安全性差,須要配合其餘權限設置,保證samba 服務器的安全性。
(2)user 安全級別模式
客戶端登陸samba 服務器,須要提交合法賬號和密碼,通過服務器驗證才能夠訪問共享資源,服務器默認爲此級別模式。
==== Share Definitions ====
#共享目錄設置
Usage:
[<NAME>] # ---> 共享名稱
comment = <Descript> # ---> 描述信息
browseable = <yes/no> # ---> 是否可見
valid users = <user/@group> # ---> 共享給哪些用戶或組
4)、Share Definitions 共享服務的定義
[homes]爲特殊共享目錄,表示用戶主目錄。
[printers]表示共享打印機。
配置一個共享資源:
[share] #設置共享名
comment = Home Directories #描述
browseable = yes #是否容許查看此共享內容 。若是是否,後期經過絕對路徑,能夠查看到。
path = /share #共享路徑,寫絕對路徑
public = yes #容許匿名查看
readonly = yes
5)設置訪問用戶
若是共享資源存在重要數據的話,須要對訪問用戶審覈,咱們可使用valid users 字段進行設置
格式:
valid users = 用戶名
valid users = @組名
6)設置目錄只讀
共享目錄若是限制用戶的讀寫操做,咱們能夠經過readonly 實現
格式:
readonly = yes #只讀
readonly = no #讀寫
7)設置目錄可寫
若是共享目錄容許用戶寫操做,可使用writable 或write list 兩個字段進行設置
writable 格式:
writable = yes #讀寫
writable = no #只讀
write list 格式:
write list = 用戶名
write list = @組名
samba服務安裝後,默認共享用戶的家目錄和打印機
七. 服務使用和添加開機啓動
1. Samba服務啓動:
service smb start
或
/etc/init.d/smb restart
2. Samba服務從新加載
/etc/init.d/smb reload
或
service smb reload
3. Samba開機自動加載
chkconfig smb on
4. 查看Samba端口
netstat -anlptu | grep smb
windows客戶端訪問共享文件方法:
在windows中,輸入win + r 運行
\\<Server IP Address> #回車便可
實戰:安裝Samba服務,並配置服務(多個方案實現)
實驗環境:
Server: xiaogan120.cn 192.168.171.120
Client(Linux): xiaogan121.cn 192.168.171.121
Client(Windows): Windowsn 10 192.168.171.1
配置文件:/etc/samba/smb.conf
案例:
例1:share安全級別
例1.1: windows客戶端訪問共享文件
例1.2: linux客戶端訪問共享文件
例2: user安全級別
例2.1: windows客戶端訪問共享文件
嘗試建立文件(沒法建立文件,解決辦法)
例2.2: linux客戶端訪問共享文件
例3: write list #貢獻目錄能夠進行寫入操做的用戶
例4: 隱藏共享的文件
例5: 建立獨立的配置文件,不通用戶顯示不通的共享文件
例6: linux訪問windows共享文件的方法
配置流程
1. 編輯主配置文件/etc/samba/smb.conf 指定共享目錄,並設置共享權限
2. 在smb.conf中,找到日誌文件名稱和存放路徑
3. 設置共享目錄的本地系統權限及samba共享權限
4. 從新加載配置文件或從新啓動smb服務,使配置生效!
例1: share安全級別:
1. Server端xiaogan120.cn ---> 安裝samba服務
yum -y install samba samba-client
2. Server端xiaogan120.cn ---> 修改配置文件以下:
[shared]
comment = Shared File Directories
path = /test
public = yes
readonly = yes
修改全局參數
security = share
3. Server端啓動或重啓smb服務
/etc/init.d/smb start #啓動
/etc/init.d/smb restart #重啓
chkconfig --add smb # 添加開機啓動項
chkconfig smb on # 設置smb開機啓動
chkconfig --list smb # 查看smb開機啓動級別
4. 查看監聽端口,並查看共享目錄:
netstat -anlptu | grep smb
smbclient -L 127.0.0.1 #不用輸入密碼,直接回車便可
5. Client端xiaogan121.cn ---> 安裝Samba Client服務
yum -y install samba-client
例1.1: Linux客戶端訪問共享文件
6. Client端xiaogan121.cn ---> 查看Server端共享文件
smbclient -L 192.168.171.120
smbclient //192.168.171.120/shared
#注意, 這裏的共享文件路徑 //192.168.171.120/shared
例1.2: Windows客戶端訪問共享文件
7. Client端windows系統 --- > 查看Server端共享文件
直接輸入win + r ,而後輸入 \\192.168.171.120
嘗試建立文件,由於配置文件標註readonly = yes,因此咱們沒法寫入文件,即便咱們爲/test目錄給予寫入權限,也不行,詳情以下:
修改配置文件 readonly = no 或 writable = yes ,就能夠建立成功了!
例2: user安全級別
1. 修改配置文件以下:
[Global]
security = user
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
2. 從新啓動服務
/etc/init.d/smb restart
或
service smb restart
2.1 並建立實驗用戶和組
groupadd sales #建立用戶組
useradd -g sales sale1 #建立用戶,並指定用戶所屬組
useradd -g sales sale2
smbpasswd -a sale1 #爲sale1用戶建立smb服務登陸密碼
smbpasswd -a sale2
例2.1: windows客戶端訪問共享文件
3. windows客戶端,查看共享文件(使用USER: sale1 PASSWORD: 123456)
例2.2: linux客戶端訪問共享文件
4. Linux 客戶端訪問共享文件(使用USER:sale2 PASSWORD: 123456)
smbclient -L 192.168.171.120 -U sale1%123456
smbclient //192.168.171.120/shared -U sale1%123456
嘗試建立文件(沒法建立文件,解決辦法)
writable = yes #配置文件中,添加可寫
chmod 777 -R <share file path> #給予共享目錄訪問權限
NT_STATUS_MEDIA_WRITE_PROTECTED #---> 配置文件沒有給予寫入權限
在Server端:修改配置文件 writable = yes 便可;
NT_STATUS_ACCESS_DENIED #---> 共享目錄沒有訪問權限
在Server端:修改共享文件訪問權限
chmod 777 -R /test
或修改配置文件
readonly = no #刪除這行
例2.3:爲特定的組,或用戶共享目錄
修改配置文件,添加以下行:
[mytest]
comment = Shared File Directories (name = mytest)
path = /mytest
public = yes
valid users = sale1
writable = yes
重啓服務,並在windows客戶端登陸分別使用sale1和sale2登陸查看
使用sale1用戶登陸並訪問mytest目錄:
使用sale2用戶登陸並訪問mytest目錄:
擴展:windows系統,清除鏈接記錄:
net use * /delete /y #在cmd命令行中,運行!
例3: write list #共享目錄能夠進行寫入操做的用戶
[shared]
comment = Share File Directories (name = shared)
path = /test
public = yes
browseable = yes
readonly = yes
修改前,對共享目錄執行chmod命令,並進行寫入操做,發現寫入失敗.
chmod 777 -R /test
修改配置,添加行以下後,並重啓smb服務:
writable list = @sales
例4: 隱藏共享的文件
修改配置文件,局部參數[shared]中的配置以下:
browseable = no
重啓服務,後查看詳情以下:
smbclient -L 192.168.171.120 -U sale1%123456 #查看共享目錄列表
smbclient //192.168.171.120/shared -U sale1%123456 #進入共享目錄
例5: 建立獨立的配置文件,不一樣用戶顯示不一樣的共享文件
在配置文件/etc/samba/smb.conf中,添加全局變量
config file = /etc/samba/smb.conf.%U # %U 指定配置文件用戶
保存退出後,編輯/etc/samba/smb.conf.boss 輸入以下配置信息:
vim /etc/samba/smb.conf.boos
# /etc/samba/smb.conf.boss
[shared]
comment = share for boss
path = /test
public = yes
write list = boss,@sales
browseable = yes
保存退出後,建立boss用戶,並設置smb密碼後
在windows客戶端,分別使用不一樣用戶進行登陸:
例6: linux訪問windows共享文件的方法
試驗環境:
windows: 192.168.171.1 共享目錄:D:\AAA 帳戶:gan%0.0
Linux: 192.168.171.121
1. 設置windows共享
右鍵 D:\AAA 目錄,屬性
選中 共享 選項卡
點擊 共享 ---> 共享
windows新建用戶:gan 密碼設置爲:0.0
2. linux端,安裝samba samba-client samba-swat cifs-utils
yum -y install samba samba-client samba-swat #客戶端samba環境搭建
yum -y install cifs-utils #用於掛載windows共享目錄
3. 掛載windows共享目錄:
mount -t cifs -o username=gan,passwd="0.0" //192.168.171.1/AAA /cdrom
# 指定格式爲 cifs
查看掛載狀況
df | tail -1
4. 測試:
cd /cdrom
mkdir test
touch a.txt
echo "Hello World! " >> a.txt