问题描述
我想在我的Ubuntu Server安装上设置一个基本的FTP服务器。我一直在玩VSFTPD,但是在让服务器允许我创建目录和复制文件时遇到了问题。我已将系统设置为允许本地用户,但似乎并不意味着我可以访问创建目录。这可能是我需要在Ubuntu服务器设置中更好地建立以便充分配置此FTP服务器的实例。最终目标是能够将文件从我的本地开发文件夹移动到我的www文件夹中进行部署。目录也需要能够移动。任何帮助将不胜感激。
最佳解决思路
我将推荐PureFTPD,因为在我看来它是最简单和最容易使用的。您需要先安装它:sudo apt-get install pure-ftpd
一旦安装它就会自动启动。默认情况下,它使用PAM身份验证 – 这意味着它使用系统上已存在的帐户进行身份验证。您需要做的就是创建一个用户帐户,主目录是您的www路径,并设置该帐户的密码。然后,您应该能够与该用户/通行证组合连接以上载/下载文件。
像这样的东西:
sudo adduser ftpman --home /var/www/ --ingroup www-data
这将创建ftpman
用户并将他放入Apache使用的www-data组中,并将引导您完成其余的安装脚本。一旦定义,确保chmod
为WWW文件夹,如果您在创建的用户/组合组件中已经存在错误。
最后,如果您想锁定该帐户的SSH访问权限:sudo chsh -s /bin/false ftpman
,它会将该用户shell更改为false。 (用ftp用户替换ftpman)
次佳解决思路
在我看来,SFTP是一种更好的方式。嘿,它的名字中有”secure”这个词,它一定要好:)
SFTP使用ssh进行文件传输(与FTPS不同,基本上是FTP + TLS)。这意味着如果你可以ssh到目标机器,你几乎总是可以SFTP到它,因为它使用相同的auth机制,因此根本不需要安装和配置不同的服务器守护进程(即没有pureftpd或vsftpd)。只要为/var/www
正确设置了权限 – 这可能是sudo chmod g+w /var/www; sudo usermod -g $USER -G www-data $USER
的问题 – 您应该能够立即使用SFTP。
现在大多数客户端软件都会非常愉快地使用SFTP,你也可以使用开发服务器上的shell中的scp
复制内容(scp -R
将复制整个文件夹,非常方便)。您甚至可以采用另一个步骤并使用公钥自动登录,这意味着不再需要输入密码:)
第三种解决思路
我强烈建议使用vsftpd。它是Linux中最安全的FTP守护进程之一。许多其他人在过去都有弱点,似乎FTP很难以安全的方式实施。
vsftpd在安装后立即启动。 Ubuntu允许本地用户登录。因此,启动FTP客户端并以普通用户身份使用系统密码登录(我的示例使用lftp):
> lftp 127.0.0.1 ftp
lftp 127.0.0.1:~> user qbi
Password: #typing my password which I also use to log in via GDM
lftp qbi@127.0.0.1:~> ls
drwxr-xr-x 10 1000 1000 4096 2008-07-28 16:32 Desktop
... many more
现在我正在使用某种文件管理器(Nautilus,Shell等)创建一个新目录foo
并返回我的FTP客户端:
ftp qbi@127.0.0.1:~> ls -l
...
drwxr-xr-x 2 1000 1000 4096 2010-08-09 13:32 foo
目录就在那里,我可以将cd
放入其中并使用它。如果您有特殊用户,这也是相同的。在那里,您还可以创建目录,并且可以立即访问它们。在这里寻找访问权限很重要。
第四种思路
我谦卑地推荐一个我自己写的FTP服务器:JetFTP。它的安装和使用非常简单。
安装:
-
将我的PPA添加到您的软件源并更新:
sudo apt-add-repository ppa:george-edison55/george-edison
-
运行以下命令:
sudo apt-get install jetftp
-
而已!
使用JetFTP很简单 – 只需使用运行JetFTP的计算机上的登录名和密码连接到端口8021
。
第五种思路
不要使用ftp,它本身就是一种不安全的协议,因为它以明文形式将用户名和密码发送给服务器。实现sftp同样容易,并且您在连接的安全性方面获得了巨大的优势。