Concentramos na interface do programa o gerenciamento dos usuários do sistema local. O mapeamento de recursos compartilhados pelo Servidor de Arquivos, nas máquinas locais, deverá ser feito por meio de módulo do
pam (pam_mount.so), configurado no arquivo desse módulo (/etc/security/pam_mount.conf), no Servidor.
Optamos por incluir, no código desse programa, a utilização do "sudo", pelo incremento à segurança que ele agrega. Caso o administrador não utilize a ferramenta pode remover as entradas correspondentes no código do programa (recomenda-se que utilize o sudo). Teremos a seguinte interface para o gerenciamento dos usuários:
====================================================
= CADASTRO DE USUARIOS - CLIENTE DE DOMINIO NT/SAMBA
= VERSAO 0.2.0 - SETEMBRO 2008
====================================================
= CLIENTE DE DOMINIO
====================================================
= 1) Adicionar usuario
= 2) Bloquear usuario
= 3) Desbloquear usuario
= 4) Atualizar senha
= 5) Excluir usuario
= 6) Incluir a maquina no DOMINIO
= 7) Sair
====================================================
Digite sua opcao [1-7]:
Esse segmento de código corresponde a função de inclusão de usuários no sistema local:
1) echo -n "Digite o nome do usuario a ser incluido: "
read usuario
echo -n "Digite o grupo do usuario: "
read grupo
sudo useradd -d /home/$usuario -s /bin/bash -g $grupo -m $usuario
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
while [ $resp = sim ];do
echo -n "Digite o nome do novo usuario: "
read nusuario
echo -n "Digite o grupo do novo usuario: "
read ngrupo
sudo useradd -d /home/$nusuario -s /bin/bash -m -g $ngrupo $nusuario
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
if [ $resp = nao ]; then
echo "Adicao de usuario concluida.\n"
fi
break
done
A inclusão de usuários no sistema local deve ser feita em grupos já existentes. Os usuários do domínio serão buscados no Servidor pela ferramenta winbind do pacote samba. A manipulação dos arquivos /etc/passwd e /etc/shadow, realizada pelo programa de gerenciamento, pode ser tratada de forma flexível, mantendo esses arquivos disponíveis para serem gravados pelo aplicativo gráfico de gerenciamento de usuários, ou de forma rígida deixando o acesso a esses arquivos fechado a outras ferramentas. Precisamos realizar a inserção das linhas abaixo para bloquear o acesso a esses arquivos, na inclusão e na exclusão de usuários:
# chattr +i /etc/passwd
# chattr +i /etc/shadow
# chattr +i /etc/group
# chattr -i /etc/passwd
# chattr -i /etc/shadow
# chattr -i /etc/group
Acrescentamos o caractere imutável ao arquivo (+i) após a edição, e o retiramos (-i) antes da execução dos comandos de adição e exclusão (useradd e userdel). Se inserirmos os comandos de alteração de atributo nos locais correspondente do programa, somente por meio do próprio programa será possível incluir e excluir usuários no sistema.
Esse segmento de código corresponde à função de inclusão de usuários no sistema local, se incluirmos as restrições de segurança:
1) echo -n "Digite o nome do usuario a ser incluido: "
read usuario
echo -n "Digite o grupo do usuario: "
read grupo
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
sudo useradd -d /home/$usuario -s /bin/bash -g $grupo -m $usuario
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
while [ $resp = sim ];do
echo -n "Digite o nome do novo usuario: "
read nusuario
echo -n "Digite o grupo do novo usuario: "
read ngrupo
chattr -i /etc/passwd
chattr -i /etc/shadow
chattr -i /etc/group
sudo useradd -d /home/$nusuario -s /bin/bash -m -g $ngrupo $nusuario
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
echo -n "Deseja incluir outro usuario ? [sim/nao] "
read resp
if [ $resp = nao ]; then
echo "Adicao de usuario concluida.\n"
fi
break
done