Linux visudo 命令

Linux visudo 命令在类 Unix 操作系统上 visudo 命令编辑 sudo 命令使用的 sudoers 文件 要更改允许哪些用户和组运行 sudo 请运行 visudo 如果运行 sudo 的用户不符合 sudoers 中的身份验证配置 他们将被拒绝以升级的权限运行命令 您不应通过在文本编辑器中打开来直接编辑 sudoers 相反 使用 visudo 对其进行编辑 这将在将更改保存到磁盘之前验证其有效性 描述 visudo 编辑 sudoers 文件 该文件定义了具有管理员权限的用户和组 Visudo 以安全的方式编辑 sudoers

在类 Unix操作系统上,visudo命令编辑sudo命令使用的sudoers文件。要更改允许哪些用户和组运行sudo,请运行visudo

如果运行sudo的用户不符合sudoers 中的身份验证配置,他们将被拒绝以升级的权限运行命令。

您不应通过在文本编辑器中打开来直接编辑sudoers。相反,使用visudo对其进行编辑,这将在将更改保存到磁盘之前验证其有效性。

描述

visudo编辑sudoers文件,该文件定义了具有管理员权限的用户和组。

Visudo 以安全的方式编辑 sudoers 文件,类似于vipw安全地编辑passwd文件的方式。Visudo 针对多个同时编辑锁定 sudoers 文件,提供基本的完整性检查,并检查解析错误。如果 sudoers 文件当前正在由其他人编辑,或者由您在另一个会话中编辑,您将收到一条消息,稍后再试。

有一个visudo使用的一个或多个编辑器的硬编码列表,在编译时设置。默认值为vi。

笔记

默认情况下, visudo 不支持VISUALEDITOR 环境变量,许多程序使用它们来确定默认文本编辑器。但是,如果使用–with-env-editor选项配置 visudo或在 sudoers 文件中设置了env_editor 默认变量,则visudo使用VISUALEDITOR定义的任何编辑。但是,这样做会使您的系统容易受到安全漏洞的攻击,因为它允许用户通过设置VISUALEDITOR来执行他们想要的任何程序。

Visudo 会在编辑后解析 sudoers 文件,如果出现语法错误,将不会保存更改。发现错误后,visudo 会打印一条消息,说明发生错误的行号,用户将收到“现在怎么办?” 提示。在提示符下,输入e重新编辑 sudoers 文件,输入x退出而不保存更改,或输入Q退出并保存更改。“Q”选项应该非常小心地使用,因为如果 visudo 发现解析错误,那么sudo也会如此,并且没有人可以运行sudo再次,直到错误被修复。如果在检测到解析错误后键入“e”来编辑 sudoers 文件,则光标将放置在发生错误的行上,如果编辑器支持此功能。

句法

visudo [-c] [-h] [-q] [-s] [-V] [-f sudoers] 

选项

-C 启用仅检查模式。将检查现有的sudoers文件是否存在语法错误、owner和mode。除非指定了-q选项,否则将在标准输出中打印一条消息,描述sudoers的状态。如果检查成功完成,visudo将退出,值为0。如果遇到错误,visudo将退出,值为1
-f sudoers 指定备用sudoers文件位置。使用此选项,visudo将编辑(或检查)您选择的sudoers文件,而不是默认的/etc/sudoers。使用的锁定文件是指定的sudoers文件,其中附加了“.tmp”。仅在仅检查模式下,-f的参数可能是,表示将从标准输入读取sudoers
-H -h(帮助)选项导致visudo命令打印一个简短的帮助信息到标准输出并退出。
-q 启用安静模式。在此模式下,不会打印有关语法错误的详细信息。此选项仅在与-c选项结合使用时才有用。
-s 启用对sudoers文件的严格检查。如果在定义之前使用别名,visudo会认为这是一个解析错误。请注意,无法区分别名和仅由大写字母、数字和下划线 (‘ _ ‘) 字符组成的主机名或用户名。
-V -V(版本)选项导致visudo命令打印其版本号并退出。

sudoers 文件

典型的 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

此处,“ root ALL=(ALL:ALL) ALL ”表示登录到任何主机名的用户root可以以任何用户或组的身份运行任何命令。该指令的一般形式是:

user hostname=(runas-user:runas-group) command 

特殊词ALL可用于这些值中的任何一个,表示允许任何值。

