是否可以通过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.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
因为>>
重定向是由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用户是唯一有权添加新用户的用户。
一旦你登录,你现在可以尝试下面的命令:
创建一个新用户。
adduser [用户名]
给用户添加密码
passwd [用户名]
向用户授予root权限只需键入即可编辑visudo文件
在此处输入代码
找到以下代码行:root ALL =(ALL)ALL
然后添加下面的代码:
[username] ALL=(ALL) ALL
原来的帖子会在这个链接上找到Centos 6 – 创建sudoers用户