怎样在 Vultr 上使用 Sudo Cloud 服务器

介绍

在本指南中,您将了解 root 访问权限、 sudo 命令,怎样使用运行命令 sudo,以及之间的差异 sudo 访问和root。 您还可以在下面找到说明怎样创建 sudo 流行操作系统的用户。

什么是根?

root 指类 Unix 系统(如 Linux)中的超级用户帐户。 它是用于系统管理的系统上具有最高访问权限的特权帐户。 此根/超级用户帐户的用户标识符 (UID) 为零,无论帐户名称怎样。

用户拥有整个系统的完全权限(root 权限)。 它可以做诸如修改系统核心部分、升级系统、更改系统配置以及启动、停止和重新启动所有正在运行的系统服务等操作。

当登录为 ,终端命令提示符符号从 $#. 为了 example:

$ echo 'This is a normal user shell'

# echo 'This is a root shell'

什么是须藤?

sudo (superuser do) command 是一个命令行实用程序,允许用户以 root 或其他用户身份执行命令。 它提供了一种有效的方式来授予某些用户适当的权限以使用特定的系统命令或以 root 用户身份运行脚本。

虽然有点类似 su 命令, sudo 需要登录用户的密码进行身份验证,而不是目标用户的密码 su 需要。 Sudo 也不会像 su; 而是以提升的权限运行程序或命令。

sudo,系统管理员可以执行以下操作:

  • 授予用户或用户组以提升或 root 权限运行某些命令的能力。
  • 查看使用的每个用户的用户 ID 的日志 sudo.
  • 控制用户可以在主机系统上使用什么命令。

sudo 会记录所有执行的命令和参数 /var/log/auth.log 文件,可以在发生故障时进行分析。

以 Sudo 运行命令

运行命令为 sudo在命令前加上 sudo

$ sudo command

它将提示您输入密码,输入您的帐户密码,然后单击 ENTER:

$ sudo command
[sudo]  password for user:

现在, command 将以提升的权限运行。

须藤VS。 根

最小权限原则是一种信息和计算机安全概念,它认为授予程序和用户执行任务所需的最少或最低限度的权限。

以root用户登录后,输入到终端的每一条命令都以系统最高权限运行,违反了最小权限原则。 像 rm 这样的简单命令可用于删除核心根目录或文件,而不会在意外时提示用户。 例如,如果您尝试使用以下命令删除 /etc 之类的根目录:

$ rm -rf /etc

当您以普通用户身份登录时,您将被拒绝许可。 当以 root 身份登录时,不会显示任何提示,并且整个文件夹将被删除 – 这很可能会破坏您的系统,因为运行系统所需的特殊配置文件存储在 /etc 目录中。 您也可能最终错误地格式化磁盘,并且系统不会提示您。

此缺陷还扩展到以 root 身份运行代码或应用程序; 应用程序中的一个小错误可能会删除一些系统文件,因为该应用程序是在最高权限下运行的。

Sudo 提供细粒度的访问控制。 它仅向需要它的特定程序授予提升的权限。 您知道哪个程序以提升的权限运行,而不是使用 root shell(以 root 权限运行每个命令)。 sudo 也可以配置为以另一个用户身份运行命令,指定允许哪些用户和组运行命令使用 sudo,或通过编辑您的 sudoers 文件来设置以 root 权限运行程序的超时。

因此,不建议使用 root shell 运行命令,因为您破坏系统的机会要高得多。 如果您需要更高或 root 权限来运行命令,请使用 sudo 确保只有该命令以 root 权限运行。 有关更多信息,请查看 sudo 手册页.

在 AlmaLinux、CentOS、 FedoraRocky Linux 和 VzLinux

本部分适用于:

  • AlmaLinux
  • CentOS 7 及更高版本
  • Fedora 31 岁及以后
  • 洛基 Linux
  • VzLinux

