Bash shell脚本,为用户提供sudo访问权限
通过shell脚本向用户提供sudo访问权限。我想创建一个shell脚本,为用户提供sudo访问权限,并将其添加到sudoers文件中。到目前为止,我已经得到了下面这个。我是编程新手 投入:Bash shell脚本,为用户提供sudo访问权限,bash,Bash,通过shell脚本向用户提供sudo访问权限。我想创建一个shell脚本,为用户提供sudo访问权限,并将其添加到sudoers文件中。到目前为止,我已经得到了下面这个。我是编程新手 投入: $ROOT\u用户-要添加到ROOT用户策略的用户数组 添加用户: rootUsers=(${ROOT_USERS//,/ }) for rootUser in "${rootUsers[@]}"; do echo "Adding user, $rootUser" useradd $user
-要添加到ROOT用户策略的用户数组$ROOT\u用户
rootUsers=(${ROOT_USERS//,/ })
for rootUser in "${rootUsers[@]}"; do
echo "Adding user, $rootUser"
useradd $user
echo "s0m3Pw0rdz!" | passwd --stdin $user
done
echo 'Completed Successfully'
不要让脚本修改sudoers。这是混乱和脆弱的 相反,请使用
groupadd rootusers
为“root用户”创建一个新组,并添加一个sudoers
规则,使他们能够访问:
%rootusers ALL=(ALL:ALL) ALL
现在,您的脚本只需向该组添加新用户即可:
useradd -G rootusers "$user"
以下是您的脚本,其中包含此更改和一些其他已修复的错误:
#!/bin/bash
# Example input
ROOT_USERS="foo,bar"
rootUsers=(${ROOT_USERS//,/ })
for user in "${rootUsers[@]}"; do
echo "Adding user, $user"
useradd -G rootusers $user
echo "s0m3Pw0rdz!" | passwd --stdin $user
done
echo 'Completed Successfully'
同样,这取决于您是否已将sudoers中的
%rootusersall=(ALL:ALL)ALL
手动添加为一次性内容 通过将用户列表作为命令行参数传递,可以使用此脚本将用户添加到suders列表中
#!/bin/bash
#addSudoUsers.sh
while [[ -n $1 ]]; do
echo "$1 ALL=(ALL:ALL) ALL" >> /etc/sudoers;
shift # shift all parameters;
done
您可以以
sudo./addSudoUsers.sh user1 user2 user3
的身份运行此脚本。这种方法的缺点是,如果您添加一个名为“我的名字”或“默认值”的用户或任何其他sudo
有问题的用户,则会导致sudoers
无效sudo
将为所有用户锁定,因此您不能仅用sudo visudo
来修复它。@user8185098使用这种方法,您可以继续使用脚本,只需添加-G rootusers
即可为新用户提供sudo访问权限。我可以通过挂断与您联系吗?不,但是,当评论链变长时,也可以将其转换为聊天。这看起来正确吗?输入:#$ROOT_USERS-要添加到ROOT sudoers策略的用户数组#add USERS rootUsers=(${ROOT_USERS/,/})对于“${rootUsers[@]}”中的rootUser;do echo“Adding user,$rootUser-G rootusers”useradd$user echo“s0m3Pw0rdz!”| passwd--stdin$user done echo“Completed Successfully”#Update sudoers flie sed-i“1 i \#”/etc/sudoers cat>/etc/sudoers No。您的脚本不应修改sudoers
。您应该手动执行一次,这样您的脚本就不必处理它。您如何知道脚本是否“成功完成”?您没有测试useradd
或passwd
命令的结果。您的示例代码的哪一部分与sudo相关?您能否在此详述您的策略,并解释您认为这应该如何运作?