網絡文件共享服務

DAS、NAS、SAN

DAS:直接附加存儲,磁盤和服務器直接經過數據線或光纖鏈接(磁盤和服務器都在一臺機器上),速度快node

NAS:網絡附加存儲,服務器和存儲經過交換機鏈接,在存儲上事先準備好磁盤,分好區,格式化文件系統,掛載,而後經過協議,把分區掛載的目錄共享到網絡mysql

SAN:存儲區域網絡,服務器和存儲離的特別遠,中間還須要交換機來相連,須要走一些協議(iscsi協議),一一旦鏈接成功,就會在服務器上出現一個新的硬盤,而服務器就感受這個硬盤就像在本機同樣,可是這個存儲空間是在遠程,而後服務器就能夠對這個硬盤建立分區,格式化文件系統,掛載,就能夠存儲數據了linux

 

ftp

文件傳輸協議(FTP)(必定要確保防火牆和selinux是關閉的)

File Transfer Protocol 早期的三個應用級協議之一ios

基於C/S結構web

雙通道協議:數據和命令鏈接sql

數據傳輸格式:二進制(默認)和文本數據庫

兩種模式:服務器角度vim

命令(控制):客戶端:隨機port ---服務器:tcp21windows

數據:客戶端:隨機port+1---服務器:tcp20centos

被動(PASV style):客戶端主動鏈接

命令(控制):客戶端:隨機port ---服務器:tcp21

數據:客戶端:隨機port+1 ---服務器:隨機port

服務器被動模式數據端口示例:(被動模式,服務器經過命令通道告訴客戶端本身打開的端口,不是直接告訴,而是發給客戶端兩個數字,讓客戶端經過運算來得出端口,例如:端口號爲:m*256+n)

227 Entering Passive Mode (192,168,175,138,224,59)

服務器數據端口爲:224*256+59

客戶端鏈接ftp服務器,走命令通道,ftp服務器打開了21端口,客戶端打開的隨機端口

下載文件數據,走數據通道,ftp有兩種模式,ftp服務器主動模式打開了20端口,被動模式打開了隨機端口,而客戶端打開了隨機端口,這裏是針對ftp服務器,主動模式是ftp服務器鏈接客戶端,被動模式是客戶端鏈接服務器

傳輸數據時,若是要是主動模式,就是服務器鏈接客戶端,可是是主動模式,服務器不知道ftp客戶端打開的端口,就沒法鏈接,這時客戶端就會走命令通道告訴ftp服務器,本身打開的端口,接着服務器就知道了客戶端打開的端口就能夠經過主動模式鏈接客戶端,傳輸數據了

傳輸數據時走被動模式,就是客戶端鏈接ftp服務器,被動模式,服務器打開了隨機端口,客戶端並不知道,就沒法鏈接,這時ftp服務器就會經過命令通道告訴客戶端本身打開的端口,接着客戶端就知道了服務器打開的端口,就能夠經過被動模式鏈接ftp服務器,傳輸數據了

可是客戶端和服務器都有防火牆,只容許本身出,本身進,不容許別人進,這時上面傳輸數據的方式就失效了。對於ftp服務器的搭建的防火牆是硬件防火牆,有鏈接跟蹤功能,能夠分析命令通道21端口的數據包。假如客戶端經過命令通道21端口,鏈接到了ftp服務器,若是想要走主動模式,服務器去鏈接客戶端,客戶端有防火牆,這時不行的,只能走被動模式,客戶端經過命令通道已經知道了ftp服務器要打開的端口,就會鏈接這個端口,而ftp服務器的防火牆有鏈接跟蹤功能,已經知道了未來客戶端要鏈接這個端口,就會在防火牆上打開這個端口,從而實現被動模式,客戶端鏈接服務器,傳輸數據。

FTP軟件介紹

FTP服務器:

Wu-ftpd,Proftpd,Pureftpd,ServU,IIS

vsftpd:VerySecure FTP Daemon,CentOS默認FTP服務器

高速,穩定,下載速度是WU-FTP的兩倍

ftp,redhat.com數據:單機最多可支持15000個併發

客戶端軟件:

ftp,lftp,lftpget,wget,curl

ftp -A ftpserverport -A主動模式–p 被動模式

lftp–u username ftpserver

lftpusername@ftpserver

lftpgetftp://ftpserver/pub/file

gftp: GUI centos5 最新版2.0.19 (11/30/2008)

filezilla,CuteFtp,FlashFXP,LeapFtp

IE ftp://username:password@ftpserver

 

FTP服務

狀態碼:

1XX:信息125:數據鏈接打開

2XX:成功類狀態200:命令OK 230:登陸成功

3XX:補充類331:用戶名OK

4XX:客戶端錯誤425:不能打開數據鏈接

5XX:服務器錯誤530:不能登陸

用戶認證:

匿名用戶:ftp,anonymous,對應Linux用戶ftp,隨便輸密碼,都能登陸

