如何在 Ubuntu 16.04 上为用户目录设置 vsftpd

2023-11-13

介绍

FTP 是文件传输协议的缩写,是一种网络协议,曾经广泛用于在客户端和服务器之间移动文件。此后,它已被更快、更安全、更方便的文件传输方式所取代。许多临时互联网用户希望直接从网络浏览器下载https,并且命令行用户更有可能使用安全协议,例如scp or sFTP.

FTP 仍然用于支持具有非常特定需求的遗留应用程序和工作流程。如果您可以选择使用哪种协议,请考虑探索更现代的选项。然而,当您确实需要 FTP 时,vsftpd 是一个很好的选择。 vsftpd 针对安全性、性能和稳定性进行了优化,针对其他 FTP 服务器中发现的许多安全问题提供了强大的保护,并且是许多 Linux 发行版的默认设置。

在本教程中,我们将向您展示如何配置 vsftpd 以允许用户使用 FTP 以及受 SSL/TLS 保护的登录凭据将文件上传到他或她的主目录。

先决条件

要学习本教程,您将需要:

  • 具有非 root 用户的 Ubuntu 16.04 服务器sudo特权:您可以在我们的中了解有关如何设置具有这些权限的用户的更多信息使用 Ubuntu 16.04 进行初始服务器设置 guide.

一旦你有了 Ubuntu 服务器,你就可以开始了。

步骤 1 — 安装 vsftpd

我们首先更新软件包列表并安装 vsftpd 守护进程:

  1. sudo apt-get update
  2. sudo apt-get install vsftpd

安装完成后,我们将复制配置文件,以便我们可以从空白配置开始,将原始配置保存为备份。

  1. sudo cp/etc/vsftpd.conf /etc/vsftpd.conf.orig

配置备份到位后,我们就可以配置防火墙了。

第 2 步 — 打开防火墙

我们将检查防火墙状态以查看其是否已启用。如果是这样,我们将确保允许 FTP 流量,这样您在测试时就不会遇到阻止您的防火墙规则。

  1. sudoUFW 状态

在这种情况下,仅允许 SSH 通过:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

您可能有其他规则或根本没有防火墙规则。由于仅ssh在这种情况下允许流量,我们需要为 FTP 流量添加规则。

我们需要为 FTP 打开端口 20 和 21,稍后启用 TLS 时打开端口 990,并为我们计划在配置文件中设置的被动端口范围打开端口 40000-50000:

  1. sudoUFW 允许20/tcp
  2. sudoUFW 允许21/tcp
  3. sudoUFW 允许990/tcp
  4. sudoUFW 允许40000:50000/tcp
  5. sudoUFW 状态

现在我们的防火墙规则如下所示:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 990/tcp ALLOW Anywhere 20/tcp ALLOW Anywhere 21/tcp ALLOW Anywhere 40000:50000/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 20/tcp (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) 990/tcp (v6) ALLOW Anywhere (v6) 40000:50000/tcp (v6) ALLOW Anywhere (v6)

With vsftpd安装完毕并打开必要的端口后,我们就可以继续下一步了。

第 3 步 — 准备用户目录

在本教程中,我们将创建一个用户,但您可能已经有一个需要 FTP 访问的用户。在接下来的说明中,我们将注意保留现有用户对其数据的访问权限。即便如此,我们还是建议您从新用户开始,直到您配置并测试了您的设置。

首先,我们将添加一个测试用户:

  1. sudo adduser sammy

出现提示时指定密码,然后在其他提示中按“ENTER”键。

当用户被限制在特定目录时,FTP 通常更安全。vsftpd实现这一点chroot监狱。什么时候chroot为本地用户启用,默认情况下他们仅限于其主目录。然而,由于方式vsftpd确保目录安全,用户不能对其进行写入。这对于只应通过 FTP 连接的新用户来说很好,但如果现有用户也进行 shell 访问,则可能需要写入其主文件夹。

在此示例中,我们不会从主目录中删除写入权限,而是创建一个ftp目录作为chroot和一个可写的files保存实际文件的目录。

创建ftp文件夹,设置其所有权,并确保使用以下命令删除写入权限:

  1. sudo mkdir /home/sammy/ftp
  2. sudo chown nobody:nogroup /home/sammy/ftp
  3. sudo chmod a-w /home/sammy/ftp

我们来验证一下权限:

  1. sudo ls -la/home/萨米/ftp
Output
total 8 4 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 . 4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

接下来,我们将创建可以上传文件的目录并将所有权分配给用户:

  1. sudo mkdir /home/sammy/ftp/files
  2. sudo chown sammy:sammy /home/sammy/ftp/files

权限检查files目录应返回以下内容:

  1. sudo ls -la/home/萨米/ftp
Output
total 12 dr-xr-xr-x 3 nobody nogroup 4096 Aug 26 14:01 . drwxr-xr-x 3 sammy sammy 4096 Aug 26 13:59 .. drwxr-xr-x 2 sammy sammy 4096 Aug 26 14:01 files

最后,我们将添加一个test.txt稍后测试时要使用的文件:

  1. echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

现在我们已经确保了ftp目录并允许用户访问files目录,我们将把注意力转向配置。

第 4 步 — 配置 FTP 访问

我们计划允许具有本地 shell 帐户的单个用户连接 FTP。两个关键设置已在vsftpd.conf。首先打开配置文件以验证配置中的设置是否与以下设置匹配:

  1. sudo nano/etc/vsftpd.conf
/etc/vsftpd.conf
. . .
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
. . .

接下来我们需要更改文件中的一些值。为了允许用户上传文件,我们将取消注释write_enable设置使我们有:

/etc/vsftpd.conf
. . .
write_enable=YES
. . .

我们还将取消注释 chroot,以防止 FTP 连接的用户访问目录树之外的任何文件或命令。

/etc/vsftpd.conf
. . .
chroot_local_user=YES
. . .

我们将添加一个user_sub_token为了将用户名插入我们的local_root directory路径,以便我们的配置适用于该用户以及将来可能添加的任何用户。

/etc/vsftpd.conf
user_sub_token=$USER
local_root=/home/$USER/ftp

我们将限制可用于被动 FTP 的端口范围,以确保有足够的连接可用:

/etc/vsftpd.conf
pasv_min_port=40000
pasv_max_port=50000

Note:我们预先打开了在此处为被动端口范围设置的端口。如果更改这些值,请务必更新防火墙设置。

由于我们只计划根据具体情况允许 FTP 访问,因此我们将设置配置,以便仅当用户明确添加到列表时而不是默认情况下才向用户授予访问权限:

/etc/vsftpd.conf
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

userlist_deny切换逻辑。当设置为“YES”时,列表中的用户将被拒绝 FTP 访问。当设置为“NO”时,仅允许列表中的用户访问。完成更改后,保存并退出文件。

最后,我们将创建用户并将其添加到文件中。我们将使用-a附加到文件的标志:

  1. echo "sammy" | sudo tee -a /etc/vsftpd.userlist

仔细检查它是否已按您的预期添加:

cat /etc/vsftpd.userlist
Output
sammy

重新启动守护进程以加载配置更改:

  1. sudosystemctl 重新启动 vsftpd

现在我们准备好进行测试了。

第 5 步 — 测试 FTP 访问

我们已将服务器配置为仅允许用户sammy通过 FTP 连接。让我们确保情况确实如此。

匿名用户应该无法连接:我们禁用了匿名访问。在这里,我们将通过尝试匿名连接来测试这一点。如果我们做得正确,应该拒绝匿名用户的权限:

  1. ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): anonymous 530 Permission denied. ftp: Login failed. ftp>

关闭连接:

  1. bye

用户以外的用户sammy应该无法连接:接下来,我们将尝试连接作为我们的sudo用户。他们也应该被拒绝访问,并且应该在他们被允许输入密码之前发生。

  1. ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sudo_user 530 Permission denied. ftp: Login failed. ftp>

关闭连接:

  1. bye

sammy应该能够连接以及读取和写入文件:在这里,我们将确保我们指定的用户_can_connect:

  1. ftp -p 203.0.113.0
Output
Connected to 203.0.113.0. 220 (vsFTPd 3.0.3) Name (203.0.113.0:default): sammy 331 Please specify the password. Password: your_user's_password 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>

我们将更改为files目录,然后使用get命令将我们之前创建的测试文件传输到本地计算机:

  1. cd files
  2. 获取测试.txt
Output
227 Entering Passive Mode (203,0,113,0,169,12). 150 Opening BINARY mode data connection for test.txt (16 bytes). 226 Transfer complete. 16 bytes received in 0.0101 seconds (1588 bytes/s) ftp>

我们将立即返回并尝试使用新名称上传文件以测试写入权限:

  1. 把test.txt上传.txt
Output
227 Entering Passive Mode (203,0,113,0,164,71). 150 Ok to send data. 226 Transfer complete. 16 bytes sent in 0.000894 seconds (17897 bytes/s)

关闭连接:

  1. bye

现在我们已经测试了我们的配置,我们将采取措施进一步保护我们的服务器。

第 6 步 — 保护交易

由于 FTP 确实not加密传输中的任何数据(包括用户凭据),我们将启用 TTL/SSL 来提供该加密。第一步是创建用于 vsftpd 的 SSL 证书。

我们将使用openssl创建一个新证书并使用-days标志使其有效期为一年。在同一命令中,我们将添加一个 2048 位 RSA 私钥。然后通过设置-keyout and -out标志为相同的值,私钥和证书将位于同一个文件中。

我们将使用以下命令来完成此操作:

  1. sudoopenssl 请求-x509 -nodes -days 365 -newkeyRSA:2048-keyout/etc/ssl/private/vsftpd.pem-out/etc/ssl/private/vsftpd.pem

系统将提示您提供证书的地址信息。用您自己的信息替换以下问题:

Output
Generating a 2048 bit RSA private key ............................................................................+++ ...........+++ writing new private key to '/etc/ssl/private/vsftpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:NY Locality Name (eg, city) []:New York City Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []: your_IP_address Email Address []:

有关证书标志的更多详细信息,请参阅OpenSSL 要点:使用 SSL 证书、私钥和 CSR

创建完证书后,打开vsftpd再次配置文件:

  1. sudo nano/etc/vsftpd.conf

在文件的底部,您应该有两行以rsa_。注释掉它们,使它们看起来像:

/etc/vsftpd.conf
# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

在它们下面,添加以下几行,这些行指向我们刚刚创建的证书和私钥:

/etc/vsftpd.conf
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem

之后,我们将强制使用 SSL,这将阻止无法处理 TLS 的客户端进行连接。为了确保所有流量都被加密,这是必要的,但可能会迫使您的 FTP 用户更改客户端。改变ssl_enable to YES:

/etc/vsftpd.conf
ssl_enable=YES

之后,添加以下行以显式拒绝通过 SSL 的匿名连接,并要求数据传输和登录都使用 SSL:

/etc/vsftpd.conf
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

之后,我们将通过添加以下行将服务器配置为使用 TLS(SSL 的首选后继者):

/etc/vsftpd.conf
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

最后,我们将添加两个选项。首先,我们不需要重复使用 SSL,因为它可能会破坏许多 FTP 客户端。我们将需要“高”加密密码套件,这目前意味着密钥长度等于或大于 128 位:

/etc/vsftpd.conf
require_ssl_reuse=NO
ssl_ciphers=HIGH

完成后,保存并关闭文件。

现在,我们需要重新启动服务器以使更改生效:

  1. sudosystemctl 重新启动 vsftpd

