Eu não acho que haja uma maneira interna de fazer isso.
No entanto, há uma solução bem fácil: você pode adicionar uma função a ~/.bashrc
para agrupar toda a tarefa em um único comando.
Listando os conjuntos de grupos em uma instrução case
(ok para alguns conjuntos de grupos)
function add_user {
[ ! -z "" -a ! -z "" ] || return
case "" in
netadmin)
groups=(netadmin www-data tomcat sambashare ftp)
;;
vmadmin)
groups=(kvm libvirt vboxusers)
;;
*)
printf "Group '%s' is not listed.\n" ""
return
esac
printf "Adding '%s' to group '%s'...\n" "" ""
usermod -aG ${groups[@]} ""
}
Depois disso, por exemplo, add_user netadmin user
adicionará user
a netadmin
, www-data
, tomcat
, sambashare
e ftp
e executando, e. add_user vmadmin user
adicionará user
a kvm
, libvirt
e vboxusers
.
Adicionar outros conjuntos de grupos seria tão fácil quanto adicionar outras entradas à instrução case
após a entrada vmadmin
e antes da entrada *
:
foo)
groups=(bar foobar raboof)
;;
Listando os conjuntos de grupos em um arquivo de configuração externa
Crie um arquivo chamado config
in ~/
com o seguinte conteúdo:
netadmin,netadmin,www-data,tomcat,sambashare,ftp
vmadmin,kvm,libvirt,vboxusers
- O primeiro campo identifica o nome do conjunto de grupos
- Os campos após o primeiro identificam os grupos aos quais o usuário deve adicionar
function add_user {
[ ! -z "" -a ! -z "" ] || exit
groups=( $(awk -F , -v group="" '==group {=""; print; exit}' config) )
if [ ${#groups} -eq 0 ]; then
printf "Group '%s' is not listed.\n" ""
return
fi
printf "Adding '%s' to group '%s'...\n" "" ""
usermod -aG ${groups[@]} ""
}
Depois disso, por exemplo, add_user netadmin user
adicionará user
a netadmin
, www-data
, tomcat
, sambashare
e ftp
e executando, e. add_user vmadmin user
adicionará user
a kvm
, libvirt
e vboxusers
.
Adicionar outros conjuntos de grupos seria tão fácil quanto adicionar outra entrada a ~/config
:
foo,bar,foobar,raboof