系統用戶:Linux用戶,用戶/etc/passwd,密碼/etc/shadow

虛擬用戶:特定服務的專用用戶,獨立的用戶/密碼文件

nsswitch:networkservice switch名稱解析框架

pam:pluggableauthentication module 用戶認證

/lib64/security /etc/pam.d/ /etc/pam.conf

 

vsftpd服務

由vsftpd包提供

再也不由xinetd管理

用戶認證配置文件:/etc/pam.d/vsftpd

服務腳本:/usr/lib/systemd/system/vsftpd.service

/etc/rc.d/init.d/vsftpd

配置文件:/etc/vsftpd/vsftpd.conf

man 5 vsftpd.conf

格式:option=value

注意:=先後不要有空格

匿名用戶(映射爲系統用戶ftp )共享文件位置:/var/ftp(用戶ftp的家目錄),不能切根

系統用戶共享文件位置:用戶家目錄,可以切根

虛擬用戶共享文件位置:爲其映射的系統用戶的家目錄

 

鏈接ftp服務器時,會議root的身份運行了vsftpd程序,連進去以後,還沒輸入帳戶密碼,就會開一個子進程,是以nobody的身份運行,當輸入帳戶密碼時,就會又開了一個子進程,該子進程是以ftp的身份運行

 

ftp服務的常見配置

命令端口

listen_port=21(默認)

能夠認爲更改命令端口,可是鏈接ftp服務器時就要指定端口了

主動模式端口

connect_from_port_20=YES 主動模式端口爲20

ftp_data_port=20 指定主動模式的端口,能夠認爲指定主動模式端口

鏈接到ftp服務器默認傳輸文件是以被動模式傳輸的,想要以主動模式傳輸,敲passive,關閉被動模式就好了,再敲一遍passive就開啓了別動模式

!rm 表示刪除本機的文件

del表示刪除上傳的文件,不過要在ftp配置文件中配置才容許

被動模式端口範圍

linux客戶端默認使用被動模式

windows 客戶端默認使用主動模式

pasv_min_port=6000 0爲隨機分配

pasv_max_port=6010

使用當地時間

use_localtime=YES 使用當地時間(默認爲NO,使用GMT)

匿名用戶

注意:匿名登陸,ftp服務器根目錄/var/ftp是不能有寫權限的,不然匿名登陸失敗

anonymous_enable=YES 支持匿名用戶 改成no,不支持匿名用戶

no_anon_password=YES(默認NO) 匿名用戶略過口令檢查

anon_world_readable_only(默認YES)只能下載所有讀的文件,當咱們匿名上傳一個文件f1時,這個文件的權限在其餘人上是沒有讀權限的,其所屬人和所屬組都是ftp,而下載文件是以nobody的身份下載的,只有在其餘人上有讀權限時才能下載上傳的f1文件

anon_upload_enable=YES 匿名上傳,注意:文件系統權限,匿名上傳文件是以ftp的身份上傳的,若是/var/ftp/pub這個目錄的其餘人上沒有wx權限,就不能上傳文件,有兩種方式可以上傳文件,一是修改/var/ftp/pub這個目錄其餘人上的權限,二是對這個目錄設置acl權限setfacl -m u:ftp:rwx /var/ftp/pub/

anon_mkdir_write_enable=YES 可建立文件夾

anon_other_write_enable=YES 可刪除和修改上傳的文件

anon_umask=077 指定匿名上傳umask,默認是077,因此上傳的文件權限爲600,之因此不可以下載上傳的文件就是由於設置上傳umask爲077,致使匿名上傳的文件其餘人上沒有讀權限,當把上傳umask設置爲033,這樣上傳的文件權限就爲644,其餘人上就有了讀權限,這樣就能下載上傳的文件了

 

指定上傳文件的默認的全部者和權限

chown_uploads=YES(默認NO)

chown_username=wang 設置上傳文件的所屬人爲wang

chown_upload_mode=0644設置上傳文件的權限爲644

 

Linux系統用戶

guest_enable=YES 全部系統用戶都映射成guest用戶

guest_username=ftp 配合上面選項才生效,指定guest用戶

local_enable=YES 是否容許linux用戶登陸

write_enable-YES 容許linux用戶上傳文件

local_umask=022 指定系統用戶上傳文件的默認權限

local_root=/ftproot非匿名用戶登陸所在目錄

禁錮全部系統用戶在家目錄中

chroot_local_user=YES(默認NO,不由錮)禁錮系統用戶

禁錮或不由錮特定的系統用戶在家目錄中,與上面設置功能相反

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

當chroot_local_user=YES時,則/etc/vsftpd/chroot_list中用戶不由錮

當chroot_local_user=NO時,則/etc/vsftpd/chroot_list中用戶禁錮

wu-ftp日誌:默認啓用

xferlog_enable=YES (默認)啓用記錄上傳下載日誌