此时,我们将无法再与不安全的命令行客户端连接。如果我们尝试一下,我们会看到类似的内容:

  1. ftp -p 203.0.113.0
  2. 连接到203.0.113.0.
  3. 220 (vsFTPd 3.0.3)
  4. Name (203.0.113.0:default): sammy
  5. 530非匿名会话必须使用加密。
  6. ftp:登录失败。
  7. 421服务不可用,远程服务器已关闭连接
  8. ftp>

接下来,我们将验证是否可以使用支持 TLS 的客户端进行连接。

第 7 步 — 使用 FileZilla 测试 TLS

大多数现代 FTP 客户端都可以配置为使用 TLS 加密。我们将演示如何使用 FileZilla 进行连接,因为它支持跨平台。请参阅其他客户端的文档。

首次打开 FileZilla 时,可以在“文件”一词下方找到“站点管理器”图标,即顶行最左侧的图标。点击它:

Site Manager Screent Shot

将打开一个新窗口。点击右下角的“新建站点”按钮:

New Site Button Under “My Sites” a new icon with the words “New site” will appear. You can name it now or return later and use the Rename button.

您必须在“主机”字段中填写名称或 IP 地址。在“加密”下拉菜单下,选择“需要基于 TLS 的显式 FTP”。

对于“登录类型”,选择“询问密码”。在“用户”字段中填写您创建的 FTP 用户:

General Settings Tab Click “Connect” at the bottom of the interface. You will be asked for the user’s password:

Password Dialogue Click “OK” to connect. You should now be connected with your server with TLS/SSL encryption.