如果user%开头,则将其解释为组的名称,并且该指令适用于该组中的所有用户。因此,“ %admin ALL=(ALL) ALL ”这一行允许属于admin组的任何用户以任何用户或组的身份运行任何命令。三行之后,为组sudo 的成员定义了相同的权限。

所以,通过这个配置,如果你想让一个用户拥有sudo权限,你可以将他们添加到adminsudo组中,完全不需要编辑sudoers。在这种情况下,命令:

usermod -aG sudo hope 

将授予用户希望下次登录时的sudo 权限。有关如何使用usermod更改用户组成员身份的更多信息,请参阅usermod命令。

如果您不想拥有专用的sudo组,则可以通过在文件中的任意位置添加一行,直接在 sudoers 中为用户定义 sudo 权限。例如,为了让用户hope获得完整的 sudo 访问权限,请添加:

hope ALL=(ALL:ALL) ALL 

然后保存文件并退出 visudo 启动的文本编辑器。

重要文件

/etc/sudoers sudo命令的权限配置。
/etc/sudoers.tmp 锁定文件,可防止对sudoers 进行多次同时编辑。

例子

要编辑sudoers文件,请以 root 身份运行visudo。使用su 将用户切换到 root (需要root密码,与您的用户密码不同):

su
Password: 

然后运行visudo

visudo

或者,如果您已经拥有 sudo 权限,请使用sudo运行visudo

sudo visudo 
[sudo] password for user: 

Sudoer 指令

以下是运行visudo时添加到sudoers的行示例:

hope ALL=(ALL:ALL) ALL 

用户hope可以以任何用户或组的身份运行所有命令,登录到此配置适用的任何主机。

%hope ALL=(ALL:ALL) ALL 

同上,除了权限适用于hope组的任何成员(可能包括也可能不包括用户hope)。

hope myhost=(mysqluser:mysqlusers) mysqldump 

用户hope,当登录到主机myhost 时,可以以用户mysqluser或组mysqlusers的成员身份运行命令mysqldump。例如,此指令将允许用户hope运行此命令:

sudo -u mysqluser -g mysqlusers mysqldump 

su — 成为超级用户或其他用户。
sudo — 以超级用户身份执行命令。
vi — 基于ex视觉模式的文本编辑器。
vipw — 安全地编辑密码文件。






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216671.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:20
下一篇 2026年3月18日 上午11:20


相关推荐

  • Git 忽略一些文件不加入版本控制

    Git 忽略一些文件不加入版本控制

    2021年10月20日
    49
  • 使用offerShow小程序查询程序员薪水

    使用offerShow小程序查询程序员薪水鱼皮和小强两位大佬推荐的查询程序员薪水的神器——offerShow小程序。输入想要查询的公司名+岗位名/城市名,就可以查询到我们想要了解的薪资了。信息来源都是匿名分享,真实可信。例如:

    2022年8月5日
    11
  • VPC网络梳理

    VPC网络梳理简介私有网络 VPC 私有网络是针对公有云的基础网络 经典网络 来定义的一种概念 VPC VirtualPriva 是公有云上自定义的逻辑隔离网络空间 是一块可我们自定义的网络空间 与我们在数据中心运行的传统网络相似 托管在 VPC 内的是我们在私有云上的服务资源 如云主机 负载均衡 云数据库等 我们可以自定义网段划分 IP 地址和路由策略等 并通过安全组和网络 ACL 等实现

    2026年3月20日
    2
  • kotlin 初始化数组

    kotlin 初始化数组为什么 80 的码农都做不了架构师 gt gt gt

    2026年3月26日
    1
  • Java编程思想重点笔记(Java开发必看)「建议收藏」

    Java编程思想重点笔记(Java开发必看)「建议收藏」Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理

    2022年7月4日
    26
  • Java学习网站推荐

    Java学习网站推荐学习Java不仅依靠自身的努力,还要多看一些相关技术文档,那么必不可少的就是学习Java的网站,本人整理收集一些Java学习网站,这些网站可以提供一些最新Java的资料,有时定期开设讲座等线下活动,而且里面的一些Java相关的问题以及讨论,不仅适用于Java小白程序员,而且还适用于一些Java大神,其实外网有很多比较专业的Java学习网站,但是鉴于为Java小白推荐网站,立足当下!!!所以推…

    2022年5月14日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号