在Ubuntu 和 CentOS 中不用密码运行sudo命令

简介: 通常,不建议所有没有权限的用户在没有密码的情况下运行 sudo。建议您创建一个新的 sudoers 文件并单独分配命令必须运行没有密码的 sudo 命令!

不用密码情况下执行 sudo 命令


是否有可能在 Ubuntu 下不用密码执行 sudo 命令?答案是肯定的。本文中,我们提供了多种方法来实现它。sudo 是在Linux中以“ 超级用户权限 ” 运行所有命令的基本命令。要授予用户 sudo 访问权限,需要将用户添加到sudoers 文件中。在基于 Ubuntu 和 Debian 的发行版中,sudoers 用户组被称为wheel


为什么Ubuntu中的有 sudo 命令


按root运行指令,或用当前用户以外的用户执行命令时,需要运行 sudo 命令,同时系统将提示输入密码。这一步骤将增加您的 Ubuntu 系统的安全性。它还可以防止权限较低的用户从 Ubuntu 系统安装或删除任何应用程序。


为什么需要不用密码运行 sudo 命令?


在某些情况下,您可能需要运行自动进程或自动脚本,这需要在 sudoers 文件中配置,以允许某些用户在没有输入密码的情况下运行 sudo 命令。在下面的步骤中,教你在不输入密码的情况下运行sudo命令的方法。


将用户添加到 sudoers 文件以跳过密码


有关用户的每个信息仅存储在 sudoers 文件中。这决定了用户和组的sudo权限。在编辑此文件之前,我们建议您备份此文件。您可以使用以下命令编辑sudoers文件:

sudo visudo

上面的命令将打开/ etc/sudoers文件。用 visudo 命令编辑文件后,会检查是否有语法错误。建议您在编辑之前备份sudoers文件。只需按照以下命令即可。

sudo cp /etc/sudoers{,.backup_$(date +%Y%m%d)}


上面的命令将备份sudoers文件,日期将附加文件名。

完成备份过程后。您可以开始编辑 sudoers 文件。如需要将可视化编辑器更改为“nano”编辑器,可使用以下命令:

sudo EDITOR=nano visudo


或使用vim编辑器:

sudo EDITOR=vim visudo


该文件中,几乎所有的行都被注释掉了,sudoers文件示例中重要的是:

root ALL=(ALL) ALL

此行表示:root用户可以从所有终端执行,充当所有(任何)用户,并运行ALL(任何)命令。

第一部分是用户,第二部分是用户可以使用sudo命令的终端,第三部分是他可以充当哪些用户,最后一部分是使用时可以运行的命令sudo。

sudoers的例子

operator ALL= /sbin/poweroff

以上命令,使用户操作员可以从任何终端,关闭命令电源。

您还可以为以下项创建别名:users - > User_Alias,以其他用户身份运行命令 - > Runas_Alias,主机 - > Host_Alias 命令 - > Cmnd_Alias

User_Alias OPERATORS = joe, mike, jude Runas_Alias OP = root, operator Host_Alias OFNET = 10.1.2.0/255.255.255.0 Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm

正如您所看到的别名OPERATORS包括用户joe,mike和jude,别名OP包括用户root和operator,别名OFNET包括网络10.1.2.0(所有C类),命令别名PRINTING包含命令lpc和lprm。

因此,典型的sudoers文件可能如下所示:

User_Alias     OPERATORS = joe, mike, jude
 Runas_Alias    OP = root, operator
 Host_Alias     OFNET = 10.1.2.0/255.255.255.0
 Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm
OPERATORS ALL=ALL
#The users in the OPERATORS group can run any command from
any terminal.
linus ALL=(OP) ALL
# The user linus can run any command from any terminal as any
user in the OP group (root or operator).
user2 OFNET=(ALL) ALL
# user user2 may run any command from any machine in the 
OFNET network, as any user.
user3 ALL= PRINTING
# user user3 may run lpc and lprm from any machine.
yujiaao ALL=(ALL) ALL

在编辑器中打开 sudoers 文件后,您需要向下滚动到编辑器的末尾并在其中添加以下代码!

yujiaao ALL=(ALL) NOPASSWD:ALL

用您的用户名替换“ yujiaao ”!(例如:anderson ALL =(ALL)NOPASSWD:ALL),命令NOPASSWD将在终端中运行SUDO命令时跳过密码验证。

如何在为特定命令运行sudo时跳过密码:

您可以允许某些命令使用密码运行sudo,使用以下命令来实现它:

yujiaao ALL=(ALL) NOPASSWD:/bin/cp,/bin/install,bin/remove


完成编辑后,请保存文件并退出终端。

NOPASSWD 是一个“标签”,表示不会请求密码。它有一个名为的伴随命令 PASSWD,是默认行为。标签与规则的其余部分相关,除非在其后面的“双胞胎”标签上被否决。

例如,我们可以有这样的一行:

/etc/sudoers文件

. . .
GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
. . .


另一个有用的标签NOEXEC,可用于防止某些程序中的某些危险行为。

例如,某些程序(如“less”)可以通过在其界面中键入以下内容来生成其他命令:

!command_to_run

这基本上执行用户赋予它的任何命令,具有“less”运行的相同权限,这可能非常危险。

为了限制这一点,我们可以使用这样的一行:

/etc/sudoers文件中

. . .
username  ALL = NOEXEC: /usr/bin/less
. . .



使用 /etc/sudoers.d 文件跳过密码


/etc/sudoers文件中,最后一行:#include /etc/sudoers.d,乍一看,最后一行看起来像注释:

#includedir /etc/sudoers.d


它确实以#开头,通常表示注释。但是该行实际上表明/etc/sudoers.d目录中的文件也将被采纳和应用。

该目录中的文件与/etc/sudoers文件本身遵循相同的规则。任何不是以~号且未包含.的任何文件将被读取并生效。

这主要是为了在安装应用程序时更方便改 sudo权限。将所有关联的规则放在/etc/sudoers.d目录下的单个文件中可以轻松查看哪些权限与哪些帐户关联,并轻松地反向回滚,而无需尝试直接操作/etc/sudoers文件。

/etc/sudoers文件本身一样,您应始终使用visudo 编辑目录/etc/sudoers.d中的文件。编辑这些文件的语法是:

sudo visudo -f /etc/sudoers.d/file_to_edit



此方法是在不输入密码的情况下运行 sudo 命令的备用方法。您可以将新文件身份验证添加到/etc/sudoers.d目录中,对于已在 sudoers 目录的新文件中定义的一些常用命令,sudo 命令可以在没有密码的情况下运行。此步骤将不需要对sudoers文件本身的编辑。

现在您需要打开终端并在sudoers目录中创建新文件。

sudo nano /etc/sudoers.d/new_file


有件事可别忘了:

sudo chmod 0440 new_file

在上面的命令中,将“ new_file ” 替换为您自己的文件名。现在运行相同的命令来运行 sudo 命令而不输入密码。

username ALL=(ALL) NOPASSWD:ALL

上面的命令将帮助您为该特定用户运行没有密码的sudo命令。


结论


通常,不建议所有没有权限的用户在没有密码的情况下运行 sudo。建议您创建一个新的 sudoers 文件并单独分配命令必须运行没有密码的 sudo 命令! 如果您有任何疑问,请在下方发表评论。

如果用出现语法错误参考 https://segmentfault.com/n/13...

相关文章
|
4月前
|
Ubuntu 安全 Linux
CentOS与Ubuntu的深度对比与分析
Ubuntu更新频繁、文档丰富,适用于云服务与容器部署。 与CentOS的比较,Ubuntu基于Debian,而CentOS则源自RHEL。在软件包格式上,Ubuntu采用.deb和.snap,而CentOS则使用.rpm和flatpak。更新方面,Ubuntu使用apt,而CentOS则依赖yum。尽管CentOS以稳定性见长,不常对包进行更新,但这并不意味着Ubuntu在安全性上逊色。事实上,Ubuntu提供了更为丰富的文档和免费的技术支持。此外,Ubuntu的服务器版本在云服务和容器部署方面拥有更多的优势。
|
4月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
427 78
|
3月前
|
存储 Ubuntu 自动驾驶
运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
以上步骤应该能够帮助您成功设置并运行Udacity MPC控制项目,在此过程中您将学习如何应用模型预测控制理论去指导车辆沿着轨迹自主驾驶,在模拟环境下测试其效果。这个过程不但涵盖了理论知识也有实践操作,对于学习自动驾驶车辆控制系统非常有帮助。
173 15
|
4月前
|
Ubuntu 安全 Unix
CentOS 与 Ubuntu 谁与争锋
不论你的选择如何,是 Ubuntu 还是 CentOS,两者都是非常优秀稳定的发行版。如果你想要一个发布周期更短的版本,那么就选 Ubuntu;如果你想要一个不经常变更包的版本,那么就选 CentOS。在下方留下的评论,说出你更钟爱哪一个吧!
|
4月前
|
Ubuntu 安全 小程序
服务器版本的CentOS和Ubuntu哪个更适合你?
但是以上的比较并不说明Ubuntu是不稳定的或者是不安全的,只是以上比较过程中,在稳定性方面Ubuntu稍微逊色了一点。由于Ubuntu在个人桌面电脑的使用率远远高于CentOS,用Ubuntu搭建服务器,如果遇到什么问题,寻找解决方案相对比较容易,这让Ubuntu在选择方面更优于CentOS。如果你是一个初学者,那么毫无疑问Ubuntu是更适合的选择。如果你正在经营自己的公司,在这两者之间,CentOS会更好一些。
|
4月前
|
Ubuntu 安全 Linux
centos和ubuntu有什么区别
总的来说,CentOS 更适合用于服务器和企业级应用,因为它稳定、可靠、安全,并且提供长期支持。而 Ubuntu 则更适合用于桌面应用程序和开发环境,因为它更加注重用户体验和新技术支持。
|
4月前
|
Ubuntu Linux 图形学
centos和ubuntu有什么区别
总之,CentOS和Ubuntu都是常见的Linux操作系统发行版,它们都是免费的、开源的操作系统。它们在更新周期、软件包管理器、默认桌面环境、用户接口和社区支持等方面存在一些不同。因此,选择哪种操作系统取决于用户的需求和偏好,以及特定的使用场景。 如果有任何疑问可以随时评论留言或私信我,欢迎关注我[点击关注],共同探讨。
|
4月前
|
Ubuntu 安全 Linux
CentOS和Ubuntu区别
好的选择。 Ubuntu有一个很大的社区平台,可以提供丰富的文档和经验。 Ubuntu服务器的图形界面适合大多数人的习惯。 因此,如果是初学者且没有特别的要求,就使用Ubuntu服务器吧。 CentOS适用于公司的生产环境,Centos的更新频率不高,仅发布稳定的版本。 网上项目教程大多基于Centos。 Ubuntu面向初学者,CentOS面向公司服务器。
|
4月前
|
Ubuntu 安全 数据挖掘
揭开Linux系统神秘面纱,选择Centos、Debian、Ubuntu?
CentOS、Debian 和 Ubuntu 三种 Linux 操作系统各具优势和适用场景。CentOS 更适合用于服务器应用,Debian 更适合稳定需求的系统环境,而 Ubuntu 更适合用于桌面操作系统和开发环境等。CentOS 和 Debian 相对保守,重视稳定性和安全性;Ubuntu 侧重更新和更好的可用性,重视用户体验。此外, Ubuntu 在市场上的占有率最高。因此,选择适合自己需求的操作系统非常重要,可以帮助用户提高效率和使用体验。
|
4月前
|
存储 Ubuntu 安全
Linux中Centos和Ubuntu的区别
CentOS主要面向服务器环境,而Ubuntu适用于服务器和桌面环境。   CentOS提供更精简的安装,而Ubuntu提供更广泛的开箱即用功能。   CentOS遵循RHEL的所有安全实践,而Ubuntu在安全方面采取更积极的方法。