linux 下vsftpd安裝使用


開通端口 21,40000-40004
一、安裝vsftp
#離線安裝
1.官網下載rpm包
https://almalinux.pkgs.org/8/almalinux-appstream-x86_64/vsftpd-3.0.3-34.el8.x86_64.rpm.html
2.發送到目標服務器
3.執行語句:rpm -ivh vsftpd-3.0.3-34.el8.x86_64.rpm

#在線安裝
yum install -y vsftpd

上面方式選擇其中一種:
#設置開機啟動
systemctl enable vsftpd.service
#啟動
systemctl start vsftpd.service
#停止
systemctl stop vsftpd.service
#查看狀態
systemctl status vsftpd.service

二、配置vsftp
#打開配置文件
vim /etc/vsftpd/vsftpd.conf
#修改配置 12 行
anonymous_enable=NO
#修改配置 33 行
anon_mkdir_write_enable=YES
#修改配置48行
chown_uploads=YES
#修改配置72行
async_abor_enable=YES
#修改配置82行
ascii_upload_enable=YES
#修改配置83行
ascii_download_enable=YES
#修改配置86行
ftpd_banner=Welcome to blah FTP service.
#修改配置100行
chroot_local_user=YES
#添加下列內容到vsftpd.conf末尾
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=120
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES

三、建立用戶文件
#創建編輯用戶文件
vim /etc/vsftpd/virtusers
#第一行為用戶名,第二行為密碼,都是自定義的。不能使用root作為用戶名
ftp
ftp

四、生成用戶數據文件
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
#設定PAM驗證文件,並指定對虛擬用戶數據庫文件進行讀取
chmod 600 /etc/vsftpd/virtusers.db

五、修改 /etc/pam.d/vsftpd 文件
# 修改前先備份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
#先將配置文件中原有的 auth 及 account 的所有配置行均注釋掉
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers


六、新建系統用戶vsftpd,用戶目錄為/home/vsftpd
#用戶登錄終端設為/bin/false(即:使之不能登錄系統)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

#如果這個ftp用戶vsftpd是用來管理網站目錄的,執行以下(意思是加入到apache組),否則不執行這一條!(補充於20181111)
usermod -a -G apache vsftpd

七、建立虛擬用戶個人配置文件
mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
#這里建立虛擬用戶username配置文件
touch ftp
#編輯username用戶配置文件
vim ftp
#內容如下,其他用戶類似
local_root=/ychyc/ftp #ftp上傳文件存放位置
anon_root=/ychyc/ftp
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#建立username用戶的根目錄,如果根目錄是自己設置的已有的文件夾,就不用創建了
mkdir -p /ychyc/ftp
#增加用戶username的根目錄所有者為之前創建的vsftpd
chown -R vsftpd:vsftpd /ychyc/ftp
#提升該文件夾的權限
chmod -R 777 /ychyc/ftp

八、防火牆設置
現在centos7 都是默認安裝的firewall ,IPTable要另外安裝,所以下面的IPtables設置方式請忽略。
IPtables 的設置方式:
vi /etc/sysconfig/iptables
#編輯iptables文件,添加如下內容,開啟21端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40010 -j ACCEPT
firewall 的設置方式:
firewall-cmd –zone=public –add-service=ftp –permanent
firewall-cmd –zone=public –add-port=21/tcp –permanent
firewall-cmd –zone=public –add-port=40000-40010/tcp –permanent
禁用firewall也可以,更徹底:
systemctl disable firewalld
@其他關於防火牆的命令
啟動: systemctl start firewalld
關閉: systemctl stop firewalld
查看狀態: systemctl status firewalld
開機禁用 : systemctl disable firewalld
開機啟用 : systemctl enable firewalld

九、關閉selinux,不關閉ftp工具應該可以連接,但是傳輸文件的時候,會發現文件上傳和下載都會出現500、503 、200等報錯
方式一:通過配置文件修改禁用
#打開SELINUX配置文件
#修改配置參數
#注釋
SELINUX=enforcing
#增加
SELINUX=disabled
方式二:通過命令行禁用
setsebool -P ftpd_disable_trans 1
方式三:SELINUX不對vsftp不做任何限制
setsebool -P ftpd_connect_all_unreserved 1

十、重啟vsftpd服務器
systemctl restart vsftpd.service


 

原理補充:
1、如果要增加用戶數,那么在第三步中再增加一個用戶,並且接着執行第四步,這個時候新增加的用戶是能登錄ftp的,
只不過這個時候還沒有經過第七步虛擬用戶的配置,根目錄為第六步創建的/home/vsftpd文件夾。
2、第七步中虛擬用戶個人配置文件中的local_root的文件夾可以換成別的,這個是這個用戶的根目錄。
但是要換的文件夾必須執行以下“chmod -R 775 新的文件夾路徑”。


************配置文件**********************************
[root@ecs_208 html]# grep -v '^#' /etc/vsftpd/vsftpd.conf |cat
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=120
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES
-----------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/vsftpd/virtusers
ftp
ftp
---------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
-----------------------------------------------------------------------------
[root@ecs_208 html]# cat /etc/vsftpd/vconf/ftp
local_root=/ychyc/ftp
anon_root=/ychyc/ftp
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

*************************************sftp部署******************************
創建sftp登錄用戶
[root@lnmp ~]# groupadd sftp
[root@lnmp ~]# useradd -g sftp -s /sbin/nologin -M sftp
[root@lnmp ~]# echo "sftplnmp" | passwd --stdin sftp //創建用戶密碼或者下面這種方法
[root@lnmp ~]# passwd sftp
Changing password for user sftp.
New password: sftplnmp
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
創建sftp上傳路徑及授權
[root@lnmp ~]# mkdir /sftp
[root@lnmp ~]# chown root.sftp /sftp
[root@lnmp ~]# chmod 777 /sftp
修改ssh配置文件更改sftp上傳位置
[root@lnmp sftp]# grep -v '^#' /etc/ssh/sshd_config | cat
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp internal-sftp
Match User sftp
ChrootDirectory /sftp
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

重啟ssh服務
[root@lnmp sftp]# systemctl restart sshd

端口:22
賬號:sftp
密碼:sftplnmp

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM