如何使用 vsftpd 设置有权访问 Web 根目录的 FTP 用户?

如何使用 vsftpd 设置有权访问 Web 根目录的 FTP 用户?

如何使用 vsftpd 设置有权访问 Web 根目录的 FTP 用户?

我目前正在建立一个网站,并试图在此过程中了解更多有关 Web 服务器的信息。我以前使用过共享托管提供商,但这次我想使用 VPS 从头开始​​设置服务器。我已经安装了 LAMP 堆栈并安装了 Wordpress。到目前为止,除了自动更新 Wordpress(因为它要求 FTP 访问)之外,一切都正常。

因此我vsftpd按照这个安装教程. 这也同样有效。

问题是,在教程中,FTP 用户有其专用的文件目录(/home/ftp_user/ftp/files),但我需要授予该用户访问/var/www/html/siteWordpress 执行更新的 Web 根目录()的权限。

local_root我试图/var/www/html

我尝试设置这样的符号链接

ln -s /var/www/html /home/ftp_user/ftp/files

但两种方法都行不通。当我尝试连接时,它说

vsftpd: refusing to run with writable root inside chroot()

实现此目的的正确方法是什么?或者/var/www/html根本不使用位置会更好吗?

答案1

FTP 不遵循符号链接是有原因的。相反,您应该使用绑定挂载。

# Create mount directory below ftp/files
mkdir /home/ftp_user/ftp/files/www

# Mount
mount -o bind /var/www/html /home/ftp_user/ftp/files/www

尝试一下是否有效。

为了使其永久生效,请将其添加到/etc/fstab

/var/www/html /home/ftp_user/ftp/files/www none defaults,bind 0 0

请注意,与符号链接不同,如果删除文件www夹,您也将删除其中的所有文件/var/www/html

答案2

描述的方法羅沃对我来说很管用。但我认为我一开始遇到了 2 个问题(chroot 和符号链接)。

通过添加allow_writeable_chroot=YESvsftpd.conf文件,它现在也可以local_root指向/var/www/html

我不确定添加该allow_writeable_chroot=YES设置是否安全,但多个网站/博客文章中都提到了这一点,例如

为了完成这项local_root工作,我将这一行添加到/ect/vsftpd.conf

user_config_dir=/etc/vsftpd/vsftpd-user-conf

并在文件夹中创建一个以 FTP 用户名称命名的文件,/etc/vsftpd/vsftpd-user-conf/内容如下:

local_root=/var/www/html

相关内容