首先我
ps -aux | grep ftp
并且没有找到任何类型的正在运行的 ftp。我有兴趣在我的笔记本电脑上运行的 Ubuntu 15.04 上启用 FTP 服务。我知道ftp
、sftp
和vsftpd
软件包,但我不知道应该在我的笔记本电脑上安装哪个。最终,我希望从另一台笔记本电脑通过 ftp 进入我的笔记本电脑以获取和放置文件。我应该在我的笔记本电脑上安装哪个 ftp 软件包?
答案1
从克里兹纳。
安全 FTP (SFTP) 是您的最佳选择。以下是您需要执行的操作(仅从链接的网站总结):
安装 openssh-server 包:
sudo apt-get install openssh-server
为 FTP 用户创建新组 ftpaccess:
sudo groupadd ftpaccess
现在在此 /etc/ssh/sshd_config 文件中进行更改。
» 找到并注释掉下面这一行
Subsystem sftp /usr/lib/openssh/sftp-server
并在文件末尾添加以下行。
Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重新启动 sshd 服务:
sudo service ssh restart
创建 sftp 访问用户时必须遵循以下步骤:
a. 创建具有 ftpaccess 组和 /usr/bin/nologin shell 的用户 john:
sudo useradd -m john -g ftpaccess -s /usr/sbin/nologin sudo passwd john
b. 更改主目录的所有权:
sudo chown root /home/john
c. 在主目录中创建一个用于写入的文件夹并更改该文件夹的所有权:
sudo mkdir /home/john/www sudo chown john:ftpaccess /home/john/www
现在尝试使用 SFTP(端口:22)连接服务器并确保用户可以将文件上传到 www 目录并且不能访问主目录之外的其他文件夹。
如果您想同时使用 FTP 和 SFTP,请在创建用户时执行上述步骤(步骤 5)。对于现有用户,将其移动到 ftpaccess 组并创建文件夹结构和所有权更改,如下所示:
sudo usermod john -g ftpaccess -s /usr/sbin/nologin
sudo chown root /home/john
sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www
答案2
您可能想要添加多个用户,并且这个过程(对我来说)可能很繁琐,因此我创建了一个脚本来帮我完成此操作。nano ~/add_ftp_user.sh
并粘贴以下内容:
#!/bin/sh
#Loosely based on https://45squared.com/setting-sftp-ubuntu-16-04
if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi
CONFIG_FILE="/etc/ssh/sshd_config"
echo Enter the username to create:
read USERNAME
echo Creating user ${USERNAME}...
adduser ${USERNAME}
usermod -aG www-data ${USERNAME}
echo Setting folder permissions...
mkdir -p /var/www/html/${USERNAME}
chown -R ${USERNAME}:www-data /var/www/html/${USERNAME}/
echo Editing config file ${CONFIG_FILE}...
echo ' ' | tee -a ${CONFIG_FILE}
echo '# Created by add_ftp_user.sh script on +%Y-%m-%d' | tee -a ${CONFIG_FILE}
echo Match User ${USERNAME} | tee -a ${CONFIG_FILE}
echo 'ChrootDirectory /var/www/html/'${USERNAME} | tee -a ${CONFIG_FILE}
echo 'X11Forwarding no' | tee -a ${CONFIG_FILE}
echo 'AllowTcpForwarding no' | tee -a ${CONFIG_FILE}
echo 'AllowAgentForwarding no' | tee -a ${CONFIG_FILE}
echo 'ForceCommand internal-sftp' | tee -a ${CONFIG_FILE}
echo 'PasswordAuthentication yes' | tee -a ${CONFIG_FILE}
echo Restarting sshd service...
service sshd restart
echo Done
yourserver.com
这将创建一个新用户,他们可以通过 SFTP(映射到您的服务器上)登录/var/www/html/{username}
,并且可以看到文件https://www.yourserver.com/{username}
。
如果您不想让其他人看到这些文件,请修改该行,使其内容为:chown -R ${USERNAME}:${USERNAME} /var/www/html/${USERNAME}/