在 Linux 发行版上设置无密码 sudo

在 Linux 发行版上设置无密码 sudo

我最近设置了 Fedora 28 和 Ubuntu 18.04 系统,并希望在这两个系统上配置我的主用户帐户,以便我可以运行sudo命令而不会提示输入密码。

我如何在各自的系统上执行此操作?

答案1

如果您使用wheelFedora 系统上调用的特殊 Unix 组,那么这是非常简单的。您只需执行以下操作:

  1. 将您的主要用户添加到wheel组中

    $ sudo gpasswd -a <primary account> wheel
    
  2. %wheel为组启用 NOPASSWD/etc/sudoers

    $ sudo visudo
    

    然后注释掉这一行:

    ## Allows people in group wheel to run all commands
    # %wheel        ALL=(ALL)       ALL
    

    并取消注释这一行:

    ## Same thing without a password
    %wheel  ALL=(ALL)       NOPASSWD: ALL
    

    Shift使用+ Z+保存此文件Z

  3. 注销并重新登录

    笔记:最后一步是强制性的,以便重新执行您的桌面和任何相应的顶级 shell,显示您的主帐户现在是wheelUnix 组的成员。

答案2

传统上,在基于 Debian 的发行版(例如 Debian/Ubuntu/Mint/Kali/Antix)上,sudo 的默认组是sudo.

因此,要将无密码启用的用户添加sudo到基于 Debian 的系统,步骤如下:

  1. 安装sudo

    在 Debian 中,根据安装选项,您通常最终不会sudo默认安装。

    如果未安装该软件包sudo(例如您没有/etc/sudoers),请以 root 身份运行:

    # apt install sudo
    
  2. 将用户添加到 sudo 组

    如果用户尚未位于 sudo 组中,则将其添加到 sudo 组中(Ubuntu 及其衍生版本会自动将安装中创建的用户添加到 sudo 组中)。

    设置第一个 sudo 用户时,您必须将第一个用户设置为root

    # gpasswd -a <primary account> sudo
    

    当您已有sudo用户时,建议通过该用户在 sudo 组中设置其他用户,作为良好的安全实践:

    $ sudo gpasswd -a <primary account> sudo
    
  3. 修改/etc/sudoers以添加 NOPASSWD 指令

    然后,您可以使用以下命令编辑/etc/sudoerssudo组的默认行:

    $ sudo visudo
    

    并将其更改为:

    # Allow members of group sudo to execute any command
    %sudo   ALL=(ALL:ALL) ALL
    

    到:

    # Allow members of group sudo to execute any command, no password
    %sudo   ALL=(ALL:ALL) NOPASSWD:ALL
    
  4. 注销并重新登录

    如果登录系统,则目标用户必须注销并登录才能使属于该sudo组的用户的更改生效。

笔记:在 Debian 中,组wheel通常用于限制 PAM 中su对组的使用,而不是sudo像基于 RedHat/SuSE 的发行版中那样将其用于命令。

传统上,在基于 Debian 的发行版中,sudo您使用sudo组来执行命令。

答案3

大多数发行版都有这一行/etc/sudoers/

#includedir /etc/sudoers.d

因此,添加一个用户的一种简单方法是在/etc/sudoers.d/目录中创建一个合适的文件;我通常将其命名为要添加的用户:

add_sudoer() {
    if ! test -n "$1"
    then echo "Usage: $0 <user>" >&2; return
    fi

    printf >"/etc/sudoers.d/$1" '%s    ALL= NOPASSWD: ALL\n' "$1"
}

您可能还想Defaults:%s !lecture, !authenticate\n向文件添加和/或其他选项。

答案4

或者你也可以使用Python普多包裹。

安装:

user$ sudo -H pip3 install pudo # you can install using pip2 also

下面是在 python 自动化中使用 root 权限运行命令的代码片段:

user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'

下面是在root权限下运行命令的cmd示例

user$ pudo ls /root
Desktop  Downloads  Pictures  Music

相关内容