程序:

  1. 创建一个新的用户帐户 adduser 命令。

    # adduser example_user
    
  2. 为新用户设置一个强密码 passwd.

    # passwd example_user
    Changing password for user example_user.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.
    
  3. 将新用户添加到轮组 usermod.

    # usermod -aG wheel example_user
    
  4. 检查 sudoers 文件 visudo.

    # visudo
    
  5. 寻找轮组。 如果该行被禁用,请删除注释。 当您准备好保存文件时,它应该看起来像这样。

    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    
  6. Save 并退出 vi。 键入 ESC,然后:WQ,然后 ENTER。

    笔记: 从不编辑 /etc/sudoers 直接,总是使用 visudo. visudo 实用程序在将您的编辑提交到文件之前执行语法检查,因为格式错误的 sudoers 文件可能会破坏您的系统。 如果你犯了一个错误,你会在退出 visudo 时看到这个。

    visudo: >>> /etc/sudoers: syntax error near line 64 <<<
    What now?
    Options are:
    (e)dit sudoers file again
    e(x)it without saving changes to sudoers file
    (Q)uit and save changes to sudoers file (DANGER!)
    
  7. 切换到新用户。

    # su - example_user
    
  8. 验证您是新用户 whoami然后测试 sudo 访问 sudo whoami应该返回 .

    $ whoami
    example_user
    
    $ sudo whoami
    [sudo] password for example_user:
    root
    

在 Arch Linux 上创建一个 Sudo 用户

本节适用于任何最新版本的 Arch Linux。

程序:

  1. 安装 sudo,因为它不包含在基本安装中。 如果您有一段时间没有进行更新,请记住先更新您的本地存储库数据库。

    # pacman --sync sudo
    
  2. 创建一个新的用户帐户 useradd.

    # useradd --create-home example_user
    
  3. 为新用户设置一个强密码 passwd.

    # passwd example_user
    
  4. 将新用户添加到轮组 usermod.

    # usermod --append --groups wheel example_user
    
  5. 编辑 sudoers 文件 visudo.

    # visudo
    
  6. 在文件底部的“用户权限规范”部分中查找轮组。 从行的开头删除注释,所以它看起来像这样:

    ## Uncomment to allow members of group wheel to execute any command
    %wheel ALL=(ALL) ALL
    
  7. Save 并退出 visudo。 输入 ESC,然后输入 :WQ(小写),然后输入。

    笔记: 从不编辑 /etc/sudoers 直接,总是使用 visudo. visudo 实用程序在将您的编辑提交到文件之前执行语法检查,因为格式错误的 sudoers 文件可能会破坏您的系统。 如果你犯了一个错误,你会在退出 visudo 时看到这个。

    visudo: >>> /etc/sudoers: syntax error near line 64 <<<
    What now?
    Options are:
    (e)dit sudoers file again
    e(x)it without saving changes to sudoers file
    (Q)uit and save changes to sudoers file (DANGER!)
    
  8. 切换到新用户。

    # su - example_user
    
  9. 验证您是新用户 whoami,然后测试访问 sudo whoami应该返回 .

    $ whoami
    example_user
    
    $ sudo whoami
    
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    
    [sudo] password for example_user:
    root
    

在 Debian 和 Ubuntu 上创建 Sudo 用户

本部分适用于:

  • Debian 9“Stretch”及更高版本
  • Ubuntu 16.04 及更高版本

程序:

  1. 安装 sudo. 有些安装不附带 sudo 安装。 如果您没有,请安装 sudo 与恰当。

    # apt install sudo
    
  2. 创建一个新的用户帐户 adduser 命令。 为新用户使用强密码。 您可以输入用户信息的值,或按 ENTER 将这些字段留空。

    # adduser example_user
    Adding user `example_user' ...
    Adding new group `example_user' (1001) ...
    Adding new user `example_user' (1001) with group `example_user' ...
    Creating home directory `/home/example_user' ...
    Copying files from `/etc/skel' ...
    New password:
    Retype new password:
    passwd: password updated successfully
    Changing the user information for example_user
    Enter the new value, or press ENTER for the default
            Full Name []: Example User
            Room Number []:
            Work Phone []:
            Home Phone []:
            Other []:
    Is the information correct? [Y/n] y
    
  3. 将新用户添加到 sudo 团体。

    # adduser example_user sudo
    
  4. 通过切换到新用户进行测试。

    # su - example_user
    

    验证您是新用户 whoami然后测试 sudo 访问 sudo whoami应该返回 .

    $ whoami
    example_user
    $ sudo whoami
    [sudo] password for example_user:
    root
    

在 FreeBSD 上创建一个 Sudo 用户

本节适用于 FreeBSD 11 及更高版本。

