File Transfer Protocol 早期的三個應用級協議之一 mysql
兩種模式:(從服務器角度 )linux
服務器被動模式數據端口示例: 227 Entering Passive Mode (192,168,175,138,224,59) 服務器數據端口爲:224*256+59 sql
FTP服務器: Wu-ftpd,Proftpd,Pureftpd,ServU,IIS,vsftpd:Very Secure FTP Daemon數據庫
vsftpd是CentOS默認FTP服務器 高速,穩定,下載速度是WU-FTP的兩倍,單機最多可支持15000個併發,vsftpd程序包vim
客戶端軟件: ftp,lftp,lftpg et,wget,curl windows
狀態碼: centos
用戶認證: 瀏覽器
用戶認證配置文件:/etc/pam.d/vsftpd 服務器
配置文件:/etc/vsftpd/vsftpd.conf (man 5 vsftpd.conf )格式:option=value 注意:=先後不要有空格網絡
命令端口 listen_port=21
主動模式端口 connect_from_port_20=YES 主動模式端口爲20 ftp_data_port=20 指定主動模式的端口
linux客戶端默認使用被動模式 ,windows 客戶端默認使用主動模式
pasv_min_port=6000 0爲隨機分配 pasv_max_port=6010
使用當地時間 use_localtime=YES 使用當地時間(默認爲NO,使用GMT)
anonymous_enable=YES 支持匿名用戶
no_anon_password=YES(默認NO) 匿名用戶略過口令檢查
anon_world_readable_only (默認YES)只能下載所有讀的文件
anon_upload_enable=YES 匿名上傳,注意:文件系統權限
anon_mkdir_write_enable=YES
anon_other_write_enable=YES 可刪除和修改上傳的文件
anon_umask=077 指定匿名上傳umask 指定上傳文件的默認的全部者和權限
chown_uploads=YES(默認NO)
chown_username=wang chown_upload_mode=0644
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時,則chroot_list中用戶不由錮 當chroot_local_user=NO時,則chroot_list中用戶禁錮
登陸提示信息:
ftpd_banner=「welcome to heiye ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt 優先上面項生效
目錄訪問提示信息:
dirmessage_enable=YES (默認)
message_file=.message(默認)信息存放在指定目錄下.message
使用pam(Pluggable Authentication Modules)完成用戶認證:
傳輸參數調整:
View Code
配置FTP服務以非獨立服務方運行:listen=NO,默認爲獨立方式 cat /etc/xinetd.d/vsftpd
service ftp {
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_failure += USERID
disable = no }
實現基於SSL的FTPS :
查看是否支持SSL ldd `which vsftpd` 支持可查看到libssl.so
建立自簽名證書 cd /etc/pki/tls/certs/ && make vsftpd.pem openssl x509 -in vsftpd.pem -noout –text
配置vsftpd服務支持SSL:
/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/pki/tls/certs/vsftpd.pem
vsftpd虛擬用戶 : 全部虛擬用戶會統一映射爲一個指定的系統賬號:訪問共享位 置,即爲此係統賬號的家目錄 ,各虛擬用戶可被賦予不一樣的訪問權限,經過匿名用戶的權限控 制參數進行指定
虛擬用戶賬號的存儲方式: 文件:編輯文本文件,此文件須要被編碼爲hash格式 (奇數行爲用戶名,偶數行爲密碼 )
實現基於文件驗證的vsftpd虛擬用戶
1、建立用戶數據庫文件
1 2 3 4 |
vim /etc/vsftpd/vusers.txt (heiye wangpass \n xiaoyao xiaoyaopass) cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db chmod 600 vusers.db |
2、建立用戶和訪問FTP目錄 •
1 2 3 4 5 6 |
useradd -d /var/ftproot -s /sbin/nologin vuser chmod +rx /var/ftproot/ centos7 還須要執行如下操做: chmod -w /var/ftproot/ mkdir /var/ftproot/upload setfacl -m u:vuser:rwx /var/ftproot/upload |
3、建立pam配置文件
vim /etc/pam.d/vsftpd.db
4、指定pam配置文件
vim /etc/vsftpd/vsftpd.conf
5、SELinux設置: 禁用SELinux 或者 setsebool -P ftpd_full_access 1
6、虛擬用戶創建獨立的配置文件
mdkir /etc/vsftpd/vusers.d/ 建立配置文件存放的路徑
vim /etc/vsftpd/vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d/
cd /etc/vsftpd/vusers.d/ 進入此目錄
容許heiye用戶可讀寫,其它用戶只讀
vim heiye 建立各用戶自已的配置文件
vim xiaoyao 建立各用戶自已的配置文件local_root=/ftproot 登陸目錄改變至指定的目錄
實現基於MYSQL驗證的vsftpd虛擬用戶:
1、安裝所須要包和包組: 在數據庫服務器上安裝包,在FTP服務器上安裝vsftpd和pam_mysql包,需手動編譯安裝的 :
yum -y groupinstall "Development Tools"
yum -y install mariadb-devel pam-devel vsftpd
下載pam_mysql-0.7RC1.tar.gz
./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security && make && make install
2、在數據庫服務器上建立虛擬用戶帳號
1.創建存儲虛擬用戶數據庫和鏈接的數據庫用戶 mysql> CREATE DATABASE vsftpd; mysql> SHOW DATABASES;
2.準備相關表
mysql> USE vsftpd;
mysql> CREATE TABLE users ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name CHAR(50) BINARY NOT NULL, password CHAR(48) BINARY NOT NULL );
3.添加虛擬用戶
mysql>DESC users; mysql> INSERT INTO users(name,password) values(‘heiye',password('magedu'));
mysql> INSERT INTO users(name,password) values(‘heiye',password('centos'));
mysql> SELECT * FROM users;
3、在FTP服務器上配置vsftpd服務
1.在FTP服務器上創建pam認證所需文件 vi /etc/pam.d/vsftpd.mysql 添加以下兩行
auth required pam_mysql.so user=vsftpd passwd=centos host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=mysqlserver db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
注意:crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示 使用mysql password()函數加密,3表示md5加密,4表示 sha1加密
配置字段說明
View Code
2.創建相應用戶和修改vsftpd配置文件,使其適應mysql認證 創建虛擬用戶映射的系統用戶及對應的目錄
1 2 3 4 5 6 7 8 9 10 |
useradd -s /sbin/nologin -d /var/ftproot vuser chmod 555 /var/ftproot(centos7 需除去ftp根目錄的寫權限 ) mkdir /var/ftproot/{upload,pub} setfacl –m u:vuser:rwx /var/ftproot/upload 確保/etc/vsftpd.conf中已經啓用瞭如下選項 anonymous_enable=YES 添加下面兩項 guest_enable=YES guest_username=vuser 修改下面一項,原系統用戶沒法登陸 pam_service_name=vsftpd.mysql |
4、啓動vsftpd服務
1 2 3 4 |
service vsftpd start systemctl start vsftpd chkconfig vsftpd on systemctl enable vsftpd |
查看端口開啓狀況 netstat -tnlp |grep :21
5、Selinux相關設置:在FTP服務器上執行
1 2 3 4 |
restorecon -R /lib64/security setsebool -P ftpd_connect_db 1 setsebool -P ftp_home_dir 1 chcon -R -t public_content_rw_t /var/ftproot/ |
6、測試:利用FTP客戶端工具,以虛擬用戶登陸驗證結果
tail /var/log/secure
7、在FTP服務器上配置虛擬用戶具備不一樣的訪問權限
vsftpd能夠在配置文件目錄中爲每一個用戶提供單獨的配置文件以 定義其ftp服務訪問權限,每一個虛擬用戶的配置文件名同虛擬用 戶的用戶名。配置文件目錄能夠是任意未使用目錄,只須要在 vsftpd.conf指定其路徑及名稱便可
一、配置vsftpd爲虛擬用戶使用配置文件目錄 vim /etc/vsftpd/vsftpd.conf 添加以下選項
user_config_dir=/etc/vsftpd/vusers_config
二、建立所須要目錄,併爲虛擬用戶提供配置文件
1 2 3 |
mkdir /etc/vsftpd/vusers_config/ cd /etc/vsftpd/vusers_config/ touch xiaoyao heiye |
三、配置虛擬用戶的訪問權限
虛擬用戶對vsftpd服務的訪問權限是經過匿名用戶的相關指令進行的。若是須要讓用戶heiye具備上傳文件的權限,能夠修改/etc/vsftpd/vusers_config/wang文件,在裏面添加以下選項並設置爲YES便可,只讀則設爲NO 注意:需確保對應的映射用戶對於文件系統有寫權限
NFS:Network File System 網絡文件系統,基於內核的文件系統。經過使用NFS,用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol遠程過程調用)實現
RPC採用C/S模式。客戶機請求程序調用進程發送一個有進程 參數的調用信息到服務進程,而後等待應答信息。在服務器端 ,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息 到達,服務器得到進程參數,計算結果,發送答覆信息,而後等待下一個調用信息,最後,客戶端調用進程接收答覆信息, 得到進程結果,而後調用執行繼續進行。
NFS優點:節省本地存儲空間,將經常使用的數據如:home目錄, 存放在一臺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服務主要進程:
日誌:/var/lib/nfs/
配置NFS使用固定端口 vim /etc/sysconfig/nfs
防火牆除開放上述端口,還需開放TCP和UDP的111和2049 共4個端口
NFS配置文件 導出的文件系統的格式: /dir 主機1(opt1,opt2) 主機2(opt1,opt2) ...
每一個條目指定目錄導出到的哪些主機,及相關的權限和選項
•默認選項:(ro,sync,root_squash,no_all_squash)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
• 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配置文件 在/etc/exports文件中定義導出目錄 • /myshare server.example.com • /myshare *.example.com • /myshare server?.example.com • /myshare server[0-20].example.com • /myshare 172.25.11.10 • /myshare 172.25.0.0/16 • /myshare 2000:472:18:b51:c32:a21 • /myshare 2000:472:18:b51::/64 • /myshare *.example.com 172.18.0.0/16 • /myshare desktop.example.com(ro) • /myshare desktop.example.com(ro) server[0- 20].example.com(rw) • /myshare diskless.example.com(rw,no_root_squash) |
NFS工具
rpcinfo :
exportfs:
showmount -e hostname
mount.nfs 掛載工具
NFSv4支持經過掛載NFS服務器的共享「根」,從而瀏覽 NFS服務器上的共享目錄列表 mount nfsserver:/ /mnt/nfs
NFS相關的掛載選項:
1 2 3 4 5 |
fg(默認)前臺掛載 bg後臺掛載 hard(默認)持續請求 soft 非持續請求 intr 和hard配合請求可中斷 rsize和wsize 一次讀和寫數據最大字節數,rsize=32768 _netdev 無網絡不掛載 |
示例: mount -o rw,nosuid,fg,hard,intr 172.18.64.107:/testdir /mnt/nfs/
開機掛載:/etc/fstab 172.18.64.107:/public /mnt/nfs nfs defaults 0 0
自動掛載 :可以使用autofs按須要掛載NFS共享,在空閒時自動卸載
系統管理器指定由/etc/auto.master自動掛載器守護進程控 制的掛載點 ,自動掛載監視器訪問這些目錄並按要求掛載文件系統 , 文件系統在失活的指定間隔5分鐘後會自動卸載 ,爲全部導出到網絡中的NFS啓用特殊匹配 -host 至 「browse」
示例:
/etc/auto.master: /- /etc/auto.direct
/etc/auto.direct:
/foo server1:/export/foo
/user/local/ server1:/usr/local
實現NFS服務
systemctl start nfs-server
systemctl enable nfs-server
mkdir /nfsshare
chown nfsnobody /nfsshare
vi /etc/exports
/nfsshare desktopX(rw)
exporfs –r
mkdir /mnt/nfsshare
mount serverX:/nfsshare /mnt/nfsshare
vim /etc/fstab
nfsserver:/nfsshare /mnt/nfsshare nfs defaults 0 0
mount -a
實現NFS僞根
配置NFS服務器
vi /etc/fstab
/data/read /exports/read none bind 0 0
/data2/write /exports/write none bind 0 0
vi /etc/exports
/exports *(fsid=o,rw,crossmnt)
/exports/read 172.18.64.0/24(ro)
/exports/write 172.18.0.0/24(rw)
配置NFS客戶端
mount nfsserver:/ /mnt/nfs
vi /etc/fstab nfsserver:/
/mnt/ nfs4 ro 0 0
SMB:Server Message Block服務器消息塊,IBM發佈,最先是DOS網絡文件共享協議
Cifs:common internet file system,微軟基於SMB發佈
SAMBA:1991年Andrew Tridgell,實現windows和UNIX相通
SAMBA的功能:
• 共享文件和打印,實如今線編輯
• 實現登陸SAMBA用戶的身份認證
• 能夠進行NetBIOS名稱解析
• 外圍設備共享
相關包: Samba 提供smb服務 Samba-client 客戶端軟件 samba-common 通用軟件 cifs-utils smb客戶端工具 samba-winbind 和AD相關
相關服務進程:
主配置文件:/etc/samba/smb.conf (幫助參看:man smb.conf)
smb.conf繼承了.ini文件的格式,用[ ] 分紅不一樣的部分
全局設置: [global] 服務器通用或全局設置的部分
特定共享設置:
[homes] 用戶的家目錄共享
[printers] 定義打印機資源和服務
[sharename] 自定義的共享目錄配置
其中:#和;開頭的語句爲註釋,大小寫不敏感
Security三種認證方式:
passdb backend = tdbsam 密碼數據庫格式
samba用戶須是Linux用戶,建議使用/sbin/nologin
SAMBA服務器全局配置
管理SAMBA用戶
添加samba用戶
修改用戶密碼:smbpasswd user
刪除用戶和密碼:
查看samba用戶列表:
查看samba服務器狀態: smbstatus
配置目錄共享 :每一個共享目錄應該有獨立的[ ]部分
1 2 3 4 5 6 7 8 9 |
[共享名稱] 遠程網絡看到的共享名稱 comment 註釋信息 path 所共享的目錄路徑 public 可否被guest訪問的共享,默認no,和guest ok 相似 browsable 是否容許全部用戶瀏覽此共享,默認爲yes,no爲隱藏 writable=yes 能夠被全部用戶讀寫,默認爲no read only=no 和writable=yes等價,如與以上設置衝突,放在 後面的設置生效,默認只讀 write list 三種形式:用戶,@組名,+組名,用,分隔 如writable=no,列表中用戶或組可讀寫,不在列表中用戶只讀 valid users 特定用戶才能訪問該共享,如爲空,將容許全部用 戶,用戶名之間用空格分隔 |
基於特定用戶和組的共享 , 編輯/etc/samba/smb.conf
1 2 3 4 5 |
[share] path = /app/dir valid users=heiye,@admins writeable = no browseable = no |
SMB客戶端訪問 ,通用命名規範 格式:\\sambaserver\sharename
終端下使用smbclient登陸服務器 :
> cd directory
> get file1
> put file2 smbclient //instructor.example.com/shared -U heiye
可使用-U選項來指定用戶%密碼,或經過設置和導出USER和 PASSWD環境變量來指定
實現SMB共享
1、在samba服務器上安裝samba包 yum -y install samba
2、建立samba用戶和組
1 2 3 4 5 |
groupadd -r admins useradd -s /sbin/nologin -G admins heiye smbpasswd -a heiye useradd -s /sbin/nologin xiaoyao smbpasswd -a heiye |
3、建立samba共享目錄,並設置SElinux
1 2 3 4 5 |
mkdir /testdir/smbshare chgrp admins /testdir/smbshare chmod 2775 /testdir/smbshare semanage fcontext -a -t samba_share_t '/testdir/smbshare(/.*)?' restorecon -vvFR /testdir/smbshare |
3、samba服務器配置
1 2 3 4 5 6 7 8 9 10 |
vim /etc/samba/smb.conf security = user passdb backend = tdbsam [share] path = /testdir/smbshare write list = @admins systemctl start smb nmb systemctl enable smb nmb firewall-cmd --permanent --add-service=samba firewall-cmd --reload |
4、samba客戶端訪問
安裝包 yum -y install cifs-utils
用heiye用戶掛載smb共享並訪問
用xiaoyao用戶掛載smb共享並訪問
SAMBA共享默認只支持同時用一個用戶掛載SMB共享 ,CentOS7中可啓用多用戶掛載功能 客戶端掛載samba共享目錄後,在客戶端登陸的不一樣用戶 訪問同一個samba的掛載點,可得到不一樣權限 多用戶SMB掛載
多用戶SMB掛載
1、samba服務器配置
• yum install samba
• mkdir /multiuser
• vim /etc/samba/smb.conf
1 2 3 4 |
[smbshare] path=/multiuser writable=no write list= @admins 63 |
2、samba服務器建立samba用戶
1 2 3 4 5 6 |
useradd –s /sbin/nologin smbuser smbpasswd –s smbuser useradd –s /sbin/nologin –G admins heiye smbpasswd –a heiye useradd –s /sbin/nologin xiaoyao smbpasswd –a xiaoyao |
3、samba服務器設置目錄權限和SELinux
對heiye,admins組分配目錄讀寫權限
設置SELinux標籤:
4、samba客戶端啓用多用戶掛載
1 2 3 4 5 6 7 8 9 |
• yum -y install cifs-utils • mkdir /mnt/smb • echo 'username=smbuser' >/etc/multiuser • echo 'password=centos' >>/etc/multiuser • chmod 600 /etc/multiuser •vim /etc/fstab //smbserver/smbshare /mnt/smb cifs credentials=/etc/multiuser,multiuser,sec=ntlmssp 0 0 • mount -a |
5、在samba客戶端用實現多用戶訪問
useradd heiye;useradd xiaoyao
用root訪問 ls /mnt/smb ; touch /mnt/smb/root.txt
用heiye訪問
用xiaoyao訪問
實現圖形化管理
1、在CentOS6(第二張光盤)上安裝包 yum install samba-swat
2、配置swat服務
vim /etc/xinetd.d/swat
disable = no port = 901
only_from = 127.0.0.1 此行改爲172.18.0.0/16
service xinetd restart
3、瀏覽器訪問管理 http://127.0.0.1:901 以root用戶登陸 (注意:commit changes後會自動從新加載配置,且自動 將/etc/samba/smb.conf中原有的註釋全刪除 )