FTP是File Transfer Protocol(文件傳輸協議,簡稱“文傳協議”)的英文簡寫形式,用于在因特網上控制文件的雙向傳輸。它同時也是一個應用程序,用戶可以通過它把自己的PC機與世界各地所有運行FTP協議的服務器相連,以訪問服務器上的大量程序和信息。FTP的主要作用就是讓用戶連接一個遠程計算機(這些計算機上運行著FTP服務器程序),并查看遠程計算機中的文件,然后把文件從遠程計算機復制到本地計算機,或把本地計算機的文件傳送到遠程計算機。FTP方便傳輸數據,所以個人用戶很多,但在企業里用得越來越少,因為FTP是有一定安全隱患的。在本章,阿銘將會介紹兩種FTP軟件。
17.1使用vsftpd搭建FTP服務
Rocky Linux或者Red Hat Linux上有自帶的FTP軟件vsftpd,默認并沒有安裝,需要用yum安裝,安裝后不用配置,啟動后便可以使用,但本節介紹的是它的高級用法。
17.1.1安裝vsftpd
使用yum工具安裝vsftpd包,如下所示:
# yum install -y vsftpd17.1.2建立賬號
vsftpd默認可以支持使用系統賬號體系登錄,但那樣不太安全,所以阿銘建議你使用虛擬賬號體系登錄。
首先建立與虛擬賬號相關聯的系統賬號,如下所示:
# useradd virftp -s /sbin/nologin接著建立與虛擬賬戶相關的文件,如下所示:
# vim /etc/vsftpd/vsftpd_login #內容如下: test1 123456 test2 abcdef需要說明的是,該文件的奇數行為用戶名,偶數行為上一行的用戶密碼。
然后更改該文件的權限,提升安全級別,如下所示:
# chmod 600 /etc/vsftpd/vsftpd_loginvsfptd使用的密碼文件不是明文的,需要生成對應的庫文件,如下所示:
# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db最后建立與虛擬賬號相關的目錄以及配置文件,如下所示:
# mkdir /etc/vsftpd/vsftpd_user_conf # cd /etc/vsftpd/vsftpd_user_conf17.1.3創建和用戶對應的配置文件
用戶的配置文件是單獨存在的,每一個用戶都有一個自己的配置文件,文件名和用戶名一致,如下所示:
# vim test1 #內容如下: local_root=/home/virftp/test1 anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000其中:
local_root為test1賬號的家目錄
anonymous_enable用來限制是否允許匿名賬號登錄(若為NO,表示不允許匿名賬號登錄)
write_enable=YES表示可寫
local_umask指定umask值
anon_ upload_enable表示是否允許匿名賬號上傳文件
anon_mkdir_write_enable表示是否允許匿名賬號可寫
以上為關鍵配置參數,其他參數暫時不用關心。
創建test2賬號的步驟和test1一樣,如下所示:
# mkdir /home/virftp/test1 # touch /home/virftp/test1/aminglinux.txt # chown -R virftp:virftp /home/virftp #vim/etc/pam.d/vsftpd#在該文件最上面添加兩行 auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login17.1.4修改全局配置文件
修改用戶的配置文件后還不可用,還需要修改vsftpd的一些全局配置文件。 首先編輯vsftpd.conf文件,如下所示:
# vim /etc/vsftpd/vsftpd.conf #修改如下內容: 將#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 allow_writeable_chroot=YES然后啟動vsftpd服務,執行如下命令:
# systemctl start vsftpd整個過程配置步驟雖然有點繁瑣,但是并不復雜。下面我們來做一下測試:
# ps aux |grep vsftp #查看進程是否存在 root 71785 0.0 0.0 26984 408 ? Ss 22:31 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf # yum install lftp #安裝lftp客戶端軟件 # lftp test1@127.0.0.1 口令: lftp test1@127.0.0.1:~> ls -rw-r--r-- 1 1002 1002 0 Jul 01 14:27 aminglinux.txtTest1用戶密碼為123456,成功登錄vsftpd后,使用ls列出test1用戶家目錄下面的aming.txt,其中1002為virftp用戶的uid和gid。在這一步,很多同學會遇到問題,遇到問題后請檢查/var/log/secure日志,通常會記錄一些錯誤信息。
17.2安裝配置pure-ftpd
Pure-ftpd為另外一款比較小巧實用的FTP軟件,阿銘平時用得比較多。
17.2.1安裝pure-ftpd
默認的CentOS yum源并不包含pure-ftpd,需要安裝epel擴展源,具體過程如下:
# yum instll –y epel-release # yum install -y pure-ftpd17.2.2配置pure-ftpd
在啟動pure-ftpd之前,需要先修改配置文件/etc/pure-ftpd/pure-ftpd.conf。請查看該配置文件,里面的內容很多。找到PureDB那一行,將其修改為:PureDB/etc/pure-ftpd/pureftpd.pdb,然后啟動pure-ftpd,啟動之前需要關閉vsftpd,因為有端口沖突,過程如下所示:
# systemctl stop vsftpd # systemctl start pure-ftpd # ps aux |grep pure-ftp root724530.00.078916864?Ss23:050:00/usr/sbin/pure-ftpd/etc/pure-ftpd/pure-ftpd.conf啟動成功的話,ps aux可以看到相關的進程,如果沒有正常啟動,需通過/var/log/messages日志查看原因。
17.2.3建立賬號
為了安全,pure-ftpd使用的賬號并非Linux的系統賬號,而是虛擬賬號。首先創建一個賬號,如下所示:
# mkdir /data/ftp/ # useradd -u 1010 pure-ftp # chown -R pure-ftp:pure-ftp /data/ftp # pure-pw useradd ftp_user1 -u pure-ftp -d /data/ftp/ Password: Enter it again:其中,-u選項將虛擬用戶ftp_user1與系統用戶pure-ftp關聯在一起,也就是說,使用ftp_user1賬號登錄FTP后,會以pure-ftp的身份來讀取和下載文件,-d選項后面的目錄為ftp_user1賬戶的家目錄,這樣可以使ftp_user1只能訪問其家目錄/data/ftp/。 然后創建用戶信息數據庫文件,這一步最關鍵。執行如下命令:
# pure-pw mkdb其中,pure-pw還可以列出當前的FTP賬號以及刪除某個賬號。例如,我們再創建一個賬號,如下所示:
# pure-pw useradd ftp_user2 -u pure-ftp -d /tmp # pure-pw mkdb列出當前賬號,執行如下命令:
# pure-pw list ftp_user1 /data/ftp/./ ftp_user2 /tmp/./如果想刪除賬號,執行如下命令:
# pure-pw userdel ftp_user217.2.4測試pure-ftpd
測試過程如下:
# lftp ftp_user1@127.0.0.1 口令: lftp ftp_user1@127.0.0.1:~> ls drwxr-xr-x 2 1010 pure-ftp 6 Jul 1 23:05 . drwxr-xr-x 2 1010 pure-ftp 6 Jul 1 23:05 .. lftp ftp_user1@127.0.0.1:/> put /etc/passwd 1419 bytes transferred lftp ftp_user1@127.0.0.1:/> ls drwxr-xr-x 2 1010 pure-ftp 20 Jul 1 23:07 . drwxr-xr-x 2 1010 pure-ftp 20 Jul 1 23:07 .. -rw-r--r-- 1 1010 pure-ftp 1419 Jul 1 23:05 passwd登錄后,使用ls命令可以查看當前目錄都有什么文件,使用put命令可以把系統的文件上傳到FTP服務器上。你還可以在Windows機器里安裝一個FTP客戶端軟件(阿銘推薦開源的FileZilla),然后遠程連接測試。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11292瀏覽量
209328 -
服務器
+關注
關注
12文章
9123瀏覽量
85324 -
FTP
+關注
關注
0文章
110瀏覽量
40624 -
命令
+關注
關注
5文章
683瀏覽量
22011 -
vsftpd
+關注
關注
0文章
3瀏覽量
1724
原文標題:配置FTP服務器
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論