一、NFS
1、NFS簡介
NFS全稱是network file system 網絡檔案系統nfs依賴網絡帶寬的支援
NFS允許一個系統在網絡上與他人共享目錄和檔案。通過使用NFS使用者和程式可以像通路本地檔案一樣通路遠端系統上的檔案。
假如有三台機器A, B, C它們需要通路同一個目錄目錄中都是圖檔傳統的做法是把這些圖檔分别放到A, B, C. 但是使用NFS隻需要放到A上然後A共享給B和C即可。通路的時候B和C是通過網絡的方式去通路A上的那個目錄的。
2、安裝、配置NFS服務
需要安裝兩個包(nfs-utils和rpcbind)
#yum install -y nfs-utils 會同時安裝上依賴包rpcbind
提供nfs服務的機器上 vim /etc/exports 輸入以下内容
/home/ 192.168.20.0/24(rw,sync,all_squash,anonuid=501,anongid=501)
共分為三部分
/home/ 第一部分是本地要共享出去的目錄
192.168.20.0/24 第二部分為允許通路的主機可以是一個IP也可以是一個IP段
(rw,sync,all_squash,anonuid=501,anongid=501) 第三部分就是小括号裡面的為一些權限選項。權限為讀寫同步限定所有使用者并且限定的uid和gid都為501501賬号必須真實存在。
啟動nfs服務先啟動rpcbind再啟動nfs啟動順序錯誤的話會導緻後面出錯
/etc/init.d/rpcbind start
/etc/init.d/nfs start
3、NFS配置的一些選項說明
rw 可讀可寫
ro 隻讀
sync 同步模式記憶體中資料時時寫入磁盤
async 不同步把記憶體中資料定期寫入磁盤中
no_root_squash squash的意思為擠壓壓制字面意思為不壓制root的權限加上這個選項後root使用者就會對共享的目錄擁有至高的權限控制就像是對本機的目錄操作一樣。不安全不建議使用
root_squash和上面的選項對應root使用者對共享目錄的權限不高隻有普通使用者的權限即限制了root
all_squash不管使用NFS的使用者是誰他的身份都會被限定成為一個指定的普通使用者身份
anonuid/anongid 要和root_squash 以及all_squash一同使用用于指定使用NFS的使用者限定後的uid和gid前提是本機的/etc/passwd中存在這個uid和gid。
4、用戶端上挂載NFS
用戶端機器也同樣需要安裝nfs包# yum install -y nfs-utils
同時需要檢查iptables清空iptables
關閉selinux防火牆
檢視伺服器端都共享了哪些目錄 #showmount -e 192.168.20.30nfs伺服器的ip位址
用戶端使用showmount -e 時報錯RPC程式沒有注冊
clnt_create: RPC: Program not registered
出錯原因是rpcbind服務與NFS服務啟動順序不對先停止服務重新啟動先啟動rpcbind服務再啟動nfs服務
1
2
<code>[root@localhost ~]</code><code># /etc/init.d/nfs stop</code>
<code>[root@localhost ~]</code><code># /etc/init.d/rpcbind stop</code>
重新啟動後執行顯示正确
3
4
5
<code>[root@localhost ~]</code><code># /etc/init.d/rpcbind start</code>
<code>[root@localhost ~]</code><code># /etc/init.d/nfs start</code>
<code>[root@yong ~]</code><code># showmount -e 192.168.20.30</code>
<code>Export list </code><code>for</code> <code>192.168.20.30:</code>
<code>/home</code> <code>192.168.20.0</code><code>/24</code>
在用戶端上挂載服務端的nfs指令
mount -t nfs -o nolock,nfsvers=3 192.168.20.30:/home/ /mnt/
//如果不加 -onolock,nfsvers=3 則在挂載目錄下的檔案屬主群組都是nobody如果指定nfsvers=3則顯示root
-o nolock 不上鎖指定nfsvers版本是3預設是4
df -h 檢視挂載的情況
實驗測試nfs
伺服器端共享/home目錄允許192.168.20.0網段的機器通路指定使用nfs使用者的身份為501
6
7
8
9
10
11
<code>[root@localhost home]</code><code># cat /etc/exports </code>
<code>/home/</code> <code>192.168.20.0</code><code>/24</code><code>(rw,</code><code>sync</code><code>,all_squash,anonuid=501,anongid=501)</code>
<code>[root@localhost /]</code><code># ls -ld home/</code>
<code>drwxr-xr-x. 8 root root 4096 5月 22 11:33 home/</code>
<code>[root@localhost home]</code><code># ls -ld</code>
<code>rwxr-xr-x 2 root root 4096 5月 15 15:54 logs</code>
<code>drwx------. 3 mysql mysql 4096 5月 11 14:47 mysql</code>
<code>drwx------. 4 php-fpm php-fpm 4096 5月 13 14:24 php-fpm</code>
<code>drwx------ 2 </code><code>test</code> <code>test</code> <code>4096 5月 22 11:40 </code><code>test</code>
<code>[root@localhost home]</code><code># mkdir 111</code>
<code>[root@localhost home]</code><code># chmod 777 111</code>
用戶端機器建立立檔案夾nfs挂載nfs伺服器的/home目錄到nfs目錄挂載後使用df -h檢視已挂載的nfs
<code>[root@yong ~]</code><code># mkdir nfs</code>
<code>[root@yong ~]</code><code># mount -t nfs 192.168.20.30:/home/ /root/nfs/</code>
<code>[root@yong ~]</code><code># df -h</code>
<code>Filesystem Size Used Avail Use% Mounted on</code>
<code>/dev/mapper/VolGroup-lv_root</code>
<code> </code><code>19G 2.9G 15G 17% /</code>
<code>tmpfs 250M 0 250M 0% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>477M 46M 407M 11% </code><code>/boot</code>
<code>/dev/sdb2</code> <code>6.0G 93M 5.6G 2% </code><code>/data</code>
<code>192.168.20.30:</code><code>/home/</code> <code>18G 2.1G 15G 13% </code><code>/root/nfs</code>
ls -l 列出來共享的目錄的檔案所屬主、組全部為nobody在nfs目錄建立目錄或檔案提示權限被拒絕
<code>[root@yong nfs]</code><code># ls -l</code>
<code>drwxr-xr-x 2 nobody nobody 4096 May 15 15:54 logs</code>
<code>drwx------ 3 nobody nobody 4096 May 11 14:47 mysql</code>
<code>drwx------ 4 nobody nobody 4096 May 13 14:24 php-fpm</code>
<code>drwx------ 2 nobody nobody 4096 May 22 11:40 </code><code>test</code>
<code>[root@yong nfs]</code><code># mkdir abc</code>
<code>mkdir</code><code>: cannot create directory `abc': Permission denied</code>
<code>[root@yong nfs]</code><code># touch 1.txt</code>
<code>touch</code><code>: cannot </code><code>touch</code> <code>`1.txt': Permission denied</code>
伺服器端/home目錄建立111目錄并設定權限為777用戶端進入111目錄下可以建立目錄或檔案建立的檔案所屬主、組都為nobodoy
<code>[root@yong 111]</code><code># ls -l</code>
<code>-rw-r--r-- 1 nobody nobody 0 May 22 13:40 1.txt</code>
取消挂載重新挂載添加參數-o nolock,nfsvers=3 顯示的所屬主則為root進入111目錄建立立檔案檔案所屬主、組權限為501因為用戶端已經存在501 對應賬号為user1是以這裡顯示賬号為user1
<code>[root@yong ~]</code><code># umount /root/nfs/</code>
<code>[root@yong ~]</code><code># mount -t nfs -o nolock,nfsvers=3 192.168.20.30:/home/ /root/nfs/</code>
12
<code>drwxrwxrwx 2 root root 4096 May 22 14:18 111</code>
<code>drwxr-xr-x 2 root root 4096 May 15 15:54 logs</code>
<code>drwx------ 3 500 testgroup 4096 May 11 14:47 mysql</code>
<code>drwx------ 4 user1 user1 4096 May 13 14:24 php-fpm</code>
<code>drwx------ 2 php-fpm php-fpm 4096 May 22 11:40 </code><code>test</code>
<code>[root@yong nfs]</code><code># cd 111</code>
<code>[root@yong 111]</code><code># touch 2.txt</code>
<code>-rw-r--r-- 1 user1 user1 0 May 22 2015 2.txt</code>
<code>[root@yong 111]</code><code># id -u user1</code>
<code>501</code>
5、exportfs 指令的使用
-a 全部挂載或者解除安裝
-r 重新挂載
-u 解除安裝某一個目錄
-v 顯示共享的目錄
/home/ 192.168.20.0/24(rw,sync,no_root_squash) 不限制root使用者用戶端再建立的使用者的所屬主組都是root
可以進行更改權限删除檔案。
改變/etc/exports配置檔案後不用重新開機nfs服務執行指令#exportfs -arv 使/etc/exports配置檔案生效
我們還可以把要挂載的nfs目錄寫到client上的/etc/fstab檔案中 192.168.20.10:/tmp/ /test nfs nolock 0 0 然後 mount -a
實驗測試伺服器端更改nfs配置不壓制root的權限
<code>/home/</code> <code>192.168.20.0</code><code>/24</code><code>(rw,</code><code>sync</code><code>,no_root_squash)</code>
<code>[root@localhost home]</code><code># exportfs -arv</code>
<code>exporting 192.168.20.0</code><code>/24</code><code>:</code><code>/home</code>
用戶端挂載nfs不指定nfsvers版本顯示的賬号還是為nobody但是可以直接建立檔案已經有root權限
<code>[root@yong ~]</code><code># cd nfs/</code>
<code>drwxrwxrwx 2 nobody nobody 4096 May 22 14:25 111</code>
<code>-rw-r--r-- 1 nobody nobody 0 May 22 2015 1.txt</code>
取消挂載nfs重新指定參數挂載挂載後顯示賬号為root
<code>drwxrwxrwx 2 root root 4096 May 22 14:25 111</code>
<code>-rw-r--r-- 1 root root 0 May 22 2015 1.txt</code>
二、ftp
1、什麼是ftp
FTP 是File Transfer Protocol檔案傳輸協定的英文簡稱而中文簡稱為 “文傳協定” 用于Internet上的控制檔案的雙向傳輸。
FTP的主要作用就是讓使用者連接配接上一個遠端計算機這些計算機上運作着FTP伺服器程式檢視遠端計算機有哪些檔案然後把檔案從遠端計算機上拷到本地計算機或把本地計算機的檔案送到遠端計算機去。
在CentOS或者RedHat Linux上有自帶的ftp軟體叫做vsftpd。
2、使用pure-ftpd搭建FTP服務
pure-ftpd 官網 http://www.pureftpd.org/project/pure-ftpd
pure-ftpd 是服務端工具
先安裝epel擴充源然後安裝pure-ftpd包
#yum install -y epel-release
#yum install -y pure-ftpd
yum list 可以檢視包所在的源
<code>[root@pma ~]</code><code># yum list |grep pure-ftpd</code>
<code>pure-ftpd.i686 1.0.30-1.el6 epel </code>
<code>pure-ftpd-selinux.i686 1.0.30-1.el6 epel</code>
pure-ftpd 配置模闆參考
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<code>cat</code> <code>/etc/pure-ftpd/pure-ftpd</code><code>.conf</code>
<code>ChrootEveryone </code><code>yes</code>
<code>BrokenClientsCompatibility no</code>
<code>MaxClientsNumber 50</code>
<code>Daemonize </code><code>yes</code>
<code>MaxClientsPerIP 8</code>
<code>VerboseLog no</code>
<code>DisplayDotFiles </code><code>yes</code>
<code>AnonymousOnly no</code>
<code>NoAnonymous </code><code>yes</code>
<code>SyslogFacility </code><code>ftp</code>
<code>DontResolve </code><code>yes</code>
<code>MaxIdleTime 15</code>
<code>PureDB </code><code>/etc/pure-ftpd/pureftpd</code><code>.pdb</code>
<code>LimitRecursion 3136 8</code>
<code>AnonymousCanCreateDirs no</code>
<code>MaxLoad 4</code>
<code>AntiWarez </code><code>yes</code>
<code>Umask 133:022</code>
<code>MinUID 10</code>
<code>AllowUserFXP no</code>
<code>AllowAnonymousFXP no</code>
<code>ProhibitDotFilesWrite no</code>
<code>ProhibitDotFilesRead no</code>
<code>AutoRename no</code>
<code>AnonymousCantUpload no</code>
<code>CustomerProof </code><code>yes</code>
生成随機字元串使用者名長度為5沒有特殊字元沒有數字沒有大寫字母密碼沒有特殊字元然後重定向到一個檔案中
如果沒有mkpasswd指令需要安裝expect包# yum install -y expect
user=`mkpasswd -l 5 -s 0 -d 0 -C 0`
pass=`mkpasswd -s 0`
echo $user $pass > /tmp/ftp.pass
<code>[root@localhost ~]</code><code># cat /tmp/ftp.pass </code>
<code>zwdlc EEoz14swg</code>
建立ftp服務的目錄用于共享
#mkdir /data/ftp
#echo -e "$pass\n$pass"|pure-pw useradd $user -u test -d /data/ftp/
pure-pw 建立一個使用者
-u test 映射一個使用者系統裡必須存在的使用者。使用建立的随機使用者映射到系統裡的使用者
pure-pw mkdb #建立密碼檔案把使用者和密碼儲存到一個二進制的檔案中。路徑在/etc/pure-ftpd/pure-ftpd.conf配置檔案裡PureDB指定的路徑中
<code>[root@localhost ~]</code><code># ls -l /etc/pure-ftpd/pureftpd.pdb</code>
<code>-rw------- 1 root root 2141 5月 22 15:24 </code><code>/etc/pure-ftpd/pureftpd</code><code>.pdb</code>
pure-pw list #列出使用者
<code>[root@localhost ~]</code><code># pure-pw list</code>
<code>zwdlc </code><code>/data/ftp/</code><code>./</code>
pure-pw userdel $user #删除賬号
/etc/init.d/pure-ftpd start #啟動服務監聽端口為21
ftp用戶端需要安裝lftp包#yum install -y lftp
輸入指令 #lftp 使用者名@ftp伺服器ip位址
使用者名為伺服器建立的随機使用者名ftp伺服器ip位址輸入密碼就登入ftp伺服器
put 檔案 上傳到ftp服務端
get 檔案 下載下傳到本地用戶端目錄
<code>[root@yong nfs]</code><code># lftp [email protected]</code>
<code>Password: </code>
<code>lftp [email protected]:/> get nginx-1.6.2.</code><code>tar</code><code>.gz </code>
<code>804164 bytes transferred</code>
2、vsftp配置ftp服務
服務端安裝yum install -y vsftpd db4-utils
建立虛拟賬号相關聯的系統賬号 useradd virftp -s /sbin/nologin
建立虛拟賬戶相關的檔案 vim /etc/vsftpd/vsftpd_login //内容如下
test1
123456
test2
abcdef
chmod 600 /etc/vsftpd/vsftpd_login
生成對應的庫檔案 db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
db_load指令可以将使用者文本資訊檔案轉換為db資料庫并使用hash加密。
選項-T允許應用程式能夠将文本檔案轉譯載入進資料庫。由于我們之後是将虛拟使用者的資訊以檔案方式存儲在檔案裡的為了讓Vsftpd這個應用程式能夠通過文本來載入使用者資料必須要使用這個選項。
指定了選項-T那麼一定要追加子選項-t ; 子選項-t追加在在-T選項後用來指定轉譯載入的資料庫類型。
hash就是使用hash碼加密。
-f 參數後面接包含使用者名和密碼的文本檔案檔案的内容是:奇數行使用者名、偶數行密碼
如果更改密碼更改檔案後還需要db_load一下并重新開機ftp服務使其生效
建立虛拟賬号相關的目錄以及配置檔案 mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf 建立和使用者對應的配置檔案
vim test1 内容如下
<code>local_root=</code><code>/home/virftp/test1</code>
<code>anonymous_enable=NO</code>
<code>write_enable=YES</code>
<code>local_umask=022</code>
<code>anon_upload_enable=NO</code>
<code>anon_mkdir_write_enable=NO</code>
<code>idle_session_timeout=600</code>
<code>data_connection_timeout=120</code>
<code>max_clients=10</code>
<code>max_per_ip=5</code>
<code>local_max_rate=50000</code>
mkdir /home/virftp/test1
修改權限 chown -R virftp:virftp /home/virftp
vim /etc/pam.d/vsftpd 使用者認證的配置檔案在最開頭添加兩行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系統則改為/lib64/security/pam_userdb.so
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系統則改為/lib64/security/pam_userdb.so
再修改vsftpd主配置檔案
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES改為anonymous_enable=NO 匿名使用者
#anon_upload_enable=YES 改為 anon_upload_enable=NO 匿名上傳禁止
#anon_mkdir_write_enable=YES 改為 anon_mkdir_write_enable=NO 匿名建立目錄禁止
再增加
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
啟動vsftpd服務/etc/init.d/vsftpd start
啟動vsftp服務報錯vsftp.conf主配置檔案guest_enable這一行錯誤的變量值。查找原因是因為這一行最後有空格所有配置檔案末尾不能有空格删除空格後正常啟動服務
為 vsftpd 啟動 vsftpd500 OOPS: bad bool value in config file for: guest_enable
用戶端實驗驗證
ftp用戶端需要安裝lftp包yum install -y lftp
登入指令lftp test1@ftp服務端的ip位址
用戶端通路ftp伺服器故意輸錯密碼竟然也能登入但是執行ls就提示登入失敗使用正确密碼登入使用ls正常
<code>[root@localhost ~]</code><code># lftp </code>
<code>[email protected]</code>
<code>密碼: </code>
<code>lftp [email protected]:~> </code><code>ls</code>
<code>ls</code><code>: 登入失敗: 530 Login incorrect. </code>
<code>lftp [email protected]:~> </code><code>exit</code>
<code>[root@localhost ~]</code><code># lftp [email protected]</code>
<code>-rw-r--r-- 1 0 0 0 May 24 15:21 1.txt</code>
put上傳一個檔案ls檢視檔案的所屬主、組為501在ftp伺服器檢視顯示為virftp賬号對應的uid即501
<code>lftp [email protected]:/> put 1.sql </code>
<code>1851 bytes transferred</code>
<code>lftp [email protected]:/> </code><code>ls</code> <code>-l</code>
<code>-rw-r--r-- 1 501 501 1851 May 24 15:23 1.sql</code>
<code>[root@yonglinux test1]</code><code># ls -l</code>
<code>-rw-r--r-- 1 virftp virftp 1851 5月 24 23:23 1.sql</code>
<code>-rw-r--r-- 1 root root 0 5月 24 23:21 1.txt</code>
<code>[root@yonglinux ~]</code><code># tail -1 /etc/passwd</code>
<code>virftp:x:501:501::</code><code>/home/virftp</code><code>:</code><code>/sbin/nologin</code>
本文轉自 模範生 51CTO部落格,原文連結:http://blog.51cto.com/mofansheng/1654731,如需轉載請自行聯系原作者