您现在的位置:首页行业资讯

为Web开发配置SFTP服务器--中享思途

SFTP具有强大的安全模型,并且比传统的FTP和FTPS更容易设置。 在本文中,将配置SFTP以允许用户上传文件到Web服务器文档根目录。
在本文中,我们将假设以下两种情况:
(1)SFTP用户应该只能访问Web文档根目录。
(2)SFTP用户不能通过SSH登录终端。
如果您只打算使用一个SFTP用户访问文档根目录,请继续执行下面的步骤1。
如果您打算让多个SFTP用户上载文件到文档根目录,例如在多开发人员环境中,请跳至步骤2。
1、为一个用户设置SFTP
为一个用户设置SFTP非常简单,只需要少量配置。
1.1 添加用户
不建议使用root帐户或具有sudo权限的任何帐户将文件上载到Web服务器文档根目录。出于这个原因,我们将创建一个名为webdev的新用户。
sudo adduser webdev
生成密码并按Enter键接受所有默认值。
1.2 测试SFTP
您现在可以在FTP客户端中使用此用户登录。 在这个例子中,我们使用的是FileZilla。
进入文件-站点管理器,选择SFTP协议并输入用户名和密码,然后单击“连接”。

青岛web开发培训--中享思途

登录后,您将看到我们被带到用户webdev的主文件夹。
这里有两个问题。 首先,我们希望它转到文档根目录,而不是用户的主文件夹。 另一个问题是用户可以在他们的主文件夹之外浏览并查看整个服务器!

青岛web开发培训--中享思途

1.3将用户限制为文档根目录
我们现在将用户webdev限制在web文档根目录,并禁用SSH访问,因为我们只希望他们能够通过SFTP登录。
首先打开sshd_config
sudo nano/etc/ssh/sshd_config
滚动到文件的底部并通过在其前面添加#符号注释掉Subsystem sftp这一行,并粘贴Subsystem sftp internal-sftp到这一行的下面。
#Subsystem sftp/usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
在此之下,我们将添加一个新的Match User指令。 确保ChrootDirectory是web文档根目录的上级目录。 例如,如果您的文档根目录是/var/www/html/,那么ChrootDirectory是/var/www/。
/etc/ssh/sshd_config
Match User webdev
ChrootDirectory  /var/www/
ForceCommand internal-sftp -u 0022
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
注意:ForceCommand internal-sftp将阻止此用户通过SSH登录,这正是我们想要的。 切勿将您的root帐户或用于管理Linux服务器的任何帐户添加到此帐户,因为您可能会永久锁定SSH!
-u 0022会将通过SFTP创建的文件夹的默认权限设置为755(默认值为775,仅在使用组时才需要)。
保存更改并关闭nano(按CTRL + X,然后按y和ENTER)
重启sshd服务。

青岛web开发培训--中享思途

要解决此问题,我们需要在web文档根目录上设置一些其他权限。
1.4目录权限
我们首先检查文档根目录的当前权限。 你的文档根目录是/var/www/html/!
ls  -ld  /var/www/html
下面我们可以看到root拥有文档根目录,这就是用户webdev无法写入的原因。
drwxr-xr-x 2 root root 4096 9月   6 11:38 /var/www/html
让我们将所有者更改为webdev。-R和*指示Linux以递归方式运行文档根目录中的每个文件和文件夹。web文档根目录是/var/www/html/!
sudo chown -R  webdev:webdev   /var/www/html*
现在再次检查权限
ls  -ld  /var/www/html
下面我们可以看到webdev现在拥有文档根目录。
drwxr-xr-x 2 webdev webdev 4096 9月   6 11:38 /var/www/html
再次登录并尝试创建一个文件夹以确保权限正常工作。

青岛web开发培训--中享思途

