Bash shell脚本,为用户提供sudo访问权限

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

通过shell脚本向用户提供sudo访问权限。我想创建一个shell脚本,为用户提供sudo访问权限,并将其添加到sudoers文件中。到目前为止,我已经得到了下面这个。我是编程新手

投入:

  • $ROOT\u用户
    -要添加到ROOT用户策略的用户数组
添加用户:

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相关?您能否在此详述您的策略,并解释您认为这应该如何运作?