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

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

你可以简单地直接向/etc/sudoers文件echo (当然还有提升权限):

 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 正确地指出 ,你不能直接调用sudo echo ... >> /etc/sudoers因为>>重定向是由shell处理的,而这一点已经被超级用户的特权所取代。 但是,如果你运行的脚本包含echo ... >> /etc/sudoers和脚本本身具有超级用户权限,一切都应该工作得很好。

不,直接的回声将不起作用,您必须在子外壳中运行它。 试试这个:

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

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

基于RedHat的发行版上使用:

 su - root 

并输入您的密码,然后:

 echo 'YOURUSERNAME ALL=(ALL:ALL) ALL' >> /etc/sudoers 

在sudoers文件中添加用户。

其他的答案,如产卵一个子shell将工作,但可能无法正常工作,如果你想使用环境变量。 我发现的另一个选择对我来说真的很棒:

 echo "%<user> ALL=(ALL) ALL" | sudo tee -a /etc/sudoers > /dev/null 

这就是说,后见之明是20/20 …如果修改sudoers通过脚本,而不是通过visudo我会认真建议创建一个具有正确的文件权限和内容的备份,因为你可以失去任何sudo权利没有pkexec,物理访问或重启等

 sudo cp /etc/sudoers /etc/sudoers.bak 

以root身份登录到您的机器。 root用户是唯一有权添加新用户的用户。

一旦你登录,你现在可以尝试下面的命令:

  1. 创建一个新用户。

    adduser [用户名]

  2. 给用户添加密码

    passwd [用户名]

  3. 向用户授予root权限只需键入即可编辑visudo文件

    在此处输入代码

找到以下代码行:root ALL =(ALL)ALL

然后添加下面的代码:

 [username] ALL=(ALL) ALL 

原来的帖子会在这个链接上找到Centos 6 – 创建sudoers用户