sudo Linux 不使用密码运行sudo命令

发布时间: 更新时间: 总字数:431 阅读时间:1m 作者: 分享 复制网址

在Linux或类似Unix的系统上,如何在没有密码的情况下使用sudo命令?

配置步骤

  1. 备份sudoers文件
sudo cp /etc/sudoers /root/sudoers.bak
  1. 进入sudoer交互命令
$ visudo

$ sudo visudo
  1. /etc/sudoers 文件中,在名为xiexianbin的用户添加/编辑以下行,以运行/bin/killsystemctl命令:
xiexianbin ALL=NOPASSWD:/bin/systemctl restart httpd.service,/bin/kill

cat >> /etc/sudoers.d/xiexianbin << EOF
xiexianbin ALL = (root) NOPASSWD:ALL
EOF
  1. 保存退出

测试

运行 /bin/kill 时并不需要输入密码即可杀掉进程:

$ sudo /bin/kill <pid>

重启服务也不需要数据密码

$ sudo /bin/systemctl restart httpd.service

F&Q

sudo must be owned by uid 0 and have the setuid bit set

执行 sudo 命令报错:

$ sudo xxx
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
  • 知道root密码

su 登录 root 用户,执行命令

chmod 4755 /usr/bin/sudo
chmod 755 /usr
  • 未知root密码,采用recovery模式恢复

sudo 执行命令 env 不生效问题

原因:/etc/sudoers 配置了 env_reset 默认重置环境变量(安全原因)

解决方法:参考

方法一:可以修改为 Defaults !env_reset 即可实现不重置环境变量

$ cat /etc/sudoers | grep env_reset
Defaults	env_reset

方法二:在 ~/.profile~/.bashrc 中使用 alias 添加环境变量,重新退出后执行即可生效。示例如下

export ABC="abc"
alias sudo='sudo env ABC=$ABC'

ansible 执行时报错:sudo with NOPASSWD

/etc/sudoers 配置用户时,添加 NOPASSWD 即可

admin    ALL=(ALL)    NOPASSWD:ALL,!/bin/su,!/usr/bin/chattr
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数