什么是须藤?
Sudo 是一个 Linux 程序,旨在允许用户在有限的时间范围内使用 root 权限并记录 root 活动。 基本思想是在允许用户完成任务的同时,给予用户尽可能少的权限。 “须藤”一词的意思是 秒代替 你SER,和 做. 它是一个用于基于系统配置文件管理用户权限的程序。 它允许用户以另一个用户的权限运行程序,默认情况下,超级用户。 该程序适用于大多数基于 UNIX 和 Linux 的操作系统。
句法
这 sudo 命令最常被这样调用。
[[email protected] ~]# sudo <command>
安全
许多专家表示,我们不应该以默认方式使用提升的 root 权限。 这是由于使用此提升的权限级别时可能发生的安全和错误相关问题。 由于 root 用户拥有创建、修改或删除设置、文件和文件夹的完全权限,因此 root 用户犯下的任何错误都将产生全球影响。
许多人认为, sudo 命令处理访问限制,但事实正好相反。 Sudo 允许我们以提升或超级用户权限(以 root 身份)运行命令和程序。 通过使用 sudo 配置、程序和命令本身是为特定用户配置的。 与窗户相比, sudo 类似于使用“运行方式”选项。 此外,我们需要注意的是,在某些条件下,可以使用该用户配置中指定的任何人的权限运行程序或命令。
在 Ubuntu 中, sudo command 总是默认设置的,因为在我们创建 root 密码之前没有 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 [email protected] # 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-一世
要配置此选项,我们将添加以下参数。
Defaults log_host, log_year, logfile="/var/log/sudo.log"
默认情况下, sudo 日志被写入系统日志文件。 此外,我们可以指定将日志输出发送到何处。
Defaults log_input, log_output
这个参数告诉 sudo 写入用户会话的文本。 有一个命令日志、标准输入/输出通道(stdin、stderr、stdout)的消息,以及一个带有 tty/pty 的日志。
调试
可以设置此选项以在发生某些事件时捕获问题。
其他设置
Sudo 可以启用其他设置,例如:
- Disable_coredump
- 开发者模式
- Group_source
仅举几例。
苏多尔
后 sudo 安装后,我们将首先编辑位于此处的配置文件。
/etc/sudoers
最初,所有程序的默认设置都包含在一个 sudoers 文件中。 后来,程序开发人员添加了使用 include 语句的选项,这允许选择维护默认或基本 sudoer 文件,同时允许将更细粒度的配置额外集成到主 sudoers 文件中。 主要配置为 sudo 命令位于 /etc/sudoers 文件。 在这个文件中是单独的变量或配置,它们定义了某些用户或组如何访问命令。 额外的配置可以存储在 /etc/sudoers.d 目录。 sudoers.d 目录中的配置文件包含在 sudoers 文件中,使用
#includedir /etc/sudoers.d
多变的。 我们可以在 /etc/sudoers.d 目录中为一个用户或一组用户创建一个配置,这将被视为 sudoer 文件的一部分。
文件结构
让我们打开 /etc/sudoers 文件以查看其中包含的内容。 我们将使用 nano 编辑器查看文件。 在 ubuntu 中,默认文件包含以下信息。
[[email protected] ~]# 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 session,他们可以使用下面的命令。
[[email protected] ~]# sudo -k
15 个 Sudo 示例
这里有一些 sudo 你可以使用的例子。
重新启动系统。
[[email protected] ~]# sudo shutdown -r now
列出用户 bob 的 public_html 文件夹中的文件。
[[email protected] ~]# sudo -u bob ls /home/bob/public_html
重新验证或延长当前用户的时间范围 sudo 会议。
[[email protected] ~]# sudo -v
-k 标志(kill)基本上结束了 sudo 该用户的会话。
[[email protected] ~]# sudo -k
在vim中以用户身份打开和编辑文件后,使用这个 sudo vim中的命令以root用户身份保存文件而不会丢失我们的更改,
[[email protected] ~]# vim /etc/file.conf :w !sudo tee %
以 root 身份运行历史文件中的第 251 个命令。
[[email protected] ~]# sudo !251
您是否忘记以 root 身份运行最后一个命令? 使用以下命令再次轻松地重新运行它。
[[email protected] ~]# sudo !!
读取受保护的文件。
[[email protected] ~]# sudo cat /etc/passwd
将 repo 附加到我们的 /etc/apt/sources.list
[[email protected] ~]# sudo sh -c 'echo "deb https://us.archive.ubuntu.com/ubuntu/ focal universe" >> /etc/apt/sources.list'
备份我们的 /etc/apt/sources.list。
[[email protected] ~]# sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk
列出过去 60 分钟内修改过的文件
[[email protected] ~]# sudo find / -mmin 60 -type f
限制进程的 CPU 使用量
[[email protected] ~]# sudo cpulimit -p pid -l 50
在文件上设置不可变标志。
[[email protected] ~]# sudo chattr +i <file>
利用 sudo 运行多个命令。
[[email protected] ~]# sudo -s <<< 'apt update -y && apt upgrade -y'
切换到超级用户帐户。
[[email protected] ~]# sudo su
结论
在本教程中,我们学习了 sudo 是,它是如何配置的,并审查了它如何将特定权限分配给用户。
您想了解有关服务器上可用内容的更多信息吗? 给我们打电话 800.580.4985,或打开一个 聊天 或立即与我们联系,与我们知识渊博的技术支持专家或经验丰富的系统管理员交谈!