gpt4 book ai didi

linux - bash/xargs : How to mass assign user privileges?

转载 作者:行者123 更新时间:2023-12-04 19:29:56 25 4
gpt4 key购买 nike

我创建了一个新用户。我当前的用户显然具有以下权利:

$ groups
max adm cdrom sudo dip plugdev lpadmin lxd sambashare
在哪里 max是当前用户帐户的名称。
我尝试了参数扩展,但 ${groups} 的输出是空的,所以我只是通过管道将组发送到 xargs
$ groups | xargs -I _ sudo usermod -aG _ new_user_name
我收到没有文件夹的错误消息 max adm cdrom sudo dip plugdev lpadmin lxd sambashare因为显然 groups 的输出不被空格分割。
但正如我所说 ${groups}是空的,所以我无法通过管道传输到 xargs。
第二次尝试:
my_arr=(adm cdrom sudo dip plugdev lpadmin lxd sambashare)

$ echo ${my_arr[@]} | xargs -I _ usermod -aG _ new_user_name
即使我 也不会拆分数组的参数不要将参数扩展放在双引号中。
xargs 仍将管道参数视为一个大字符串 adm cdrom sudo dip plugdev lpadmin lxd sambashare什么是正确的解决方案?

最佳答案

usermod将一位或多位用户添加到 一组一次,所以你必须使用一个循环:

for g in "${my_arr[@]}"; do
usermod -aG "$g" new_user_name
done
请注意 xargs默认情况下,在一次调用提供的命令时使用尽可能多的参数,所以如果你使用 xargs ,将使用的参数数量限制为一次( -n 1):
echo "${my_arr[@]}" | xargs -n 1 -I _ usermod -aG _ new_user_name

关于linux - bash/xargs : How to mass assign user privileges?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67584696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com