Site Certificate Dialogue When you’ve accepted the certificate, double-click the files folder and drag upload.txt to the left to confirm that you’re able to download files.
Download test.txt When you’ve done that, right-click on the local copy, rename it to upload-tls.txt` and drag it back to the server to confirm that you can upload files.

Rename and Upload You’ve now confirmed that you can securely and successfully transfer files with SSL/TLS enabled.

第 8 步 — 禁用 Shell 访问(可选)

如果由于客户端要求而无法使用 TLS,您可以通过禁用 FTP 用户以任何其他方式登录的能力来获得一定的安全性。防止这种情况的一种相对简单的方法是创建自定义 shell。这不会提供任何加密,但会限制受感染帐户对可通过 FTP 访问的文件的访问。

首先,打开一个名为ftponly在bin目录中:

  1. sudo nano/bin/ftonly

我们将添加一条消息,告诉用户为什么无法登录。粘贴以下内容:

#!/bin/sh
echo "This account is limited to FTP access only."

更改权限以使文件可执行:

  1. sudo chmoda+x /bin/ftonly

打开有效 shell 列表:

  1. sudo nano/etc/shell

在底部添加:

/etc/shell
. . .
/bin/ftponly

使用以下命令更新用户的 shell:

  1. sudo usermod sammy -s/bin/ftonly

现在尝试以 sammy 身份登录:

  1. ssh sammy@203.0.113.0

您应该看到类似以下内容:

Output
This account is limited to FTP access only. Connection to 203.0.113.0 closed.

这确认用户不能再ssh到服务器,并且仅限于 FTP 访问。

结论

在本教程中,我们介绍了为具有本地帐户的用户设置 FTP。如果您需要使用外部身份验证源,您可能需要研究 vsftpd 对虚拟用户的支持。这通过使用 PAM(可插入身份验证模块)提供了一组丰富的选项,如果您在其他系统(例如 LDAP 或 Kerberos)中管理用户,那么这是一个不错的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 16.04 上为用户目录设置 vsftpd 的相关文章

  • 数据加密

    存储大量信用卡信息的数据库是我们刚刚完成的系统中不可避免的一部分 不过 我想要的是卡号的最终安全性 我们可以设置一种加密和解密机制 但我们自己无法解密任何给定的号码 我所追求的是一种即使在数据库级别也能保护这些信息的方法 这样任何人都无法进
  • md5() 是做什么用的?

    我正在阅读本教程简单的PHP登录系统 http www phpeasystep com workshopview php id 6 最后它建议你应该使用 md5 加密您的密码 http www phpeasystep com worksho
  • iOS SecItemCopyMatching RSA 公钥格式?

    我正在尝试从已生成的密钥对 两个SecKeyRefs 以便通过线路发送 我所需要的只是一个简单的 modulus exponent 对 它应该正好占用 131 个字节 模数为 128 指数为 3 但是 当我获取关键信息时NSData对象 我
  • .NET 中安全身份的本地化

    我想在 NET 中实现一个用于服务 客户端通信的命名管道 并遇到了这段代码 http code msdn microsoft com windowsdesktop CSNamedPipeCommunication 33b2485c view
  • Microsoft 帐户 JWT 身份验证令牌如何签名?

    在我的 Web 应用程序中 我需要验证从 Live SDK 5 6 获取的 JWT 身份验证令牌 不久前 这些令牌的签名是使用签名密钥的 Base64 编码标头 有效负载的 HMACSHA256 哈希 该签名密钥是应用程序秘密 来自 acc
  • 如何在 GNU/Linux 上设置 Subversion (SVN) 服务器 - Ubuntu [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一台运行 Ubuntu 的笔记本电脑 我想将其用作 Subversion 服务器 既让我自己在本地承诺 也让其他人远程承诺 要使其
  • 尝试访问 iframe 内容(不同子域);尝试设置 CORS

    我将文件托管在domain com 其中包含一个 iframe 其文档托管在s3 domain com 我正在尝试访问 iframe 的内容 但收到以下信息 不安全的 JavaScript 尝试通过 URL 访问框架http s3 doma
  • 如何确保密钥是在 TPM 内部创建的?

    我需要 在客户端计算机上运行 exe 这将在 TPM 中创建密钥对 然后我将使用 TPM 生成的密钥对的公钥部分创建 CSR 我关心的是如何确保密钥是在 TPM 内部创建的 而不是由欺骗的 TPM 创建的 这将使私钥能够被迁移和复制 我听说
  • 为什么这个 JavaScript 可以在 Safari 上运行,但不能在 Firefox 上运行?

    我有 HTML 文件 我在 Safari 上尝试了该代码 运行良好 但是当我在 Firefox 上尝试这个时 它不起作用 任何人都可以建议如何使其在 Firefox 上工作吗 单击撤消按钮时 我想从 jsp 文件中检索内容 当我在 mac
  • uWSGI 皇帝权限被拒绝,除非 root

    我尝试使用二进制文件本身的标志 uid www data gid www data 并将其设置在我的配置中 uid www data gid www data 但套接字总是由我正在使用的帐户生成 因此我从 nginx 收到权限被拒绝的错误
  • Python 应用程序需要 init.d 脚本

    我有一个基于 python 的应用程序 它的工作方式类似于 feed 聚合器 并且需要成为 init d 脚本的一部分 以便我可以使用启动 停止 重新启动选项来控制执行 另外 我希望将 init d 脚本设置为 cron 作业 我在这里有示
  • Delphi 应用程序被 Google Chrome 视为“危险”

    我经常用Delphi 2009制作数学软件 并将其发布在我的网站上 然而 去年左右 Google Chrome 开始认为我的一小部分 但数量不断增加 EXE 是 有害的 并且 Google Chrome 拒绝下载它们 例如 今天我编写了一个
  • 在 Ubuntu 16.04 上编译 PCL 1.7,CMake 生成的 Makefile 中出现错误

    我正在尝试让 PCL 1 7 点云库 而不是其他 pcl 在 Ubuntu 16 04 上运行 我最终希望用于 C 的东西 但现在我只是想让这些例子工作 我使用的是 Ubuntu GNU 5 3 1 附带的默认编译器和 Cmake 版本 3
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 使用Apple80211 api时如何知道OPEN、WPA、WPA2、WEP等安全类型?

    Cydia中的Wifi WiFi FoRum等wifi扫描应用可以知道安全类型 使用 Apple80211 api 时 应用程序如何知道 OPEN WPA WPA2 WEP 等安全类型 CAPABILITIES 的值为 1057 1025
  • Ubuntu 16.04/Django - Gunicorn - Worker 无法启动

    我正在 Digital Ocean Ubuntu 16 04 VPS 上部署 Django 项目 我使用的是Django的一键安装 然后替换为我的项目 问题是服务器返回502 Error EDIT 没有realestate scanner
  • 在 ubuntu 中找不到 .android 文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在哪里可以找到 android在 Ubuntu 中 我想使用debug keystore 转到您的主文件夹并按 ctrl h 瞧
  • Eclipse Kepler 在 64 位 ubuntu 上冻结

    几天前我刚刚将 Ubuntu 升级到 14 04 并在此过程中从 32 位切换到 64 位 从那时起 Eclipse 就变得非常不稳定 运行几分钟后 它将开始随机冻结越来越长的时间 特别是在代码完成时 已经必须禁用它 而且在剪切 粘贴时 偶
  • 为什么我在 Firefox 中突然遇到“阻止加载混合活动内容”问题?

    今天早上 在将我的 Firefox 浏览器升级到最新版本 从 22 到 23 后 我的后台 网站 的一些关键功能停止工作 查看Firebug日志 报告了以下错误 Blocked loading mixed active content ht

随机推荐

  • 如何在 Ubuntu 20.04 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 它通常用于构建后端应用程序 但它也作为全栈和前端解决方案而流行 npm 是
  • 如何在 Ubuntu 20.04 上安装 Gitea

    Gitea 是一个用 Go 编写的快速且易于使用的自托管 git 服务器 它包括存储库文件编辑器 项目问题跟踪 用户管理 通知 内置 wiki 等等 Gitea是一个轻量级应用程序 可以安装在低功耗系统上 如果您正在寻找内存占用小得多的 G
  • 如何在 CentOS 8 上安装 MariaDB

    MariaDB 是一个开源关系数据库管理系统 向后兼容 是 MySQL 的二进制直接替代品 它是由 MySQL 的一些原始开发人员和社区中的许多人开发的 在本教程中 我们将解释如何在 CentOS 8 上安装和保护 MariaDB 10 3
  • 如何在 Debian 9 上安装 Memcached

    Memcached 是一个免费开源的高性能内存键值数据存储 它主要用于通过缓存数据库调用结果中的各种对象来加速应用程序 在本教程中 我们将引导您完成在 Debian 9 上安装和配置 Memcached 先决条件 您需要以以下身份登录具有
  • 如何在 Ubuntu 20.04 上安装和配置 Squid 代理

    Squid 是一个功能齐全的缓存代理 支持流行的网络协议 如 HTTP HTTPS FTP 等 它可用于通过缓存重复请求 过滤 Web 流量和访问地理限制内容来提高 Web 服务器的性能 本教程介绍如何在 Ubuntu 20 04 上设置
  • Linux 中的最后一个命令

    如果您正在管理多用户系统 您通常需要知道谁 何时 从何处登录到计算机 last是一个命令行实用程序 显示有关系统用户上次登录会话的信息 当您需要跟踪用户活动或调查可能的安全漏洞时 它非常有用 本文介绍了如何使用以下方式审核登录系统的人员 l
  • 在 CentOS 8 上安装 Odoo 13

    Odoo 是世界上最受欢迎的一体化商业软件 它提供一系列业务应用程序 包括 CRM 网站 电子商务 计费 会计 制造 仓库 项目管理 库存等等 全部无缝集成 本教程介绍了如何安装Odoo13 来自 CentOS 8 计算机上的 Python
  • 如何在 Ubuntu 18.04 上安装 Tomcat 8.5

    Apache Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 它是当今世界上采用最广泛的应用程序和 Web 服务器之一 Tomcat 使用简
  • Java中的抽象工厂设计模式

    欢迎使用 java 示例中的抽象工厂设计模式 抽象工厂设计模式是创建模式之一 抽象工厂模式几乎类似于工厂模式但事实上它更像是工厂中的工厂 抽象工厂 If you are familiar with factory design patter
  • 如何使用 Rsync 同步本地和远程目录

    介绍 Rsync 这代表远程同步 是一款远程与本地文件同步工具 它使用一种算法 通过仅移动已更改的文件部分来最大程度地减少复制的数据量 在本教程中 我们将定义 Rsync 回顾一下使用时的语法rsync 解释如何使用 Rsync 与远程系统
  • 弹簧@Component

    Spring Component 注解用于将一个类表示为 Component 代表着Spring框架将自动检测这些类依赖注入当使用基于注释的配置和类路径扫描时 弹簧组件 通俗地说 组件负责一些操作 Spring 框架提供了另外三个在将类标记
  • 使用 Graphite、StatsD 和 CollectD 跟踪统计数据简介

    介绍 有很多理由可以解释为什么收集有关服务器 应用程序和流量的统计数据是个好主意 收集和组织数据可以让您对有关扩展 故障排除和跟踪配置中的痛点的决策充满信心 有多种工具可用于跟踪我们机器上的指标 并且它们通常被委托给流程的某一小部分 我们可
  • 如何在 Ubuntu 12.04 上设置 ProFTPD

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 14.04 上安装和配置 Syncthing 来同步目录

    介绍 有许多程序能够使不同计算机之间的文件保持同步 同步事物是一个引人注目的新选项 它是跨平台的 完全开源的 非常灵活且易于使用 在本指南中 我们将向您展示如何开始使用 Syncthing 在两个 Ubuntu 14 04 服务器实例之间同
  • 如何使用 Ansible Vault 保护敏感的 Playbook 数据

    介绍 Ansible Vault 是一项允许用户加密 Ansible 项目中的值和数据结构的功能 这提供了保护成功运行 Ansible play 所需但不应公开可见的任何敏感数据的能力 例如密码或私钥 当提供密钥时 Ansible 在运行时
  • 如何在 Ubuntu 18.04 中为 Nginx 创建自签名 SSL 证书

    介绍 TLS 或传输层安全 及其前身SSL代表安全套接字层 是用于将正常流量包装在受保护的加密包装器中的 Web 协议 使用此技术 服务器可以在服务器和客户端之间安全地发送流量 而不会出现消息被外部各方拦截的可能性 证书系统还帮助用户验证他
  • 如何在 Ubuntu 14.04 上设置具有 Keepalived 和保留 IP 的高可用 HAProxy 服务器

    介绍 高可用性是系统设计的一项功能 允许应用程序在发生故障时自动重新启动或将工作重新路由到另一个有能力的系统 就服务器而言 建立高可用系统需要几种不同的技术 必须有一个可以重定向工作的组件 并且必须有一种机制来监视故障并在检测到中断时转换系
  • 如何在 Ubuntu 14.04 上使用 HAProxy 作为 WordPress 应用程序服务器的第 4 层负载均衡器

    介绍 在本教程中 我们将教您如何使用 HAProxy 作为 WordPress 服务器 特别是 Web 应用程序层 的第 4 层负载均衡器 负载平衡应用程序服务器为您的设置添加了冗余 从而提高了服务器故障或网络问题时的可靠性 并将负载分散到
  • Node JS 架构 - 单线程事件循环

    今天我们将研究 Node JS 架构和单线程事件循环模型 在我们之前的帖子中 我们讨论过Node js 基础知识 节点 JS 组件 and 节点 JS 安装 Node js 架构 在开始一些 Node JS 编程示例之前 了解 Node J
  • 如何在 Ubuntu 16.04 上为用户目录设置 vsftpd

    介绍 FTP 是文件传输协议的缩写 是一种网络协议 曾经广泛用于在客户端和服务器之间移动文件 此后 它已被更快 更安全 更方便的文件传输方式所取代 许多临时互联网用户希望直接从网络浏览器下载https 并且命令行用户更有可能使用安全协议 例