您好,登錄后才能下訂單哦!
一、什么是文件共享服務(wù)
簡單來說就是文件或存儲(chǔ)塊設(shè)備可以共享給大家使用
(一)、實(shí)現(xiàn)共享服務(wù)有三種:
1、ftp:屬于應(yīng)用層服務(wù),可以跨平臺(tái)使用(linux<->unix<-->windows)
2、nfs:屬于內(nèi)核模式,不可以跨平臺(tái)(linux<-->linux)
3、samba:可以跨平臺(tái)(linux<-->unix<-->windows)
(二)、實(shí)現(xiàn)存儲(chǔ)設(shè)備與服務(wù)器連接的方式有三種:
1、DAS:連接的磁盤
2、NAS:通過nfs/cifs協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)共享文件(文件存儲(chǔ)方式)電子郵件、網(wǎng)頁服務(wù)器、多媒體流服務(wù)、檔案分享等就適用于NAS存儲(chǔ)架構(gòu)。
3、SAN:通過網(wǎng)線或光纖實(shí)現(xiàn)ISCSI和FCSAN將物理存儲(chǔ)設(shè)備連接起來使用(塊存儲(chǔ)方式較底層,需要格式化并掛載當(dāng)本地磁盤使用)數(shù)據(jù)庫有關(guān)的應(yīng)用適用于SAN存儲(chǔ)架構(gòu)。
(三)、附:
1、nfs(Network File System,網(wǎng)絡(luò)文件系統(tǒng))協(xié)議實(shí)現(xiàn)Linux的文件封裝共享傳輸。
2、cifs(common internet File System,公共互聯(lián)網(wǎng)文件系統(tǒng))協(xié)議實(shí)現(xiàn)windows與linux的共享識(shí)別,例如samba就是基于cifs(smb)協(xié)議實(shí)現(xiàn)。
二、FTP
1、FTP是File Transfer Protocol 文件傳輸協(xié)議的縮寫,基于網(wǎng)絡(luò)來傳輸文件的應(yīng)用層通信協(xié)議。
2、FTP能夠通過網(wǎng)絡(luò)來傳輸文件,因?yàn)楣ぷ髟趹?yīng)用層所以不會(huì)受到平臺(tái)的限制。
3、FTP的工作模式
(1)、FTP的數(shù)據(jù)傳輸分為命令數(shù)據(jù)與文件數(shù)據(jù),命令傳輸就是客戶端要執(zhí)行的命令,服務(wù)端收到后返回給客戶端執(zhí)行結(jié)果,如ls命令的執(zhí)行結(jié)果一樣。文件傳輸就是客戶端要傳輸?shù)臄?shù)據(jù),服務(wù)端與客戶端數(shù)據(jù)連接來傳輸。
(2)、FTP的服務(wù)端與客戶端建立連接大體三個(gè)步驟,建立連接,傳輸數(shù)據(jù),斷開連接。
(3)、FTP是基于tcp協(xié)議來傳輸數(shù)據(jù)的,使用21號(hào)端口來建立認(rèn)證通道,20號(hào)端口來建立數(shù)據(jù)通道。
(4)、FTP是明文傳輸?shù)摹?/p>
(5)、FTP的用戶可分為實(shí)體用戶(real user),匿名用戶(anonymous user),訪問用戶(guest user)。
主動(dòng)模式與被動(dòng)模式
由于現(xiàn)在的網(wǎng)絡(luò)架構(gòu)中,都會(huì)有防火墻來阻止端口與高位端口被主動(dòng)連接,特別20端口是被禁止主動(dòng)連接的,因?yàn)?0端口是FTP的數(shù)據(jù)端口,所以為了解決客戶端或者服務(wù)端的防火墻問題,F(xiàn)TP就有了主動(dòng)和被動(dòng)兩種模式,通過墻內(nèi)的一端來主動(dòng)連接外端的一方,這樣子就不會(huì)被防火墻阻擋。
主動(dòng)模式:一般用于服務(wù)端存在防火墻的情況,客戶端無法主動(dòng)連接至服務(wù)端的20數(shù)據(jù)端口,需要由服務(wù)端主動(dòng)連接客戶端的高位數(shù)據(jù)端口。
1. 兩端在建立TCP通信通道后,客戶端會(huì)發(fā)送port請(qǐng)求與服務(wù)端的21號(hào)端口認(rèn)證連接并發(fā)送開放用來建立數(shù)據(jù)連接的高位端口號(hào)。 2. 服務(wù)端在收到后,會(huì)通過20號(hào)端口發(fā)送ACK響應(yīng)請(qǐng)求 3. 服務(wù)端會(huì)通過20端口與客戶端發(fā)送的高位端口建立數(shù)據(jù)連接通道。
被動(dòng)模式:一般用于客戶端存在防火墻的情況,服務(wù)端在收到連接請(qǐng)求后因?yàn)榭蛻舳朔阑饓Χ鵁o法達(dá)到客戶端高位端口,需要客戶端主動(dòng)連接至服務(wù)端的數(shù)據(jù)傳輸端口。
1. 兩端在建立TCP通信通道連接后,客戶端會(huì)發(fā)送PASV請(qǐng)求給服務(wù)端。 2. 服務(wù)端在受到PASV端口后就會(huì)打開一個(gè)高位端口作為數(shù)據(jù)傳輸端口來響應(yīng)給客戶端等待客戶端連接。 3. 客戶端在收到響應(yīng)后,就會(huì)去連接響應(yīng)的端口建立數(shù)據(jù)連接通道。
我們可以看到以上兩種工作方式,都是由墻內(nèi)的一方來發(fā)出連接并允許另一端來連接指定端口,墻內(nèi)的一方就類似是一間房子的主人,而另外一方是客人,客人去訪問需要得到主人的同意,并來給你“開門”之后,你才能進(jìn)到這個(gè)屋子。
三、響應(yīng)碼
1XX:信息類
2XX:成功類信息
3XX:提示需要進(jìn)一步補(bǔ)全內(nèi)容類
4XX:客戶端錯(cuò)誤
5XX:服務(wù)器端錯(cuò)誤
四、用戶認(rèn)證
1、虛擬用戶:僅用于訪問某特定服務(wù)中的資源
nsswitch:network server switch,名稱解析框架
配置文件:/etc/nsswitch.conf
模塊:/lib64/libnss*,/usr/lib64/libnss*
pam:pluggable authentication module,用戶認(rèn)證框架
配置文件:/etc/pam.conf,/etc/pam.d/*
模塊:/lib64/security/
以上兩種框架是linux的自帶框架,通過庫調(diào)用的方式自由選擇基于系統(tǒng)賬戶實(shí)現(xiàn),非系統(tǒng)賬戶實(shí)現(xiàn),還是數(shù)據(jù) 庫賬戶形式實(shí)現(xiàn)不用全部編譯進(jìn)去浪費(fèi)資源。
2、系統(tǒng)用戶:通過nsswitch服務(wù)解決用戶名稱解析,通過pam對(duì)系統(tǒng)用戶進(jìn)行認(rèn)證(/etc/passwd,/etc/shadow)
3、匿名用戶:映射為一個(gè)系統(tǒng)用戶ftp,為ftp用戶設(shè)置權(quán)限
4、虛擬用戶:映射為系統(tǒng)某一用戶,用戶賬號(hào)密碼存儲(chǔ)于非/etc/passwd,/etc/shadow
注:匿名用戶或虛擬用戶雖然和系統(tǒng)用戶沒有關(guān)系,但是登陸后獲取系統(tǒng)上的文件權(quán)限還是需要映射為系統(tǒng)用戶,以系統(tǒng)用戶的權(quán)限訪問系統(tǒng)文件(例如:FTP系統(tǒng)用戶,httpd系統(tǒng)用戶)
五、VSFTPD
VSFTPD是基于ftp協(xié)議來對(duì)網(wǎng)絡(luò)數(shù)據(jù)交換的一種實(shí)現(xiàn),是一個(gè)開源的解決方案。
VSFTPD能攻通過配置,搭建ftp服務(wù)器,完成基于網(wǎng)絡(luò)的數(shù)據(jù)傳輸功能。
1、vsftpd基礎(chǔ)服務(wù)搭建 [root@lab01 ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@lab01 ~]# yum -y install vsftpd #安裝vsftpd [root@lab01 ~]# rpm -ql vsftpd #查看安裝生成的文件 /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd #pam認(rèn)證文件 /etc/rc.d/init.d/vsftpd #服務(wù)啟動(dòng)進(jìn)程 /etc/vsftpd /etc/vsftpd/ftpusers #限制登陸文件 /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf #vsftp的主配置文件 /etc/vsftpd/vsftpd_conf_migrate.sh /usr/sbin/vsftpd #程序文件 ...... /var/ftp #FTP家目錄 /var/ftp/pub 2、vsftpd配置文件詳解 #匿名用戶的配置: anonymous_enable=YES #啟動(dòng)匿名用戶 anon_upload_enable=YES #是否允許匿名用戶上傳文件 anon_mkdir_write_enable=YES #是否允許匿名用戶有創(chuàng)建目錄的權(quán)限 anon_ohter_write_enable=YES #系統(tǒng)用戶的配置: local_enable=YES #啟用本地用戶 write_enable=YES #允許用戶有寫入的權(quán)限 local_umask=022 #上傳后文件的umask,也就是上傳后文件的權(quán)限 #定義訪問日志 xferlog_enable=YES #是否啟動(dòng)xferlog日志 xferlog_file=/var/log/xferlog #定義xferlog日志文件的存放位置 xferlog_std_format=YES #是否使用標(biāo)準(zhǔn)的xferlog模式 #禁錮所有的ftp本地用戶于其家目錄中: chroot_local_user=YES #禁錮文件中指定的ftp本地用戶于其家目錄中: chroot_list_enable=YES #設(shè)置是否啟用將部分用戶禁錮在家目錄 chroot_list_file=/etc/vsftpd/chroot_list(在此文件中添加系統(tǒng)用戶) #虛擬用戶映射系統(tǒng)用戶 guest_enable=YES 是否啟用來賓賬號(hào)(默認(rèn)沒有) guest_username=vuser 將來賓賬號(hào)映射為那一個(gè)系統(tǒng)用戶(默認(rèn)沒有) #通過pam用戶認(rèn)證 pam_service_name=vsftpd (/etc/pam.d/vsftpd中定義) pam_service_name=vsftpd.mysql \\pam認(rèn)證文件 #定義歡迎語 ftpd_banner=Welcome to blah FTP service. \\設(shè)置定義登錄ftp的歡迎語 #其他選項(xiàng) connect_from_port_20=YES #設(shè)置主動(dòng)連接的數(shù)據(jù)傳輸端口 chown_uploads=YES #是否啟動(dòng)上傳ftp文件后,更改文件的屬主 [YES | NO] chown_username=whoever #若啟用了更改上傳文件的屬主,則定義是哪一個(gè)屬主 idle_session_timeout=600 \\設(shè)置會(huì)話超時(shí)時(shí)間 data_connection_timeout=120 \\設(shè)置數(shù)據(jù)傳輸超時(shí)時(shí)間 nopriv_user=ftpsecure \\運(yùn)行vsftpd需要非特權(quán)系統(tǒng)用戶,默認(rèn)是nobody async_abor_enable=YES \\設(shè)置是否允許執(zhí)行特殊的ftp命令async ABOR ascii_upload_enable=YES \\設(shè)置是否使用ascii碼上傳文件 [YES | NO] ascii_download_enable=YES \\設(shè)置是否使用ascii碼下載文件 [YES | NO] deny_email_enable=YES \\設(shè)置是否禁止匿名用戶使用某些郵件地址 banned_email_file=/etc/vsftpd/banned_emails \\郵件地址文件 ls_recurse_enable=YES \\是否允許遞歸 [YES | NO] listen=YES \\設(shè)置vsftpd是否處于監(jiān)聽狀態(tài) listen_ipv6=YES \\是否啟用ipv6地址監(jiān)聽 user_config_dir=/etc/vsftpd/vuser_config\\設(shè)置匿名用戶的權(quán)限配置文件位置 (默認(rèn)沒有) userlist_enable=YES \\此選項(xiàng)與下面選項(xiàng)userlit_deny都為YES時(shí),/etc/vsftpd/user_list為黑名單, userlist_deny=YES \\若userlist_enable為YES,userlist_deny=NO則此文件為白名單 tcp_wrappers=YES \\支持tcp_wrappers訪問限制(/etc/{hosts.allow,hosts.deny} max_clients=1024 \\限制最大并發(fā)連接數(shù)(默認(rèn)沒有此選項(xiàng)) max_per_ip=1024 \\限制每個(gè)ip同時(shí)請(qǐng)求的連接數(shù)(默認(rèn)沒有此選項(xiàng)) anon_max_rate=1024 \\限制匿名用戶的傳輸速率(默認(rèn)沒有此選項(xiàng)) local_max_rate=1024 \\限制本地用戶的傳輸速率(默認(rèn)沒有出選項(xiàng)) #匿名用戶(映射為ftp用戶)共享資源位置:/var/ftp #系統(tǒng)用戶通過ftp訪問的資源的位置:用戶自己的家目錄 #虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成為的系統(tǒng)用戶的家目錄
六、vsftpd+mysql+pam實(shí)現(xiàn)過程
1、安裝數(shù)據(jù)庫及pam_mysql插件 [root@lab01 ~]# yum -y install mysql-server pam_mysql 2、創(chuàng)建用于vsftpd的數(shù)據(jù)庫,在創(chuàng)建表和用戶 mysql> CREATE DATABASE vsftpd; #創(chuàng)建數(shù)據(jù)庫 mysql> use vsftpd; #進(jìn)入數(shù)據(jù)庫 mysql> create table users ( #創(chuàng)建表 -> id int AUTO_INCREMENT NOT NULL, -> name char(20) binary NOT NULL, -> password char(48) binary NOT NULL, -> primary key(id) -> ); mysql> INSERT INTO users(name,password) values('bjwf',password('123456')); mysql> INSERT INTO users(name,password) values('zhangsan',password('bjwf.com')); mysql> GRANT ALL ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY 'bjwf.com'; #用戶授權(quán) mysql> FLUSH PRIVILEGES; #刷新授權(quán) 3、查看pam模塊,并創(chuàng)建認(rèn)證文件 [root@lab01 ~]# rpm -ql pam_mysql /lib64/security/pam_mysql.so #pam模塊生成認(rèn)證時(shí)需要的共享庫 [root@lab01 ~]# vim /etc/pam.d/vsftpd.mysql auth required /lib64/security/pam_mysql.so user=vsftpd passwd=bjwf.com host=192.168.130.251 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 account required /lib64/security/pam_mysql.so user=vsftpd passwd=bjwf.com host=192.168.130.251 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 4、創(chuàng)建虛擬用戶的映射用戶 [root@lab01 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser [root@lab01 ~]# chmod go+rx /var/ftproot 5、編輯配置文件,啟動(dòng)如下選項(xiàng) [root@lab01 ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES pam_service_name=vsftpd.mysql guest_enable=YES guest_username=vuser 6、為單個(gè)用戶提供配置文件 [root@lab01 ~]# vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vuser_config [root@lab01 ~]# mkdir /etc/vsftpd/vuser_config [root@lab01 ~]# cd /etc/vsftpd/vuser_config [root@lab01 vuser_config]# cat bjwf anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES [root@lab01 vuser_config]# cat zhangsan anon_upload_enable=YES anon_mkdir_write_enable=NO anon_other_write_enable=NO 7、重啟服務(wù)驗(yàn)證權(quán)限 [root@lab01 ~]# service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] [root@lab01 ~]# netstat -tnlp|grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1850/vsftpd [root@lab01 ~]# cp install.log /var/ftproot/ #切換另一臺(tái)機(jī)器測試 [root@node1 tmp]# lftp -u bjwf 192.168.130.251 #使用可讀、可寫賬號(hào) Password: lftp bjwf@192.168.130.251:~> ls #查看文件 -rw-r--r-- 1 0 0 9545 Jul 01 09:16 install.log lftp bjwf@192.168.130.251:/> lcd /etc/ #切換到本地目錄 lcd ok, local cwd=/etc lftp bjwf@192.168.130.251:/> put fstab #上傳文件 541 bytes transferred lftp bjwf@192.168.130.251:/> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab -rw-r--r-- 1 0 0 9545 Jul 01 09:16 install.log lftp bjwf@192.168.130.251:/> put passwd #上傳文件 1228 bytes transferred lftp bjwf@192.168.130.251:/> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab -rw-r--r-- 1 0 0 9545 Jul 01 09:16 install.log -rw------- 1 500 500 1228 Jul 01 09:21 passwd lftp bjwf@192.168.130.251:/> mkdir haha #創(chuàng)建目錄 mkdir ok, `haha' created lftp bjwf@192.168.130.251:/> rm install.log #刪除文件 rm ok, `install.log' removed lftp bjwf@192.168.130.251:/> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab drwx------ 2 500 500 4096 Jul 01 09:21 haha -rw------- 1 500 500 1228 Jul 01 09:21 passwd [root@node1 tmp]# lftp -u zhangsan 192.168.130.251 #切換另一個(gè)用戶 Password: lftp zhangsan@192.168.130.251:~> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab drwx------ 2 500 500 4096 Jul 01 09:21 haha -rw------- 1 500 500 1228 Jul 01 09:21 passwd lftp zhangsan@192.168.130.251:/> lcd /etc lcd ok, local cwd=/etc lftp zhangsan@192.168.130.251:/> put issue #上傳成功 23 bytes transferred lftp zhangsan@192.168.130.251:/> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab drwx------ 2 500 500 4096 Jul 01 09:21 haha -rw------- 1 500 500 23 Jul 01 09:23 issue -rw------- 1 500 500 1228 Jul 01 09:21 passwd lftp zhangsan@192.168.130.251:/> rm issue rm: Access failed: 550 Permission denied. (issue) #不能刪除 lftp zhangsan@192.168.130.251:/> mkdir data mkdir: Access failed: 550 Permission denied. (data) #不能創(chuàng)建目錄 lftp zhangsan@192.168.130.251:/> ls -rw------- 1 500 500 541 Jul 01 09:20 fstab drwx------ 2 500 500 4096 Jul 01 09:21 haha -rw------- 1 500 500 23 Jul 01 09:23 issue -rw------- 1 500 500 1228 Jul 01 09:21 passw #常見問題: 1、ftp無法登陸,請(qǐng)檢查你的文件夾權(quán)限并檢查主配置文件中的屬性是否打開了,如anonymous_enable,local_enable等。 2、無法切換目錄或者個(gè)別用戶無法登陸,請(qǐng)檢查chroot_list,ftpusers,user_list文件內(nèi)容或者主配置文件中的配置是否正確。 3、mysql存儲(chǔ)無法登陸,請(qǐng)查看日志文件/var/log/secure,/var/log/message,/var/log/xferlog,并確認(rèn)認(rèn)證文件沒有寫錯(cuò),仔細(xì)檢查配置文件與目錄和被映射的實(shí)體用戶的權(quán)限。 4、如果遇到密碼錯(cuò)誤,檢查密碼文件,如mysql表中字段長度類型是否正確,數(shù)據(jù)庫用戶是否能遠(yuǎn)程登陸訪問數(shù)據(jù)庫user表。 5、建議不要編譯安裝pam_mysql模塊 6、無法正常工作時(shí),請(qǐng)檢查端口是否開啟,或檢查防火墻和selinux是否有配置正確。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。