如何在Linux或者Unix上不带密码的情况下运行sudo命令

时间:2020-01-09 10:42:21  来源:igfitidea点击:

在Linux或者类似Unix的系统上,如何在没有密码的情况下使用sudo命令?
我以tom @ my-cloud-server-ip身份登录,并禁用了ssh的root登录。
登录后,如何以root用户身份运行一些命令。
我是使用服务器的唯一系统管理员。
如何在Debian/Ubuntu/CentOS Linux云服务器下为名为Tom的用户运行或者执行不带密码的sudo命令?

sudo(超级用户可以)不过是Linux或者类Unix系统以另一个用户身份运行命令/程序的工具。
通常作为root用户或者另一个用户。
您可以委派常见任务,例如重新启动服务器或者重新启动Apache或者使用sudo进行备份,以用于非特权用户。

默认情况下,sudo需要用户在运行命令之前使用密码进行身份验证。有时您可能需要以root特权运行命令,但是您不想使用sudo命令输入密码。这对于脚本编写或者任何其他目的很有用。这可以通过编辑/etc/sudoers文件并设置正确的条目来实现。 您需要考虑允许不使用密码执行sudo命令的任何安全后果。

如何在没有密码的情况下运行sudo命令:

  • 通过输入以下命令来备份/etc/sudoers文件:sudo cp/etc/sudoers/root/sudoers.bak
  • 通过输入visudo命令来编辑/etc/sudoers文件:sudo visudo
  • 在/etc/sudoers文件中,按如下所示在用户的Hyman文件中追加/编辑行以运行/bin/kill和systemctl命令:Hyman ALL = NOPASSWD: /bin/systemctl restart httpd.service, /bin/kill
  • 保存并退出文件。

如何不使用密码执行所有sudo命令?

以root用户身份执行以下命令:

# visudo

或者

$ sudo visudo

追加以下条目以为名为tom的用户运行不带密码的ALL命令:

tom ALL=(ALL) NOPASSWD:ALL

这是我的示例配置文件:
如何为tom用户执行不带密码的sudo

保存并关闭文件。
现在,您可以以root用户身份运行任何命令:

$ sudo /etc/init.d/nginx restart
$ sudo /sbin/reboot
$ sudo apt-get install htop
## get root shell ##
$ sudo -i

请确保只有汤姆才能通过ssh键登录。

如何测试?

只需运行/bin/kill即可杀死没有密码的任何进程:

[Hyman@server ]$ `sudo /bin/kill pid-here`

或者

[Hyman@server ]$ `sudo /bin/systemctl restart httpd.service`