Em / etc / profile add:
if [ 'id -ng' = "the_cool_group" ] ; then
# do stuff for people in the_cool_group
fi
É possível executar algum arquivo bashrc para todos os usuários em um grupo? Se você pode fazer isso em todo o sistema em / etc / profile, então porque não para um grupo de usuários?
Você pode adicionar algo assim a /etc/bash.bashrc
:
# running group-based bashrcs
for group in $(id -Gn); do
group_bashrc=/etc/bashrc-by-group/$group
if [ -f "$group_bashrc" ] && [ -r "$group_bashrc" ]; then
command . "$group_bashrc"
fi
done
Em seguida, você pode criar um /etc/bashrc-by-group/mygroup
e colocar as inicializações para os membros do grupo mygroup
lá.
Isso pressupõe que seus grupos sejam bem domados: que os nomes dos grupos não contenham caracteres em branco, barra ou curinga, que eles não sejam .
ou ..
e que você tenha um mapeamento de um para um. entre o nome do grupo e o id do grupo. Caso contrário, você pode usar id -G
em vez de id -Gn
e usar /etc/bashrc-by-group/groupid
.
/etc/profile
é visto por todos os usuários. ~/.profile
é visto pelo usuário que efetuou login: é um arquivo no diretório pessoal do usuário e cada usuário possui seu próprio diretório; o programa de login define a variável de ambiente HOME
para o caminho do diretório pessoal do usuário. O mesmo vale para outros arquivos como /etc/bash.bashrc
e ~/.bashrc
- muitos aplicativos têm um arquivo de configuração de todo o sistema em /etc
e um arquivo de configuração por usuário no diretório pessoal do usuário.
Não há mecanismos semelhantes para grupos - os grupos não têm um diretório inicial. Portanto, não há maneira direta de aplicar um arquivo de configuração a todos os usuários de um grupo.
Como outras respostas mostraram, você pode adicionar comandos em um arquivo de inicialização de shell em todo o sistema dentro de uma instrução condicional para executá-los somente quando o usuário pertencer a um grupo específico. Observe que um usuário pode pertencer a mais de um grupo. Cabe a você decidir se deseja executar comandos somente quando o grupo for o grupo principal do usuário ou sempre que o usuário pertencer ao grupo.
case "$(id -gn)" in
foo) somecommand;; # the user's primary group is foo
esac
case ":$(id -Gn | tr \n :)" in
*:foo:*) somecommand;; # the user belongs to the group foo
esac
Sobre a diferença entre .profile
e .bashrc
, consulte Existe um equivalente ".bashrc" arquivo lido por todos os shells?