程序:

  1. 安装 sudo 来自 端口集合 如果它安装在您的系统上。 安装 sudo 从港口:

    # cd /usr/ports/security/sudo/
    # make install clean
    

    您还可以安装二进制文件 sudo 使用 pkg 打包:

    # pkg install sudo
    
  2. 创建一个新的用户帐户以用于 sudo:

    # adduser
    

    回答对话框中的问题以创建用户。 我们将使用 示例用户 在本指南中。

  3. 将用户添加到 车轮 组,限制谁可以使用 su 成为根。

    # pw group mod wheel -m example_user
    
  4. 编辑 sudoers 文件 visudo.

    # visudo
    
  5. 寻找轮组。 如果该行被禁用,请删除注释。 当您准备好保存文件时,它应该看起来像这样。

    ## Allows people in group wheel to run all commands
    %wheel  ALL=(ALL)       ALL
    
  6. Save 并退出 vi。 键入 ESC,然后:WQ,然后 ENTER。

    笔记: 从不编辑 /etc/sudoers 直接,总是使用 visudo. visudo 实用程序在将您的编辑提交到文件之前执行语法检查,因为格式错误的 sudoers 文件可能会破坏您的系统。 如果你犯了一个错误,你会在退出 visudo 时看到这个。

    visudo: >>> /etc/sudoers: syntax error near line 64 <<<
    What now?
    Options are:
    (e)dit sudoers file again
    e(x)it without saving changes to sudoers file
    (Q)uit and save changes to sudoers file (DANGER!)
    
  7. 切换到新用户。

    # su - example_user
    
  8. 验证您是新用户 whoami然后测试 sudo 访问 sudo whoami,它应该返回根。

    $ whoami
    example_user
    
    $ sudo whoami
    [sudo] password for example_user:
    root
    

在 OpenBSD 上创建 Sudo 用户

本节适用于 OpenBSD 6.6 及更高版本。

如果您更喜欢使用,请参阅 OpenBSD 上的 doas 简介 doas 代替 sudo.

  1. 安装二进制文件 sudo 包裹。 除非您知道为什么需要另一个软件包,否则请选择选项 1。

    # pkg_add sudo
    
    quirks-3.187 signed on 2020-05-19T14:41:48Z
    Ambiguous: choose package for sudo
    a       0: <None>
            1: sudo-1.8.31
            2: sudo-1.8.31-gettext
            3: sudo-1.8.31-gettext-ldap
    Your choice: 1
    sudo-1.8.31: ok
    
  2. 创建一个新的用户帐户以用于 sudo,并设置密码。

    # useradd -m example_user
    # passwd example_user
    Changing password for example_user.
    New password:
    Retype new password:
    
  3. 将用户添加到 车轮 组,限制谁可以使用 su 成为根。

    # user mod -G wheel example_user
    
  4. 检查 sudoers 文件 visudo.

    # visudo
    
  5. 寻找轮组。 如果该行被禁用,请删除注释。 当您准备好保存文件时,它应该看起来像这样。

    # Uncomment to allow people in group wheel to run all commands
    # and set environment variables.
    %wheel  ALL=(ALL) SETENV: ALL
    
  6. Save 并退出 vi。 键入 ESC,然后:WQ,然后 ENTER。

    笔记: 从不编辑 /etc/sudoers 直接,总是使用 visudo. visudo 实用程序在将您的编辑提交到文件之前执行语法检查,因为格式错误的 sudoers 文件可能会破坏您的系统。 如果你犯了一个错误,你会在退出 visudo 时看到这个。

    visudo: >>> /etc/sudoers: syntax error near line 64 <<<
    What now?
    Options are:
    (e)dit sudoers file again
    e(x)it without saving changes to sudoers file
    (Q)uit and save changes to sudoers file (DANGER!)
    
  7. 切换到新用户。

    # su - example_user
    
  8. 验证您是新用户 whoami然后测试 sudo 访问 sudo whoami,它应该返回根。

    $ whoami example_user

    $ sudo 我是谁
    [sudo] example_user 的密码:root

更多关于 sudoers 文件

sudo 使用默认值 sudoers 安全策略并保留一个特殊的配置文件 /etc/sudoers. 该文件可用于控制访问权限和密码提示超时。

注意:您必须具有提升的权限才能查看 sudoers 文件

打开 /etc/sudoers 文件; 它应该是这样的:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d

该行:

root         ALL=(ALL:ALL)ALL

意味着 root 用户拥有无限的权限并且能够在系统上运行任何命令。

%sudo ALL=(ALL:ALL)ALL

允许组的所有成员 sudo 执行任何命令。

笔记: sudoers 文件中的 ‘%’ 代表一个组

从第一行可以看出 /etc/sudoers 文件:

# This file MUST be edited with the 'visudo' command as root

不要试图编辑 sudoers 直接存档。 使用 visudo 具有root权限的命令。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com