要在 CentOS 7 上使用 vsftpd 限制用户目录,请按照以下步骤操作:
- 首先,确保已经安装了 vsftpd 和相关依赖包。如果没有,请使用以下命令安装:
sudo yum install vsftpd sudo yum install vsftpd-mysql
- 创建一个新的 MySQL 数据库和用户,用于存储 FTP 用户信息。使用以下命令创建数据库和用户:
sudo mysql -u root -p
在 MySQL 提示符下,执行以下命令:
CREATE DATABASE ftpusers; CREATE USER 'ftpuser'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON ftpusers.* TO 'ftpuser'@'localhost'; FLUSH PRIVILEGES; EXIT;
将 your_password
替换为您想要设置的密码。
- 创建一个新的系统用户,用于限制 FTP 用户目录。使用以下命令创建新用户:
sudo useradd -m ftpuser -d /home/ftpuser -s /sbin/nologin
将 /home/ftpuser
替换为您想要设置的目录路径。
- 将新创建的系统用户添加到 MySQL 数据库中:
sudo mysql -u root -p ftpusers -e "INSERT INTO users (username, password, homedir, shell) VALUES ('ftpuser', 'your_password', '/home/ftpuser', '/sbin/nologin');"
将 your_password
替换为您在第 2 步中设置的密码。
- 配置 vsftpd 以使用 MySQL 数据库。编辑
/etc/vsftpd/vsftpd.conf
文件,取消以下行的注释,并填写正确的数据库连接信息:
mysql_enable=YES local_enable=YES write_enable=YES chroot_local_user=YES allow_writeable_chroot=YES
- 在
/etc/vsftpd/user_list
文件中添加允许和拒绝的用户。如果文件不存在,请创建一个。使用以下命令添加用户:
sudo echo "ftpuser" >> /etc/vsftpd/user_list sudo chmod 644 /etc/vsftpd/user_list
如果您想要拒绝某个用户访问 FTP 服务器,只需在 user_list
文件中添加该用户的用户名,无需添加密码。
- 重启 vsftpd 服务以应用更改:
sudo systemctl restart vsftpd
现在,您已经成功配置了 CentOS 7 上的 vsftpd,限制了用户目录。只有 ftpuser
可以访问其主目录(在本例中为 /home/ftpuser
),并且无法访问其他用户的目录或系统目录。