linux - 通过shell脚本添加用户到sudoers

标签 linux sh sudo

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

最佳答案

您可以简单地 echo(当然,具有提升的权限)直接到 /etc/sudoers 文件:

sudo -i
echo 'nickw444  ALL=(ALL:ALL) ALL' >> /etc/sudoers
#             ^^
#             tab

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

或者,对于脚本:

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

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

要添加多个用户,把脚本改成这样;

#!/bin/bash

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

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

sudo ./addsudousers.sh bob joe jeff

即以空格分隔。

从文件中读取名字:

nickw444@laptop ~ $ sudo ./addsudousers.sh `cat listofusers.txt`

listofusers.txt 也应该以空格分隔。

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

关于linux - 通过shell脚本添加用户到sudoers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8784761/

相关文章:

linux - 在 Linux 下,是否可以 gcore 一个可执行文件已被删除的进程?

node.js - express on alpine linux - 创建 express 应用程序失败

linux - Solr 在 Linux 操作系统上挂起创建核心的原因是什么?

bash - 使用 getopts "b:"和 '' 清空 $OPTARG ./script -b foo''

linux - "echo "密码 "| sudo -S <command>"要求输入密码

azure - 在 Azure Devops SSH 任务中运行 `sudo` 命令的安全方法

linux - 在 Ubuntu 16.04 中,如果没有 sudo 用户,则无法运行 Docker 命令

linux - ARM:禁用 MMU 并更新 PC

bash - 如果输入不完全是 1 行,则返回错误,否则将输入通过管道传递到下一步

linux - 管道传输时,没有此类文件或目录。每个命令分别工作,但在管道传输时则不行