通过shell脚本将用户添加到sudoers

nic*_*444 27 linux sudo sh

是否可以通过shell脚本将用户添加到sudoers文件中?我一直在四处寻找,仍然找不到任何东西.

wch*_*gin 46

您可以直接echo(通过提升权限)直接访问该/etc/sudoers文件:

sudo -i
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
#             ^^
#             tab
Run Code Online (Sandbox Code Playgroud)

(注意用户名和第一个之间的制表符ALL)

或者,对于脚本:

#!/bin/bash
# Run me with superuser privileges
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
Run Code Online (Sandbox Code Playgroud)

然后保存somefile.sh,chmod a+rx它,并运行sudo ./somefile.sh从终端窗口.

要添加多个用户,请将脚本更改为此;

#!/bin/bash

while [[ -n $1 ]]; do
    echo "$1    ALL=(ALL:ALL) ALL" >> /etc/sudoers;
    shift # shift all parameters;
done
Run Code Online (Sandbox Code Playgroud)

然后,像这样运行脚本(假设你保存为addsudousers.sh):

sudo ./addsudousers.sh bob joe jeff
Run Code Online (Sandbox Code Playgroud)

也就是说,空间分隔.

要从文件中读取名称:

nickw444@laptop ~ $ sudo ./addsudousers.sh `cat listofusers.txt`
Run Code Online (Sandbox Code Playgroud)

listofusers.txt 也应该是空间分隔的.

编辑: Jappie Kirk 正确地指出你不能直接调用sudo echo ... >> /etc/sudoers因为>>重定向是由shell处理的,到那时它已经删除了超级用户权限.但是,如果您运行包含echo ... >> /etc/sudoers的脚本并且脚本本身具有超级用户权限,那么一切都应该正常工作.

  • 或者,使用tee如下:`echo"$ MY_USER ALL =(ALL:ALL)ALL"| sudo tee --append/etc/sudoers` (7认同)

Apo*_*llo 9

不,直接回声不起作用,你必须在子shell中运行它.试试这个:

sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"


Bas*_*tch 6

还有该sudo组,您可以添加用户(对于常见配置/etc/sudoers)