如何仅向 FTP 用户显示特定目录

如何仅向 FTP 用户显示特定目录

在我的 ubuntu 14.04 中我安装了(FTPD) ftp 服务器。我想为此创建一个用户,并将 nologin 设置为该用户。当使用 FTP 客户端登录时,我希望该特定用户能够看到整个系统目录。

我如何将这样的一个用户限制在一个目录中(例如/usr/local/example)?

答案1

为了vsftpd“非常安全的文件传输协议守护进程”),配置极其简单:

sudo apt-get install vsftpd

然后:

sudo nano /etc/vsftpd.conf

确保正确设置了以下参数:

# Depending on the version you're running, you might want to set the following 
# parameter to YES 
# (if affected by https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/1313450)
listen=YES
# to allow local users to log on:
local_enable=YES
#if you want write access too:
write_enable=YES
# Set anonymous user directory to /srv/ftp (no default)
anon_root=/srv/ftp
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES

# following for debugging purposes (to ensure you're on the right server)
ftpd_banner=Welcome to Aravind's FTP service.

# Now restrict users to their home directories:
chroot_local_user=YES
allow_writeable_chroot=YES

现在,如果您想将特定用户设置为特定目录,只需创建一个具有特定目录的用户:

sudo adduser ftpuser --home /usr/local/example

去测试:

转到正在运行的机器上的终端vsftpd并输入:ftp 127.0.0.1如果您看到自己的横幅,则表示vsftpd成功了!

然后在同一台机器上测试其公共地址:ftp 1.2.3.4最后从远程机器测试公共地址。如果公共地址出现问题,请检查您的防火墙设置。

补充笔记:

如果不想让用户登录,请将--shell /bin/false参数添加到adduser命令中。

如果您不想让它们保留在那里,您可能还想删除所有创建的目录/文件(Desktop,,Pictures...) ...adduser

完毕!

答案2

您需要使用该特定 FTP 服务器软件的原因是什么?您正在寻找的软件大多称为“chroot”(频道天使目录/用户)或类似的东西。根据此错误报告软件包中包含的 netkit ftp 服务器linux-ftpd不提供该功能。即使启动板页面

这是 netkit ftp 服务器。建议您使用它的替代方案之一,例如 wu-ftpd 或 proftpd。

我从经验中知道 pure-ftpd (设置VIRTUALCHROOT) 和 ProFTPd (由虚拟主机) 提供您正在寻找的功能。 两者都可从标准 Ubuntu 存储库获得。 其他 ftp 服务器软件可能提供类似的功能。

相关内容