xferlog_std_format=YES (默認)使用wu-ftp日誌格式

xferlog_file=/var/log/xferlog(默認)可自動生成

vsftpd日誌:默認不啓用

dual_log_enable=YES 使用vsftpd日誌格式,默認不啓用

vsftpd_log_file=/var/log/vsftpd.log(默認)可自動生成

登陸提示信息

ftpd_banner="welcometo mage ftp server"

banner_file=/etc/vsftpd/ftpbanner.txt 優先上面項生效

目錄訪問提示信息

dirmessage_enable=YES (默認)

message_file=.message(默認)信息存放在指定目錄下.message

你要訪問哪一個目錄,就在哪一個目錄下面建一個.message,裏面寫着目錄訪問的提示信息,當你訪問這個目錄時,就會顯示.message裏的提示信息

如圖,我訪問upload目錄時,就會提示紅色的upload dir信息

 

 

使用pam(Pluggable Authentication Modules)完成用戶認證

pam_service_name=vsftpd

pam配置文件:/etc/pam.d/vsftpd

若是/etc/pam.d/vsftpd中是deny,/etc/vsftpd/ftpusers默認文件中用戶拒絕登陸

是否啓用控制用戶登陸的列表文件

userlist_enable=YES 默認有此設置

userlist_deny=YES(默認值)黑名單,不提示口令,NO爲白名單

userlist_file=/etc/vsftpd/users_list此爲默認值

/etc/pam.d/ftpusers和/etc/vsftpd/users_list中的用戶是不能登錄ftp服務器的,只有同時知足/etc/pam.d/vsftpd中是allow和userlist_deny=no,/etc/pam.d/ftpusers和/etc/vsftpd/users_list中的用戶才能登錄ftp服務器

鏈接限制

max_clients=0 最大併發鏈接數

max_per_ip=0 每一個IP同時發起的最大鏈接數

vsftpd服務指定用戶身份運行

nopriv_user=nobody

傳輸速率:字節/秒

anon_max_rate=0 匿名用戶的最大傳輸速率

local_max_rate=0 本地用戶的最大傳輸速率

鏈接時間:秒爲單位

connect_timeout=60 主動模式數據鏈接超時時長

accept_timeout=60 被動模式數據鏈接超時時長

data_connection_timeout=300 數據鏈接無數據輸超時時長

idle_session_timeout=60 無命令操做超時時長

優先以文本方式傳輸(默認是以二進制方式傳輸,文本方式傳輸會形成數據丟失)

ascii_upload_enable=YES

ascii_download_enable=YES

 

配置ftp服務爲非獨立服務

配置FTP服務以非獨立服務方運行:listen=NO,默認爲獨立方式

(1)安裝xinetd服務

yum install telnet-server 安裝telnet服務自動會給你安裝xinetd服務,由於telnet服務是依賴xinetd服務的

(2)修改ftp服務的配置文件

listen=NO 加一行,就改成非獨立服務

(3)配置非獨立服務的子配置文件'

cd /etc/xinetd.d

cp telnet vsftpd

(3)chkconfig --list

我先關了ftp服務,而後再開啓xinetd服務,依然打卡了21端口

是xinetd監聽21端口,一旦有人來訪問,就會自動激活ftp服務

 

實現基於SSL的FTPS

(1)查看是否支持SSL

ldd `which vsftpd` 查看到libssl.so

(2)建立自簽名證書

cd /etc/pki/tls/certs/

make vsftpd.pem

mv vsftpd.pem /etc/vsftpd

(3)配置vsftpd服務支持SSL

vim /etc/vsftpd/vsftpd.conf

ssl_enable=YES 啓用SSL

allow_anon_ssl=NO 匿名不支持SSL

force_local_logins_ssl=YES 本地用戶登陸加密

force_local_data_ssl=YES 本地用戶數據傳輸加密

rsa_cert_file=/etc/vsftpd/vsftpd.pem

cat -A /etc/vsftpd/vsftpd.conf能夠檢查空格

(4)用filezilla等工具測試

 

實現基於文件驗證的vsftpd虛擬用戶

(1)建立虛擬帳號

cd /etc/vsftpd

vim ftpusers.txt 在這個文件中建立虛擬帳號,格式是奇數行是帳號名,偶數行是口令,如圖:

(2)將存放帳號的文件編碼爲hash格式,須要用db_load命令

db_load -T -t hash -f ftpusers.txt ftpusers.db 生成一個tpusers.db數據庫文件

chmod 600 ftpuser.db 爲了安全,不讓其餘人查看該文件,原來存放帳號的文件就能夠刪掉了

(3)建立一個系統帳號,全部虛擬帳號會統一映射爲一個指定的系統賬號,訪問共享位置,即爲此係統賬號的家目錄

useradd -r -d -m /app/ftpuser -s /sbin/nologin ftpuser

chmod 555 /app/ftpuser

mkdir /app/ftpuser/upload

