centos7上簡單安裝ftp服務

安裝:ftp服務:yum -y instal vsftpd
安裝:ftp客戶端:yum -y instal ftp
啓動ftp服務:systemctl start vsvtpd
使用普通用戶(不是root)登錄測試:
[root@localhost vsftpd]# ftp localhost
Trying ::1...
Connected to localhost (::1).
220 (vsFTPd 3.0.3)
Name (localhost:root): tomcat
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||60430|)
150 Here comes the directory listing.
-rw-r--r--    1 1001     50              0 Jun 03 15:09 1.txt
drwxr-xr-x    2 1001     50              6 Jun 03 16:04 ftp_in
drwxr-xr-x    2 1001     50              6 Jun 03 16:04 ftp_in_bak
226 Directory send OK.

測試使用ls和cd命令,可以到tomcat用戶下的任何目錄,這不是我們期望的,只能限定用戶在指定的目錄操作。
[root@localhost data]# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES  #限制ftp登錄用戶只能在local_root指定的目錄內操作
local_root=/data/ftp  #指定ftp根目錄
allow_writeable_chroot=YES #指定根目錄寫權限,否則報500 OOPS: vsftpd: refusing to run with writable root inside chroot()

#指定chroot_list文件裏的用戶可以操作local_root以外的目錄,需要指定chroot_list_file配置,這裏不啓用
#chroot_list_enable=YES
# (default follows) 這裏要配合chroot_list_enable使用,指定不限制目錄的用戶,這裏不啓用
#chroot_list_file=/etc/vsftpd/chroot_list

修改/data/ftp目錄操作權限(這裏視情況給權限,安裝測試時先用777,避免權限問題):
chmod -R 777 /data/ftp

重啓ftp服務:
systemctl restart vsftpd

重新登錄ftp後就只能在指定的目錄:  /data/ftp 下操作了

處理因selinux攔截ls命令報錯問題:
先啓用selinux
[root@localhost ~]# setenforce 1

ftp> ls #這裏已經報錯
229 Entering Extended Passive Mode (|||34974|)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory). 

關閉 selinux
[root@localhost ~]# setenforce 0

ftp> ls  #關閉selinux後正常
229 Entering Extended Passive Mode (|||21252|)
150 Here comes the directory listing.
-rw-r--r--    1 1001     50              0 Jun 03 15:09 1.txt
drwxr-xr-x    2 1001     50              6 Jun 03 16:04 boss_in
drwxr-xr-x    2 1001     50              6 Jun 03 16:04 boss_in_bak
226 Directory send OK.
查看selinux有關ftp的規則:
[root@localhost ~]# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off
設置啓用ftpd_full_access
setsebool -P ftpd_full_access=on

再登錄ftp測試,問題解決。這裏根據實際情況開啓其它規則,如:tftp_home_dir,ftpd_connect_db等。

因配置文件有寫權限會導致不能登錄:
[root@localhost vsftpd]# ll /etc/vsftpd
total 20
-rw-------. 1 root root    0 Jun  3 23:05 chroot_list
-rw-rw-rw-. 1 root root  125 May 14  2019 ftpusers
-rw-------. 1 root root  361 May 14  2019 user_list
-rw-rw-rw-. 1 root root 5154 Jun  4 01:24 vsftpd.conf
-rw-rw-rw-. 1 root root  348 May 14  2019 vsftpd_conf_migrate.sh
要保證chroot_list,ftpusers,user_list幾個文件的其它權限不能有可寫的權限2,關於這幾個文件,文件頭部有詳細的使用說明。

增加只能ftp登錄的用戶,必須要保證/etc/shells裏有/sbin/nologin
如:新增只能ftp登錄的用戶:useradd -d /data/ftp -s /sbin/nologin ttm
設置登錄密碼:passwd ttm

vi /etc/shells #添加/sbin/nologin,保存退出即可生效
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin

開啓防火牆的情況下,需要開放FTP端口,增加ftp服務,否則遠程機無法連接
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章