Debian 6:设置 FTP 仅用于网站编辑

Debian 6:设置 FTP 仅用于网站编辑

我有一个使用 Debian 6.0 的 VPS。目前,SSH 设置为不接受密码登录,只接受基于密钥的登录。

需要在某个特定网站(虚拟主机)上工作的人希望使用 FTP。他不需要/不想要 SSH。我该如何为他设置 FTP 访问权限,使他能够对相关目录中的所有文件以及仅相关目录具有写入权限?目录是/srv/www/domainname.com/public_html

目前,该目录中的所有目录和文件都属于www-data:www-data,并且为644/755。

我已经安装了 vsftpd 并阅读了一些指南,但它们似乎都涉及允许多个用户拥有自己的用户名目录,而这并不是我想要的。我似乎无法弄清楚如何简单地定义一个具有密码的 FTP 用户,该用户有权访问我选择的一个目录。

这是我第一次设置 FTP 服务器的经历。

谢谢。

编辑:还发现- 也许我应该使用 ProFTPd,或者 vsftpd 也可以满足我的要求吗?

答案1

如果您想采用仅 SFTP 解决方案,我最近创建了一篇博客文章,其中详细描述了这一点,包括一些常见错误: http://blog.frands.net/sftp-only-chroot-users-with-openssh-in-debian-166/

如果您想使用 FTP 解决方案,vsftpd 确实是一个不错的选择。但是,当用户上传文件时,将按照定义的 umask 设置其用户和组。您可以将用户的主要组设置为 www-data,然后创建适合 vsftpd 的 umask。

这是按照我的建议快速执行的方法:

创建具有 www-data 组的用户,没有真正的 shell 和正确的主目录,然后设置密码

useradd -d /path/to/his/domain.com -g www-data -s /bin/false theusername
passwd theusername

确保 vsftpd 接受他的 shell。cat /etc/shells 并查找 /bin/false(默认情况下它不应该在那里) - 如果它不存在,请添加它:

echo "/bin/false" >> /etc/shells

接下来,编辑 vsftpd 配置文件。修改以下参数:(如果它们被注释掉,请删除 #)

禁用对服务器的匿名访问

anonymous_enable=NO

允许本地用户使用 FTP

local_enable=YES

允许文件上传

write_enable=YES

设置 umask,以便用户上传的文件也可由组 (www-data) 写入

local_umask=002

将用户 chroot,这样他就无法离开他的主目录

chroot_local_user=YES

现在,重新启动 vsftpd

/etc/init.d/vsftpd restart

一切就绪。

但!

  • FTP 通常不安全。
  • 如果可以使用 SFTP,请使用它。
  • 允许网络服务器写入文件是一个安全漏洞,除非该目录用于上传或网站经常更改的文件。

相关内容