chown ftpuser /app/ftpuser/upload

(4)建立pam配置文件,讓ftp經過數據庫文件來驗證身份,須要用到pam模塊

定義一個pam模塊配置文件

vim /etc/pam 後面是db數據庫文件的路徑

(5)將虛擬帳號映射爲系統帳號,指定pam配置文件,修改ftp配置文件

(6)重啓ftp服務,測試,如今就能夠用虛擬帳號登錄了

(7)虛擬用戶創建獨立的配置文件

mdkir /etc/vsftpd/ftpusers.d/ 建立配置文件存放的路徑

vim /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/ftpusers.d/

cd /etc/vsftpd/ftpusers.d/ 進入此目錄

如今想容許ftp1可以上傳文件和建立目錄和刪除修改上傳的文件,ftp2登錄的目錄爲/app/ftpuser1,

ftp3登錄的根目錄爲/app/ftpuser2

vim ftp1

vim ftp2

vim ftp3

再建立根目錄,並在各根目錄下建立不一樣的文件加以區分

mkdir /app/ftpuser1

mkdir /app/ftpuser2

mkdir /app/ftpuser1/f1

mkdir /app/ftpuser2/f2

chown ftpuser /app/ftpuser1/f1

chown ftpuser /app/ftpuser2/f2

chmod 555 /app/ftpuser*

(8)測試

ftp1用戶

ftp2用戶

ftp3用戶和ftp2用戶同樣

 

實驗:實現基於MYSQL驗證的vsftpd虛擬用戶

環境:兩臺主機,一臺A(IP地址爲192.168.10.135):mariadb server 一臺B(IP地址爲192.168.10.186):ftp server

(1).A機器:安裝mariadb

yum install mariadb-server -y

systemctl start mariadb

mysql_secure_installation

 

mysql -uroot -pcentos

create database vsftpd;

use vsftpd

create table ftpusers(name char(30),pass char(50));

insert ftpusers values('ftp1',password('centos')),('ftp2',password('magedu'));

grant select on vsftpd.ftpusers to 'ftp'@'192.168.10.186' identified by 'centos';

 

(2)B

測試鏈接一下數據庫,看可否鏈接成功

mysql -uftp -pcentos -h 192.168.10.135

 

yum groupinstall "development tools" -y

yum install mariadb-devel pam-devel -y

tar xvf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-pam-mods-dir=/lib64/security --with-pam=/usr

make && make install

 

(3)準備兩個共享目錄/app/ftpdir和/app/ftpdir2,未來ftp1鏈接ftp服務器,登錄的是/app/ftpdir目錄,而ftp2鏈接ftp服務器,登錄的是/app/ftpdir2目錄

useradd -d /app/ftpdir -r -m ftpuser

chmod 555 /app/ftpdir

cd /app/ftpdir

mkdir upload

chown ftpuser upload

 

mkdir /app/ftpdir2

chmod 555 /app/ftpdir2

cd /app/ftpdir2

mkdir upload2

chown ftpuser upload

 

(3)

vim /etc/pam.d/vsftpd.mysql

auth required pam_mysql.so user=ftp passwd=centos host=192.168.10.135 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2

account required pam_mysql.so user=ftp passwd=centos host=192.168.10.135 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2

 

(4)修改ftp服務的配置文件

vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd.mysql 修改

加下面行

guest_enable=yes

guest_username=ftpuser

user_config_dir=/etc/vsftpd/conf.d/

 

mkdir /etc/vsftpd/conf.d/

vim /etc/vsftpd/conf.d/ftp1

anon_upload_enable=yes 未來ftp1登錄了能夠上傳文件

 

vim /etc/vsftpd/conf.d/ftp2

local_root=/app/ftpdir2 未來ftp2登錄了,共享目錄是/app/ftpdir2

 

(5)測試,用另一臺機器來鏈接ftp服務器(192.168.10.186)

ftp1登陸,可以上傳文件

ftp2登陸,共享目錄爲/app/ftpdir2

 

ftp工具

Axel:網絡客戶端工具

下載安裝axel

ftp://172.16.0.1/pub/Sources/6.x86_64/axel/axel-2.4-1.el6.rf.x86_64.rpm

axel -n 3 -o /root

ftp://172.16.0.1/pub/ISOs/CentOS-7-x86_64-Everything-1511.iso

axel -n 10 -o ftpfile ftp://192.168.10.135/f1 從ftp服務器上並行下載f1文件到本機的ftpfile中

 

nfs

NFS服務

NFS:Network File System 網絡文件系統,基於內核的文件系統。Sun公司開發,經過使用NFS,用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol遠程過程調用)實現

 

RPC採用C/S模式。客戶機請求程序調用進程發送一個有進程參數的調用信息到服務進程,而後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器得到進程參數,計算結果,發送答覆信息,而後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,得到進程結果,而後調用執行繼續進行。

 

