背景
我在 AWS 上找到了一个 Ubuntu 盒子,并且我正在关注指示安装 mattermost 服务器。一切进展顺利,直到我到达这一部分:
为了本指南的目的,我们假设该服务器的 IP 地址为 10.10.10.2(注意:我使用本地主机,即 127.0.0.0)
- 创建用于运行 mattermost 的用户和组:
sudo useradd--create-home--user-group--system mattermost
- 更改为新用户的账户:
sudo --user=mattermost --shell
- 更改到新用户的主页:
光盘
输入以下命令下载任意版本的 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 文件中看到语法不正确,则它将完全拒绝工作。对于您只能远程访问的服务器,这可能会将您锁定在系统之外。
最后,您实际上很少需要以wget
root 身份手动下载文件。在这种情况下,您不需要——错误是 URL 不正确,“禁止”消息来自 Web 服务器。因此:
- 如果这是 mattermost 需要使用 的唯一原因
sudo
,那么您可能不应该赋予该用户帐户这些能力,因为没有必要。 - 即使 mattermost 确实需要以管理员身份执行操作,他们也应该以自己的身份(不带
sudo
)而不是以 root 身份(带sudo
)执行操作,除非有明确的理由这样做。
答案2
这实际上是两个独立的错误:
该
wget
命令不在您这边,而是在服务器端,即您无权访问 Web 服务器上的该文件(403 表示客户端被拒绝访问)。现在,当我测试wget https://releases.mattermost.com/3.6.0/mattermost-team-3.6.0-linux-amd64.tar.gz
它时,它工作正常,也许只是一些临时问题。但 403 错误仍然是服务器不允许您访问该 URL。sudo 问题则完全是另一回事。安装 Ubuntu 时,您会在安装过程中创建一个用户。该用户是唯一能够使用 sudo 的用户,直到您授予其他用户访问权限。要授予特定用户访问该
sudo
命令的权限,您必须visudo
以 root 身份运行该命令,即sudo visudo
,并相应地编辑文件。可以找到一些有关如何授予特定用户访问权限的示例这里。