如果想添加其他SFTP用户,请继续阅读第2步!
2.多用户的SFTP
为多个用户设置SFTP涉及更多配置。
2.1测试SFTP
在进行任何配置之前,应首先确认SFTP确实正在运行。
在这个例子中,我们使用的是FileZilla。 进入服务器主机,选择SFTP协议并输入用户名和密码,然后单击“连接”。
2.2创建组
为了获得最佳安全性和便利性,我们使用组将所有有权访问web文档根目录的用户组合在一起。例如,您可能有多个Web开发人员在处理web文档根目录。组还允许我们以后轻松添加新的SFTP用户,而无需为每个单独的用户配置权限。
对于需要SFTP访问Web文档根目录的用户,我们会将它们添加到名为docrootonly的特殊组中。使用/etc/ssh/sshd_config将该组chroot到Web文档根目录,以便用户无法在浏览web文档根目录上级目录。Linux中的Chroot允许我们将用户“监禁”到特定目录。
让我们从创建一个新组开始:
sudo groupadd docrootonly
2.3添加新的SFTP用户
不建议您使用root帐户或具有sudo权限的任何帐户将文件上载到Web服务器文档根目录。因此,您应该使用受限帐户单独创建SFTP用户。
您可以在此处添加任意数量的新用户。 在此示例中,我们将创建一个名为webdev的新用户。
sudo adduser webdev
生成密码并按Enter键接受所有默认值。
将此用户webdev添加到docrootonly组。
sudo usermod -a -G docrootonly webdev
2.4组限制
我们现在将该组中的所有用户限制为web文档根目录,并禁用他们的SSH访问 - 我们只希望他们能够通过SFTP登录。
通过编辑sshd_config将此新组限制为web文档根目录
sudo nano  /etc/ssh/sshd_config
滚动到文件的底部并通过在其前面添加#符号注释掉Subsystem sftp这行,并粘贴Subsystem sftp internal-sftp到这行下面。
#Subsystem sftp  /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
在此之下,我们将添加一个新的匹配组。
确保ChrootDirectory是web文档根目录的上级目录。
例如,如果您的web文档根目录是/var/www/html/,那么ChrootDirectory是/ var/www/。
/etc/ssh/sshd_config
Match Group docrootonly
ChrootDirectory /var/www/
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
注意:ForceCommand internal-sftp将阻止此组中的用户通过SSH登录,这正是我们想要的。 切勿将您的root帐户或用于管理Linux服务器的任何帐户添加到docrootonly组,因为您可能永久锁定SSH!
保存更改并关闭nano(按CTRL + X,然后按y和ENTER)
重启sshd服务。
sudo service sshd restart
2.5设置目录权限
chown允许我们在Linux中更改文件和文件夹的所有者。
用户root必须拥有web文档根目录的上级目录,否则SFTP将拒绝连接。这应该与您上面的ChrootDirectory相匹配,所以它是/var/www/。
sudo  chown root:root  /var/www/
用户root和组docrootonly必须拥有web文档根目录才能写入(以及您可能已经拥有的任何文件和文件夹)。
你的web文档根目录是/var/www/html/。
-R和*指示Linux以递归方式运行文档根目录中的每个文件和文件夹。
sudo chown -R  root:docrootonly  /var/www/html*
要允许组对web文档根目录的写入权限,必须将文档根目录及其所有子文件夹设置为775。同样,您的文档根目录是/ var/www/html/。下面的命令将文档根目录和所有子文件夹设置为775。
sudo find  /var/www/html/  -type  d -exec chmod g + s {} \;
最后,我们希望从现在开始在文档根目录中创建的任何新文件/文件夹都可以继承组名。
sudo chmod  g+s  /var/www/html/
唷!终于完成了。现在该测试登录到SFTP并写入文件和文件夹了!

【关键词:青岛web开发培训,web开发培训哪家好,学web开发多少钱,中享思途】

 st_bottom
青岛Java培训,青岛HTML5培训,青岛UI培训,青岛IT培训,青岛嵌入式培训,青岛运维培训,Java就业培训,专业ui培训,前端开发培训,嵌入式培训价格,运维培训哪家好,IT培训,青岛思途,中享思途IT培训
Copyright © 青岛思途共享科技信息服务有限公司 鲁ICP备14027489号-2

鲁公网安备 37021402000988号

青岛Java培训,青岛HTML5培训,青岛UI培训,青岛IT培训,青岛嵌入式培训,青岛运维培训,Java就业培训,专业ui培训,前端开发培训,嵌入式培训价格,运维培训哪家好,IT培训,青岛思途,中享思途IT培训