什么是须藤?
归功于: XKCD
Sudo 是一个 Linux 程序,旨在允许用户在有限的时间范围内对用户使用 root 权限并记录 root 活动。 基本思想是在允许用户完成任务的同时给予用户尽可能少的特权。 “须藤”一词的意思 s替代品 你ser,和 做. 它是一个用于基于系统配置文件管理用户权限的程序。 它允许用户以另一个用户(默认为超级用户)的权限运行程序。 该程序适用于大多数基于 UNIX 和 Linux 的操作系统。
句法
这 sudo command 最常被这样调用。
[root@host ~]# sudo <command>
安全
许多专家指出,我们不应该以默认方式使用提升的 root 权限。 这是由于使用此提升的权限级别时可能发生的安全和错误相关问题。 由于 root 用户拥有创建、修改或删除设置、文件和文件夹的完全权限,因此 root 用户所犯的任何错误都会产生全局影响。
许多人认为, sudo command 处理访问限制,但反之亦然。 Sudo 允许我们以提升或超级用户权限(以 root 身份)运行命令和程序。 通过使用 sudo 配置、程序和命令本身是为特定用户配置的。 与窗户相比, sudo 类似于使用“运行方式”选项。 此外,我们需要注意,在某些条件下,可以使用该用户配置中指定的任何人的权限运行程序或命令。
在 Ubuntu 中, sudo 默认情况下始终设置命令,因为在我们创建之前没有 root 密码。 初始用户(在安装期间创建)可以通过以下方式执行任何操作 sudo 因为他们将充当 root 用户。 Ubuntu 的开发人员特意以这种方式创建了这个系统,以便新用户在使用服务器时可以开始使用正确的安全实践。
安装
这 sudo 几乎所有 Linux 发行版都默认安装该程序。 不是 Arch Linux、Gentoo 和 BSD 家族的发行版。
如果我们需要安装 sudo 在 Debian/Ubuntu 中,我们将使用以下命令。
apt-get install sudo
如果我们需要安装 sudo 在 CentOS 中,我们会使用这个命令。
yum install sudo
配置
须藤
这 sudo.conf 文件包含配置信息 sudo 前端。 它包含与安全策略和日志记录选项相关的插件变量。
这是一个示例 sudo.conf 文件。
#
# Sample /etc/sudo.conf file
#
# Format:
# Plugin plugin_name plugin_path plugin_options ...
# Path askpass /path/to/askpass
# Path noexec /path/to/sudo_noexec.so
# Debug sudo /var/log/sudo_debug all@warn
# Set disable_coredump true
#
# Sudo plugins:
#
# The plugin_path is relative to ${prefix}/libexec unless fully qualified.
# The plugin_name corresponds to a global symbol in the plugin
# that contains the plugin interface structure.
# The plugin_options are optional.
#
# The sudoers plugin is used by default if no Plugin lines are present.
Plugin sudoers_policy sudoers.so
Plugin sudoers_io sudoers.so
#
# Sudo askpass:
#
# An askpass helper program may be specified to provide a graphical
# password prompt for "sudo -A" support. Sudo does not ship with its
# own askpass program but can use the OpenSSH askpass.
#
# Use the OpenSSH askpass
插件
这 sudo 配置还支持使用插件,如果需要,可以在不改变原始配置的情况下增加其功能 sudo 功能。 用户可以创建允许满足特定需求的第三方插件。
日志记录
我们可以在 /etc/ 中添加一个变量sudo.conf 文件,它将所有用户交互记录到文件或其他输出中。 Sudo 日志记录分为 4 个部分。
- 调试
- 程序
- 日志文件位置
- 子系统和级别
我们可以配置日志记录以包含以下信息。
- 记录什么 sudo 做了 – /var/log/auth.log
- 调试任何问题 sudo – /var/log/sudo_debug
- 捕获一个完整的 sudo 会话 – /var/log/sudo-io
要配置此选项,我们将添加以下参数。
Defaults log_host, log_year, logfile="/var/log/sudo.log"
默认情况下, sudo 日志被写入 syslog 文件。 此外,我们可以指定日志输出将被发送到哪里。
Defaults log_input, log_output
这个参数告诉 sudo 编写用户会话的文本。 有一个命令日志、标准输入/输出通道(stdin、stderr、stdout)的消息,以及一个带有 tty/pty 的日志。
调试
可以设置此选项以在某些事件发生时捕获问题。
其他设置
Sudo 可以启用其他设置,例如:
- Disable_coredump
- 开发者模式
- Group_source
仅举几例。
苏多尔斯
后 sudo 安装后,我们将首先编辑位于此处的配置文件。
/etc/sudoers
最初,所有程序的默认设置都包含在一个 sudoers 文件中。 后来,程序开发人员添加了使用包含语句的选项,它允许选择维护默认或基本 sudoer 文件,同时允许将更精细的配置额外集成到主 sudoers 文件中。 主要配置为 sudo 命令位于 /etc/sudoers 文件。 在这个文件中是单独的变量或配置,它们定义了某些用户或组如何访问命令。 其他配置可以存储在 /etc/sudoers.d 目录。 位于 sudoers.d 目录中的配置文件包含在 sudoers 文件中,使用
#includedir /etc/sudoers.d
多变的。 我们可以在 /etc/sudoers.d 目录中为一个用户或一组用户创建一个配置,该目录将被视为 sudoer 文件的一部分。
文件结构
让我们打开 /etc/sudoers 文件以查看其中包含的内容。 我们将使用我们的 nano 编辑器查看文件。 在 ubuntu 中,默认文件包含以下信息。
[root@host ~]# nano /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:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin 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
范围很广 参数 和 配置 可以添加,但我们将尝试关注最相关的内容,以便我们对该系统的工作原理有深入的了解。 应该注意的是,如果需要对文件进行编辑,则应使用“visudo”命令。 此外,sudoers 文件的格式必须在语法上正确才能使程序正常运行。
默认值
在 sudoers 文件中,有以“默认值”开头的部分。 这些是预选变量,程序没有指定替代项。 这些设置对所有用户都是通用的。
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
默认值 env_reset:此设置使命令在新的最小环境中执行。
默认值 mail_badpass:如果用户正在运行,此设置将邮件发送给 mailto 用户 sudo 没有输入正确的密码。
默认安全路径:此设置指示要用于每个命令运行的“路径” sudo. 如果我们不明确信任运行的用户 sudo,我们可以使用这个变量来拥有一个替代的 PATH 环境变量来限制。
别名
配置中使用了四种别名规范。
# Host alias specification
# User privilege specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
- Host_Alias – 主机名、IP 地址、网络或网络组列表
- User_Alias – 此选项指定一组用户
- Cmnd_Alias – 一组或一组命令和目录 此别名将包括已定义目录中的任何文件,但不包括任何子目录中的文件
- Runas_Alias – 这个别名与用户别名几乎相同,但我们可以通过 uid 指定用户
我们应该关注的主要选项是以下参数。
# User privilege specification
root ALL=(ALL:ALL) ALL
为了更好地定义此设置,我们将进一步解释。
- 第一个ALL是允许使用的用户 sudo 命令。
- 第二个 ALL 定义了在其上的主机(服务器) sudo 可以就业。
- 第三个 ALL 是您运行命令的用户。
- 最后一个 ALL 定义了允许的命令。
此选项表示任何用户都可以从任何终端执行命令,充当 ALL(或任何)用户,并且 run 可以运行任何或所有命令。
通过运行命令 sudo,用户需要输入密码。 这创建了一个 sudo 在 X 分钟内不会再次请求密码的用户会话。 会话生存期由服务器管理员通过 sudo 配置。 如果用户需要注销或结束 sudo 会话,他们可以使用以下命令。
[root@host ~]# sudo -k
15 个须藤示例
这里有几个 sudo 你可以使用的例子。
重新启动系统。
[bob@host ~]# sudo shutdown -r now
列出用户 bob 的 public_html 文件夹中的文件。
[bob@host ~]# sudo -u bob ls /home/bob/public_html
重新验证或延长当前用户的时间范围 sudo 会议。
[bob@host ~]# sudo -v
-k 标志(kill)基本上结束了 sudo 该用户的会话。
[bob@host ~]# sudo -k
在 vim 中以用户身份打开和编辑文件后,使用此 sudo vim 中的命令将文件保存为 root 用户,而不会丢失我们的更改,
[bob@host ~]# vim /etc/file.conf
:w !sudo tee %
以 root 身份运行历史文件中的第 251 个命令。
[bob@host ~]# sudo !251
您是否忘记以 root 身份运行最后一个命令? 使用以下命令轻松地重新运行它。
[bob@host ~]# sudo !!
读取受保护的文件。
[bob@host ~]# sudo cat /etc/passwd
将 repo 附加到我们的 /etc/apt/sources.list
[bob@host ~]# sudo sh -c 'echo "deb https://us.archive.ubuntu.com/ubuntu/ focal universe" >> /etc/apt/sources.list'
制作 /etc/apt/sources.list 的备份副本。
[bob@host ~]# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk
列出最近 60 分钟内修改了哪些文件
[bob@host ~]# sudo find / -mmin 60 -type f
限制进程的 cpu 使用量
[bob@host ~]# sudo cpulimit -p pid -l 50
在文件上设置不可变标志。
[bob@host ~]# sudo chattr +i <file>
采用 sudo 运行多个命令。
[bob@host ~]# sudo -s <<< 'apt update -y && apt upgrade -y'
切换到超级用户帐户。
[bob@host ~]# sudo su
结论
在本教程中,我们学到了什么 sudo 是,它是如何配置的,并审查了它如何将特定权限分配给用户。
您想了解更多关于您的服务器上可用的信息吗? 给我们打电话 800.580.4985,或打开 聊天 或与我们联系,立即与我们知识渊博的技术支持专家或经验丰富的系统管理员交谈!