背景

背景

背景

我在 AWS 上找到了一个 Ubuntu 盒子,并且我正在关注指示安装 mattermost 服务器。一切进展顺利,直到我到达这一部分:

为了本指南的目的,我们假设该服务器的 IP 地址为 10.10.10.2(注意:我使用本地主机,即 127.0.0.0)

  1. 创建用于运行 mattermost 的用户和组:

sudo useradd--create-home--user-group--system mattermost

  1. 更改为新用户的账户:

sudo --user=mattermost --shell

  1. 更改到新用户的主页:

光盘

输入以下命令下载任意版本的 Mattermost Server:

获得 https://releases.mattermost.com/XXX/mattermost-XXX-linux-amd64.tar.gz

最后一个链接应该是被取代通过这个

https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz

当然可以从 chrome 轻松下载。

问题

当我尝试从 CLI 下载该文件时:

wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz

我得到以下信息:

--2017-01-17 07:22:36-- https://releases.mattermost.com/XXX/mattermost-XXX-linux-amd64.tar.gz 正在解析 releases.mattermost.com (releases.mattermost.com)... 54.192.192.48、54.192.192.69、54.192.192.118、... 正在连接到 releases.mattermost.com (releases.mattermost.com)|54.192.192.48|:443... 已连接。HTTP 请求已发送,正在等待响应... 403 禁止访问 2017-01-17 07:22:36 错误 403:禁止访问。

我尝试过

此时我显然没有该用户的密码mattermost..所以我退出 shell 并给他们一个密码:

$ sudo passwd mattermost
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

但当我跳回mattermost壳里并试图做一个聪明人时:

$ sudo wget https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz
[sudo] password for mattermost:
mattermost is not in the sudoers file.  This incident will be reported.

所以我不太清楚这里该怎么做。为什么我需要 sudo 才能下载公开可用的文件?

注意:我刚刚意识到,即使我是该 AWS 机器上的 root 用户,也会发生同样的错误

答案1

你有两个不相关的问题。

“403 Forbidden” 是 Web 服务器错误。您必须修复您的 URL。

运行后wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz出现403: Forbidden错误。这是一个错误来自网络服务器与用于下载文件的用户账户无关。

当您尝试加载页面或下载文件并指定了错误的 URL 时,最常见的结果是错误。但在这种情况下有时会出现 403 错误,这似乎就是这里发生的情况。从您运行的命令和的输出404: Not Found来看,它看起来像wget你忘记在 URL 中输入实际的版本号

X.X.X在我的系统上,使用带有实际版本号的URL 可以得到完全相同的错误:

ek@Io:~/Downloads$ wget https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz
--2017-01-17 03:15:30--  https://releases.mattermost.com/X.X.X/mattermost-X.X.X-linux-amd64.tar.gz
Resolving releases.mattermost.com (releases.mattermost.com)... 54.192.147.30, 54.192.147.18, 54.192.147.46, ...
Connecting to releases.mattermost.com (releases.mattermost.com)|54.192.147.30|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2017-01-17 03:15:32 ERROR 403: Forbidden.

如果我使用正确的 URL,它就可以正常工作:

ek@Io:~/Downloads$ wget https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz
--2017-01-17 03:09:50--  https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz
Resolving releases.mattermost.com (releases.mattermost.com)... 54.192.147.156, 54.192.147.30, 54.192.147.160, ...
Connecting to releases.mattermost.com (releases.mattermost.com)|54.192.147.156|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 27221349 (26M) [application/x-gzip]
Saving to: ‘mattermost-team-3.6.0-linux-amd64.tar.gz’

mattermost-team-3.6.0-linux- 100%[==============================================>]  25.96M   106KB/s    in 2m 6s

2017-01-17 03:11:58 (212 KB/s) - ‘mattermost-team-3.6.0-linux-amd64.tar.gz’ saved [27221349/27221349]

(有效和无效的 URL 均来自您的帖子。我实际上并不知道具体是什么文件需要。)

mattermost 用户不是 sudoer。

并非所有用户都可以使用命令以 root 身份运行程序(或完全运行)sudo。必须配置文件/etc/sudoers或 中的文件/etc/sudoers.d以允许他们这样做。最常见的方法是将用户置于其中一个文件允许运行命令的组中。

具体来说,要使用户成为 Ubuntu 系统上的管理员,以便允许他们以 root 身份运行任何命令sudo,请将该用户添加到sudo组:

sudo usermod -aG sudo mattermost

当然,你必须以以下用户身份运行该程序已经使用 root 身份运行命令sudo。(您能够运行sudo passwd mattermost,因此我知道您至少有一个这样的用户。)

记住:

  • 只有当你真的希望该用户拥有充满电做任何事情。他们将拥有与您相同的权力。但是,一旦您决定要这样做,您应该继续并简单地将用户添加到组中sudoers。通常不需要实际编辑任何配置文件sudo——它们已经设置为识别该sudo组为授予管理权限。
  • 如果出于某种原因,你选择在 中编辑/etc/sudoers或创建/编辑文件/etc/sudoers.d,则使用该visudo实用程序执行此操作非常重要,因为它会执行语法检查以确保 能够理解你的更改sudo。如果sudo在 sudoers 文件中看到语法不正确,则它将完全拒绝工作。对于您只能远程访问的服务器,这可能会将您锁定在系统之外。

最后,您实际上很少需要以wgetroot 身份手动下载文件。在这种情况下,您不需要——错误是 URL 不正确,“禁止”消息来自 Web 服务器。因此:

  • 如果这是 mattermost 需要使用 的唯一原因sudo,那么您可能不应该赋予该用户帐户这些能力,因为没有必要。
  • 即使 mattermost 确实需要以管理员身份执行操作,他们也应该以自己的身份(不带sudo)而不是以 root 身份(带sudo)执行操作,除非有明确的理由这样做。

答案2

这实际上是两个独立的错误:

  1. wget命令不在您这边,而是在服务器端,即您无权访问 Web 服务器上的该文件(403 表示客户端被拒绝访问)。现在,当我测试wget https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz它时,它工作正常,也许只是一些临时问题。但 403 错误仍然是服务器不允许您访问该 URL。

  2. sudo 问题则完全是另一回事。安装 Ubuntu 时,您会在安装过程中创建一个用户。该用户是唯一能够使用 sudo 的用户,直到您授予其他用户访问权限。要授予特定用户访问该sudo命令的权限,您必须visudo以 root 身份运行该命令,即sudo visudo,并相应地编辑文件。可以找到一些有关如何授予特定用户访问权限的示例这里

相关内容