用普通用户做超级用户的事情

用普通用户做超级用户的事情

编辑

阅读下面 janos 的回答。

更多地使用 SSH 密钥来直接访问根。


我想保护对服务器的 SSH 访问。我到处看到的一件事是禁用 root 用户登录。

为了仍然能够通过 SSH 进行访问,我通过以下方式创建了另一个用户sudo adduser john

我怎样才能使用该帐户进行 root 操作?

sudo command要求输入用户密码,但给出john not in sudoer file. Action will be reported。当我使用时,su我以 root 身份登录,我将禁用它。

我怎样才能root使用普通帐户进行操作john

答案1

你应该编辑/etc/sudoers 使用visudo命令并为用户添加一行john

可能你会想要添加类似这样的行。然后,你可以使用(以 身份运行)john ALL=(ALL) ALL发出命令,并且如果需要,禁用 root 用户,或者至少为其使用非常强的密码 - 这是我的选择。sudojohn

此外,大多数版本的 SSH 应该默认禁用 root 登录;这意味着您无法通过 SSH 以 root 身份登录,但您可以以用户身份通过​​ SSH 访问,然后使用 成为 root 用户su。如果有疑问,请检查文件PermitRootLogin中的语句/etc/ssh/sshd_config。来自手册页:

   PermitRootLogin
          Specifies whether root can log in using  ssh(1).   The  argument  must  be
          ``yes'',  ``without-password'',  ``forced-commands-only'', or ``no''.  The
          default is ``yes''.

答案2

  • 如果您已经以 root 身份登录,则使用sudo毫无意义。

  • 为了john获得 root 权限,只需执行

    usermod john -G admin
    

    在 Ubuntu 默认安装中,因为它会添加john到组admin(意味着 root 权限)。

    对于其他发行版,您可以咨询/etc/sudoers具有此权限的组。

  • 禁用root是好的,但是具有 root 权限的用户仍然可以做任何他想做的事情。

    不登录只有root当您出于以下任一原因时才有好处:

    • 预防偶然对您的系统造成的改变(rm -rf /恶意软件等等)。

      sudo su一旦您以具有 root 权限的用户身份登录,即可成为 root 用户。

    • 您使用用户密码以外的其他方式进行身份验证(例如私钥)。

      在这种情况下,该sudo命令仍然需要用户密码,因此它增加了额外的安全性(无人值守的笔记本电脑等)。

答案3

值得注意的是,允许使用 ssh 登录 root 比使用 的做法更安全su root。Simon Kirby 在 Debian 邮件列表中的这篇文章很好地解释了这一点:

http://lists.debian.org/debian-security/2002/06/msg00418.html

仅允许使用 ssh 密钥进行 root 登录可能比 的做法更安全sudo,但我不是专家。无论如何,该设置的设置如下:

PermitRootLogin without-password

答案4

禁用通过 ssh 登录 root 是明智之举。但是登录后没有理由不通过 su 切换到 root。确保两个帐户都有强密码,并安装 fail2ban 以防止森林火灾 - 对不起,破解尝试。

相关内容