为什么要删除 Apache/Nginx 用户的 Shell 访问权限?

bot*_*les 2 linux permissions nginx command-line-interface apache-2.2

授予注定要运行 Apache/Nginx 的用户帐户的 shell 访问权限是一个坏主意吗?

我问是因为,Guvnr 在他的 VPS Bible 系列中,用 visudo'd 设置了一个新用户

guvnr  ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

权限,然后使用该用户设置 Nginx 服务器。

而 Nginx HTTP Server 的作者建议您不要向运行 Nginx 的用户授予 shell 访问权限。

您总是可以删除guvnr 的shell 访问权限,但是,您将如何管理您的网站?

编辑:@Bart Silverstrim - 以下是 guvnr 安装 Nginx 的方式:

  • (以用户guvnr登录)
  • sudo 安装 nginx 依赖
  • 用户 wget nginx 源文件
  • 用户 ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module
  • 用户制作
  • 须藤制作安装

那么也许 Nginx 是在这里安装到 root 的?

如果在 /etc/ssh/sshd_config 中禁用 root 登录,这是一个好的做法吗?

Bar*_*rim 5

通常,将 shell 访问权限授予任何仅为守护程序/服务创建的帐户以访问不需要 shell 访问的特定系统功能,这是一个坏主意。这样就可以防止某人破坏(面向 Internet 的)服务并获得不必要的特权。

基本上,如果不需要,为什么要增加攻击面?

另一方面,在重新阅读问题时,不清楚 nginx 是否有一个 shell 帐户。nginx 是由guvnr 帐户设置的,还是授予了自己的实际帐户?每个应用程序都由用户设置,通常具有一些管理访问权限。这并不意味着它总是以该用户身份运行(即,仅仅因为 cat 是由 root 安装的并不意味着 jdoe running cat 正在以 root 身份运行 cat。)它可以访问外壳;它很可能在分叉后立即放弃特权,或者它可以拥有自己的 nginx 帐户或作为具有很少或没有特权的 Web 用户帐户运行。您可能想要在配置中进行更多挖掘,并查看服务器正在运行的内容。