NFS優點:節省本地存儲空間,將經常使用的數據如:home目錄,存放在一臺NFS服務器上且能夠經過網絡訪問,那麼本地終端將能夠減小自身存儲空間的使用

/dev/sda2是ext4文件系統,/app/nfsdir是在/dev/sda2上,經過nfs服務器共享出去,當經過nfs方式訪問/app/nfsdir時,能夠將遠程的/app/nfsdir目錄掛載到本機的一個目錄下,而後就能夠訪問/app/nfsdir的數據了,就像在本機同樣

NFS各個版本的對比

 

NFS服務介紹

軟件包:nfs-utils

Kernel支持:nfs.ko

端口:2049(nfsd), 其它端口由portmap(111)分配

配置文件:/etc/exports,/etc/exports.d/*.exports

CentOS7不支持同一目錄同時用nfs和samba共享,由於使用鎖機制不一樣

相關軟件包:rpcbind(必須),tcp_wrappers

CentOS6開始portmap進程由rpcbind代替

NFS服務主要進程:(進程多就意味着打開的端口多)

rpc.nfsd最主要的NFS進程,管理客戶端是否可登陸

rpc.mountd掛載和卸載NFS文件系統,包括權限管理

rpc.lockd非必要,管理文件鎖,避免同時寫出錯

rpc.statd非必要,檢查文件一致性,可修復文件

日誌:/var/lib/nfs/

每次啓動nfs服務,打開的端口都是變化的,這樣別人怎樣才能夠鏈接你呢?每次開啓nfs服務,會把打開的端口號註冊到一個特殊的服務中,這個服務叫fpcbind,這個服務就起着監控nfs服務端口的做用,在centos6上,若是把這個服務停了,那麼nfs服務起不來,在centos7上,把這個服務停了,nfs服務還會起來,這是由於開啓nfs服務,會自動激活rpcbind服務,而centos6就不會激活。

 

配置防火牆

配置防火牆,開放NFS服務

•配置NFS使用固定端口(不經常使用)

•vim /etc/sysconfig/nfs

RQUOTAD_PORT=875

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

STATD_PORT=662

STATD_OUTGOING_PORT=2020

•防火牆除開放上述端口,還需開放TCP和UDP的111和2049共4個端口

 

NFS配置文件

導出的文件系統的格式:

/dir主機1(opt1,opt2) 主機2(opt1,opt2)...

#開始爲註釋

主機格式:

•單個主機:ipv4,ipv6,FQDN

•IP networks:兩種掩碼格式均支持

172.18.0.0/255.255.0.0

172.18.0.0/16

•wildcards:主機名通配,例如*.magedu.com,IP不能夠

•netgroups:NIS域的主機組,@group_name

•anonymous:表示使用*通配全部客戶端

每一個條目指定目錄導出到的哪些主機,及相關的權限和選項

•默認選項:(ro,sync,root_squash,no_all_squash)

•ro,rw 只讀和讀寫

•async異步,數據變化後不當即寫磁盤,性能高

•sync(1.0.0後爲默認)同步,數據在請求時當即寫入共享

•no_all_squash (默認)保留共享文件的UID和GID

•all_squash 全部遠程用戶(包括root)都變成nfsnobody

•root_squash (默認)遠程root映射爲nfsnobody,UID爲65534,早期版本是4294967294 (nfsnobody)

•no_root_squash 遠程root映射成root用戶

•anonuid和anongid 指明匿名用戶映射爲特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用

 

NFS工具

rpcinfo

rpcinfo -p hostname

rpcinfo –s hostname 查看RPC註冊程序

exportfs

–v 查看本機全部NFS共享

–r 重讀配置文件,並共享目錄

–a 輸出本機全部共享

–au 中止本機全部共享

 

showmount -e hostname

查看能夠掛載的目錄

 

mount.nfs 掛載工具

NFSv4支持經過掛載NFS服務器的共享"根",從而瀏覽NFS服務器上的共享目錄列表

mount nfsserver:/ /mnt/nfs

 

客戶端NFS掛載

基於安全考慮,建議使用nosuid,nodev,noexec掛載選項

建立設備

NFS相關的掛載選項:

fg(默認)前臺掛載,bg後臺掛載

hard(默認)持續請求,soft 非持續請求

intr和hard配合,請求可中斷

rsize和wsize一次讀和寫數據最大字節數,rsize=32768

_netdev無網絡不掛載

示例:

mount -o rw,nosuid,fg,hard,intr172.16.0.1:/testdir/mnt/nfs/

開機掛載:/etc/fstab

172.16.0.1:/public mnt/nfs nfs defaults 0 0

 

自動掛載

可以使用autofs按須要掛載NFS共享,在空閒時自動卸載

由autofs包提供

系統管理器指定由/etc/auto.master自動掛載器守護進程控制的掛載點

自動掛載監視器訪問這些目錄並按要求掛載文件系統

文件系統在失活的指定間隔5分鐘後會自動卸載

爲全部導出到網絡中的NFS啓用特殊匹配-host 至"browse"

參看幫助:man 5 autofs

支持含通配符的目錄名

* server:/export/&

 

間接匹配

用的是相對路徑,會影響本地目錄結構

假如說將共享目錄/app/test掛載到/app/nfsdir上,那麼dirname就是/app,basename就是nfsdir

vim /etc/auto.master

dirname /etc/子配置文件

vim /etc/子配置文件

basename -fstype=nfs 192.168.10.187:/app/test

若是共享目錄的基名和本地掛載的目錄基名相同則能夠表示

* -fstype=nfs 192.168.10.187:/app/&

假如說將共享目錄掛到本地的/home目錄下,會影響家目錄的結構,致使其餘用戶登陸沒有了家目錄

直接匹配

直接匹配包括絕對路徑名稱

不會影響本地目錄結構

假如說將共享目錄/app/test掛載到/app/nfsdir上

vim /etc/auto.master

/- /etc/子配置文件

vim /etc/子配置文件

/app/nfsdir 192.168.10.187:/app/nfsdir

 

實現nfs服務共享

(1)編輯nfs服務的配置文件,設置共享哪一個目錄和誰能夠訪問共享目錄

vim /etc/ports

/app/nfsdir1 * (ro)共享/app/nfsdir1目錄,容許全部人訪問,共享目錄只讀

/app/nfsdir2 * (rw)共享/app/nfsdir2目錄,容許全部人訪問,共享目錄可讀可寫

建立共享目錄

mkdir /app/nfsdir1

mkdir /app/nfsdir2

(2)重讀nfs配置文件

systemctl reload nfs-server

exprtfs -v 查看共享的目錄

exportfs -r 重讀nfs服務配置文件

exports -au 關閉共享目錄

exportfs -a 開啓共享目錄

(3)在客戶端掛載共享目錄

查看能夠掛載的共享目錄

掛載共享目錄

mount 192.168.10.200:/app/nfsdir1 /mnt/nfs1

mount 192.168.10.200:/app/nfsdir2 /mnt/nfs2

也能夠寫到/etc/fstab中,開機自動掛載

生效mount -a

(4)在前面咱們設置了共享目錄/app/nfsdir1是隻讀的,而共享目錄/app/nfsdir2是可讀可寫的,所能在掛載到/app/nfsdir2上的目錄裏建立文件,掛載到/app/nfsdir1上的目錄裏不能建立,下面來測試:

cd /mnt/nfs1而後建立文件,報錯說是隻讀文件系統

cd /mnt/nfs2 而後建立文件,也不能建立文件,可是報錯提示是權限拒絕,因此是共享目錄沒有建立文件的權限

咱們再來修改一nfs服務器的共享目錄/app/nfsdir2的權限,chmod 777 /app/nfsdir2,再來建立文件,成功

由上圖知道,建立文件是以nfsnobody的身份來建立的,因此不須要對/app/nfsdir2設置滿權限,只須要對/app/nfsdir2設置acl權限,只讓nfsnobody用戶有建立文件的權限,就能夠來建立文件了

setfacl -m u:nfsnobody:rwx /app/nfsdir2

 

由上面實驗知道客戶端root到共享目錄裏建立文件,不是以原來的身份建立文件,而是被壓榨成nfsnobody身份來建立權限

exportfs -v能夠看到root壓榨

改爲root不壓榨,就要修改nfs服務的配置文件,默認是壓榨的

再用exportfs -v來查看一下

在客戶端建立一個文件,查看其所屬人和所屬組均爲root

 

若是既有root不壓榨,又有全部壓榨,此時root不壓榨將失效,在共享目錄裏面建立的文件仍是以nfsnobody的身份建立的

 

對於普通用戶是不壓榨身份的,例如,客戶端在nfs共享目錄建立一個文件,在nfs服務器是以和客戶端用戶的uid,gid相同的用戶顯示其所屬人,所屬組,若是nfs服務器沒有該用戶的話,就會顯示uid和gid。

 

經過設置IP地址來控制訪問

 

實驗:實現NFS僞根

(1)配置nfs服務器

mkdir /data/123

mount -b /data/123 /app/nfsdir2 將/data/123掛載到/app/nfsdir2上

能夠考慮將之寫到/etc/fstab中,實現開機自動掛載

vim /etc/fstab

/data/123 /app/nfsdir3 none bind 0 0

 

vim /etc/exports

/app *(r0,fsid=0)

/app/nfsdir1 *(rw)

/app/nfsdir2 *(rw)(未來客戶端將該共享目錄掛載到本地目錄上,實際上掛載的是/data/123目錄)

 

exportfs -v 查看共享的目錄

(2)配置nfs客戶端

showmount -e 192.168.10.187

實現自動掛載

mkdir /app/nfsdir1

mkdir /app/nfsdir2

vim /etc/auto.master (使用直接匹配)

vim /etc/auto.txt

而後重啓autofs服務

cd /app/nfsdir1

cd /app/nfsdir2

就實現了自動掛載

 

NFS相關SELinux設置

CentOS7默認SELinux 的布爾值nfs_export_all_ro和nfs_export_all_rw都啓用. 這容許NFS服務能夠讀寫任意文件,基於安全考慮可關閉.

對於只讀的NFS目錄SELinux安全上下文件應設爲public_content_t或nfs_t.

對於讀寫的NFS目錄SELinux安全上下文件應設爲public_content_rw_t或nfs_tcontext,而且布爾值nfsd_anon_writeBoolean 必須啓用,以容許寫操做.

幫助參考nfsd_selinux(8)(selinux-policy-devel包)nfs(5),mount(8),mount.nfs(8),exportfs(8),exports(5), nfsd_selinux(8)

 

 

 

SAMBA

SAMBA服務簡介

windos的計算機名是具備網絡意義的,可以ping通這就須要計算機名是不可以衝突的,而linux中的主機名是不具備網路意義的

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 提供smb服務

Samba-client 客戶端軟件

samba-common 通用軟件

cifs-utilssmb客戶端工具

samba-winbind和AD相關

相關服務進程:

smbd提供smb(cifs)服務TCP:139,445

nmbdNetBIOS名稱解析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服務有兩個服務,一個smb(samba的核心服務),一個是nmb(用來實現名字解析的,將NetBIOS名解析成IP地址)

systemctl start smb 開啓兩個端口,都是tcp協議

systemctl start nmb 也開啓兩個端口,都是udp協議

 

SAMBA服務器全局配置

workgroup 指定工做組名稱

server string 主機註釋信息

netbiosname 指定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 拒絕指定主機訪問

 

configfile=/etc/samba/conf.d/ %U 用戶獨立的配置文件

Log file=/var/log/samba/log. %m不一樣客戶機採用不一樣日誌

max log size=50 日誌文件達到50K,將輪循rotate,單位KB

Security三種認證方式:

share:匿名(CentOS7再也不支持)

user:samba用戶(採有linux用戶,samba的獨立口令)

domain:使用DC(DOMAINCONTROLLER)認證

passdbbackend = tdbsam密碼數據庫格式

實現samba用戶:

包:samba-common-tools

工具:smbpasswdpdbedit

samba用戶須是Linux用戶,建議使用/sbin/nologin

管理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用戶的詳細信息

 

查看samba服務器狀態

smbstatus

 

禁用samba帳號

smbpasswd -d <user>

 

啓用samba帳號

smbpasswd -e <user>

 

在windos登錄linux系統的samba共享目錄,是須要輸入samba服務自身的帳號和密碼,和linux系統用戶無關,並且默認登錄的共享目錄是samba用戶的家目錄

 

怎樣建立一個samba用戶

1.useradd -s /sbin/nologin smb1

2.smbpasswd -a smb1

這樣就將linix系統的用戶添加成samba用戶

 

在windos上訪問samba共享目錄

(1)如今linux系統上創建好samba用戶

1.useradd -s /sbin/nologin smb1

2.smbpasswd -a smb1

(2)在windos上訪問

默認共享目錄是該用戶的家目錄

(3)如今想訪問別的共享目錄,可是從新登進去,直接不用輸帳戶密碼,就登錄了共享目錄,這個共享目錄仍是上一次登錄的smb1帳戶的家目錄,這是由於windos已經記住了上一次登錄的帳戶和密碼,默認下一次還登錄該帳號,因此此時應該在windos清除上一次登錄的帳號和密碼,才能登錄新的共享目錄

這樣就能夠訪問別的共享目錄了

 

查看共享目錄

smbclient -L ip地址

訪問共享目錄

smbclient //192.168.10.187/smb1 -U smb1%centos

samba服務經常使用的配置

注意:要備份一下samba服務的配置文件

1.經過NetBIOS名來訪問共享目錄

2.經過IP地址來控制訪問

hosts allow = ip地址(能夠上網段)

hosts deny = ip地址

如圖:只容許本機和127.網段訪問,和192.168.10.135訪問

 

3.記錄日誌

%I是客戶端的主機ip,這是samba服務自帶的變量

log file = 日誌文件路徑

log level = number 2表示記錄的日誌更加詳細

如今我在IP地址爲192.168.10.135的主機來訪問共享目錄

而後查看日誌

 

4.配置共享目錄

每一個共享目錄應該有獨立的[ ]部分

[共享名稱] 遠程網絡看到的共享名稱

comment 註釋信息

path 所共享的目錄路徑

public 可否被guest訪問的共享,默認no,和guest ok 相似 public = yes 容許匿名登陸

browsable是否容許全部用戶瀏覽此共享,默認爲yes,no爲隱藏 browsable = no 表示容許用戶查看到共享目錄

writable=yes 能夠被全部用戶讀寫,默認爲no,訪問的共享目錄默認是不可寫的

read only=no 和writable=yes等價,如與以上設置衝突,放在後面的設置生效,默認只讀

注意:以上兩種方式均可以控制帳戶對共享目錄是否可寫,可是若是共享目錄自身的其餘人上沒有寫權限,那麼用戶也是不能往共享目錄裏面寫東西的

write list 三種形式:用戶,@組名,+組名,用,分隔

如writable=no,列表中用戶或組可讀寫,不在列表中用戶只讀

valid users 特定用戶才能訪問該共享,如爲空,將容許全部用戶,用戶名之間用空格分隔

valid users後面也能夠跟組,+組名或@組名錶示組,不加+或者@,就會把其當作是用戶

如圖:

共享目錄爲/app/nfsdir1

write list = smb1 容許smb1用戶可寫

valid users = smb1 smb2容許smb1和smb2訪問

browsable = smb3 不容許用戶smb3查看到共享目錄

 

我將用戶smb1和smb2添加到admin組中,也能夠這樣寫如圖:

 

SMB客戶端訪問

UNC路徑: Universal Naming Convention,通用命名規範(在windos裏面訪問共享目錄)

格式:\\sambaserver\sharename

 

終端下使用smbclient登陸服務器

smbclient -L instructor.example.com 查看共享目錄

smbclient -L instructor.example.com -U wang

>cddirectory

>getfile1

> put file2

smbclient //instructor.example.com/shared -U wang%centos

可使用-U選項來指定用戶%密碼,或經過設置和導出USER和PASSWD環境變量來指定

例如"smbclient //192.168.10.187/publicnfshare1 -U smb1%centos

 

掛載CIFS文件系統

手動掛載

mount -t cifs -o user=wang,password=magedu //server//shared /mnt/smb(能夠省略-t cifs,默認是cifs)

開機自動掛載

•cat /etc/fstab

//server/homes /mnt cifs user=wang,passward=magedu 0 0

寫到/etc/fstab裏面,開機自動掛載,可是這樣寫不安全,由於/etc/fstab這個文件,其餘普通用戶也有權限查看,就能看見samba共享目錄的帳號和密碼,能夠用文件代替用戶名和密碼的輸入,這樣其餘普通用戶就看不了共享目錄的帳號和密碼

//server/homes /mnt cifs credentials=/etc/smb.txt 0 0

•cat /etc/smb.txt

username=wang

password=password

•chmod600 /etc/smb.txt 給這個文件也設置好權限,使其餘人不能查看

 

多用戶掛載

SAMBA共享默認只支持同時用一個用戶掛載SMB共享

CentOS7中可啓用多用戶掛載功能

客戶端掛載samba共享目錄後,在客戶端登陸的不一樣用戶訪問同一個samba的掛載點,可得到不一樣權限

實驗:實現多用戶掛載

實驗環境:兩臺機器:A:192.168.10.187 samba服務器 B:192.168.10.200 客戶端

(1)準備samba帳號(A機器samba服務器端)

useradd -s /sbin/nologin smb1

useradd -s /sbin/nologin smb2

useradd -s /sbin/nologin smb3

groupadd admin

gpasswd -a smb1 admin

smbpasswd -a smb1

smbpasswd -a smb2

smbpasswd -a smb3

(2)配置共享目錄(A機器smba服務器端)

mkdir /app/nfsdir1

chmod 777 /app/nfsdir1

 

vim /etc/samba/smb.conf

共享目錄爲/app/nfsdir1

容許smb1用戶可寫

容許訪問共享目錄的用戶有admin組中的用戶和用戶smb2和用戶smb3

 

(3)啓動多用戶自動掛載共享目錄(B機器客戶端)

vim /etc/fstab

vim /etc/smbuser.txt

chmod 600 /etc/smbuser.txt

mount -a 自動掛載

 

(4)實現多用戶訪問(B機器客戶端)

useradd smb1

useradd smb2

 

用root訪問

cd /mnt/smbdir

touch 456 權限拒絕

 

用smb1去訪問

su - smb1

cifscreds add –u smb1 192.168.10.187

cd /mnt/smbdir

touch 222 建立成功

 

用smb2去訪問

su - smb2

cifscreds add –u smb2 192.168.10.187

cd /mnt/smbdir

touch 333 權限拒絕

 

實驗:實現圖形化管理

1、在CentOS6(第二張光盤)上安裝包

yum install samba-swat

2、配置swat服務

vim /etc/xinetd.d/swat

disable = no

port = 901

only_from= 127.0.0.1 此行改爲172.16.0.0/16

service xinetdrestart

3、瀏覽器訪問管理

http://127.0.0.1:901 以root用戶登陸

注意:commit changes後會自動從新加載配置,且自動將/etc/samba/smb.conf中原有的註釋全刪除

相關文章
相關標籤/搜索