当前位置: 首页 > 面试题库 >

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

陆伟
2023-03-14
问题内容

是否可以通过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.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

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

sudo ./addsudousers.sh bob joe jeff

即,以空格分隔。

要从文件中读取名称:

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

listofusers.txt 也应以空格分隔。

编辑: Jappie Kirk
正确地指出,您不能直接调用,sudo echo ... >> /etc/sudoers因为>>重定向是由外壳处理的,而外壳此时已放弃了超级用户特权。但是,如果运行包含的脚本,echo ... >> /etc/sudoers并且脚本本身具有超级用户特权,则一切都应该正常工作。



 类似资料:
  • 我想添加在从文件,我的文件包括: ,但当我运行它路径不添加时,我键入。 但当我输入terminal时,它会添加到我的路径中。 我的档案有什么遗漏吗?

  • 问题内容: 我想在Linux PATH中添加一个小脚本,因此不必在实际放置在磁盘上的地方实际运行它。 该脚本非常简单,它是关于通过代理赋予apt-get访问权限的,我使它像这样: 然后,我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我位于该文件所在的目录中时,一切正常。 我的问题是:如何将此 apt-proxy 添加到 PATH, 以便实际上可以将其称为真正的apt-ge

  • 我想在linux路径中添加一个小脚本,这样我就不必在磁盘上实际运行它。 这个脚本非常简单,是关于通过代理提供apt-get访问权限的,我是这样做的: 然后我将其保存为apt代理。sh,将它设置为x(chmod),当我在这个文件所在的目录中时,一切都正常工作。 我的问题是:如何将这个apt-代理添加到PATH中,这样我就可以实际调用它,就好像它是真正的apt-get一样?[从任何地方] 寻找命令行唯

  • 问题内容: 是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能? 例如: 是的,我知道这行不通,但是有办法实现吗? 问题答案: 您可以使用该命令通过来使功能在远程计算机上可用。有多个选项,具体取决于您要如何运行远程脚本。 要在远程主机上使用该功能: 更好的是,为什么还要麻烦管道: 或者,您可以使用HEREDOC: 如果要发送脚本中定义的所有函数,而不仅仅是发送,请像这样使用: 说明

  • 问题内容: 我有一个相对简单的问题,试图将内联脚本添加到React组件。到目前为止,我有: 我也尝试过: 两种方法似乎都无法执行所需的脚本。我猜这是我所缺少的简单事情。有人可以帮忙吗? PS:忽略foobar,我有一个真正的ID正在使用中,而我不想共享。 问题答案: 编辑:事情变化很快,这已经过时了-查看更新 您是否想在每次渲染此组件时一次或一次将该组件安装到DOM中时一次又一次地获取并执行脚本?

  • 问题内容: 我希望运行一个简单的Shell脚本来简化某些conda环境的管理。在os中通过os激活conda环境在shell中工作正常,但在shell脚本中却存在问题。有人可以指出为什么发生这种情况的正确方向吗? 重复该问题的示例: 问题答案: 错误消息很有帮助-告诉您在运行脚本的子外壳中未正确设置conda。要在脚本中使用conda,您将需要(如错误消息所述)运行(或您的外壳是什么)首先。con