在CentOS上设置FTP服务器并限制访问权限,可以使用vsftpd(Very Secure FTP Daemon)作为FTP服务器软件。以下是设置和限制访问权限的步骤:
首先,确保你已经安装了vsftpd。如果没有安装,可以使用以下命令进行安装:
sudo yum install vsftpd
安装完成后,启动vsftpd服务并设置开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
编辑vsftpd的配置文件 /etc/vsftpd/vsftpd.conf
:
sudo vi /etc/vsftpd/vsftpd.conf
在配置文件中,你可以设置各种访问控制选项。以下是一些常用的配置项:
listen=YES
:启用独立模式。listen_ipv6=NO
:禁用IPv6支持。anonymous_enable=NO
:禁止匿名用户登录。local_enable=YES
:允许本地用户登录。write_enable=YES
:允许FTP写入权限。chroot_local_user=YES
:将本地用户限制在其主目录中。allow_writeable_chroot=YES
:允许chroot目录可写。userlist_enable=YES
:启用用户列表。userlist_file=/etc/vsftpd/user_list
:指定用户列表文件。userlist_deny=NO
:默认允许用户列表中的用户登录。创建并编辑用户列表文件 /etc/vsftpd/user_list
,添加允许或拒绝访问的用户:
sudo vi /etc/vsftpd/user_list
在文件中添加用户名,每行一个用户名。例如:
user1
user2
如果你需要更复杂的访问控制,可以使用PAM(Pluggable Authentication Modules)。编辑 /etc/pam.d/vsftpd
文件:
sudo vi /etc/pam.d/vsftpd
确保文件中有以下行:
auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/user_list onerr=succeed
完成配置后,重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
确保防火墙允许FTP流量。你可以使用firewalld来配置:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
如果SELinux处于 enforcing 模式,可能需要调整SELinux策略以允许vsftpd正常工作。你可以临时设置SELinux为 permissive 模式进行测试:
sudo setenforce 0
如果一切正常,可以永久修改SELinux配置文件 /etc/selinux/config
:
SELINUX=permissive
然后重启系统。
通过以上步骤,你应该能够在CentOS上成功设置并限制FTP服务器的访问权限。