Criar usuários com ponto (nome.usuario) no Slackware
Publicado por Charles de Jesus Lima da Costa (última atualização em 06/11/2011)
[ Hits: 7.765 ]
Um grande problema encontrado por diversos administradores de servidores Slackaware é quando seu cliente pede para que os logins de usuário sajam no padrão nome.sobrenome. Trata-se de um problema porque se você simplesmente digitar "useradd nome.sobrenome" recebera a mensagem de erro alertando sobre a sintaxe incorreta do login do usuário devido ao ponto.
E agora? O que fazer quando todos os serviços possuem essa sintaxe?
Podemos fazer essa tarefa na "unha" editando os arquivos /etc/passwd , /etc/shadow e /etc/samba/smbpasswd, e ainda renomear o home dos usuários "mv /home/nomesobrenome /home/nome.sobrenome".
Fala a verdade, nem dá tanto trabalho assim. Mas fazer isso para 100, 200, 500 usuários é terrível!
Esse script trata justamente sobre a criação de usuários com o padrão nome.sobrenome e ainda faz isso em lotes!
Basta ter um arquivo nomeado como nomes no mesmo diretorio do script com a seguinte sintaxe por linha:
nomeusuario nome.usuario senha grupopadrao
Espero que ajude a muitos!
#!/bin/bash ################################################################################################# # # # ESSE SCRIPT CONTORNA A RESTRICAO ENCONTRADA EM ALGUMAS DISTROS (NO MEU CASO SLACKWARE) # # PARA A CRIACAO DE USUARIOS COM UM PONTO NO LOGIN (useradd user.name). # # E FUNDAMENTAL POSSUIR O ARQUIVO 'nomes' NO MESMO DIRETORIO QUE ESSE SCRIPT COM A SINTAXE # # NOMEUSUARIO NOME.USUARIO SENHA GRUPOPADRAO # # # ################################################################################################# # # # Desenvolvido por Charles de Jesus (CeeJay-BR @ Viva o Linux) em 02.11.2011 # # # ################################################################################################# #Backup dos arquivos originais do sistema cp /etc/passwd /scripts/samba/passwd.bak cp /etc/shadow /scripts/samba/shadow.bak cp /etc/samba/smbpasswd /scripts/samba/smbpasswd.bak #Inicio da rotina - Armazena em i cada login contido na primeira coluna do arquivo nomes for i in $(awk '{print $1}' nomes) do #Definindo variaveis nome1=$(grep $i nomes | awk '{print $1}') #Nome sem o ponto nome2=$(grep $i nomes | awk '{print $2}') #Nome com o ponto senha=$(grep $i nomes | awk '{print $3}') #Senha grupo=$(grep $i nomes | awk '{print $4}') #Grupo #Verfica se o usuario ja existe: #Se nao existir o login sem ponto e o login com ponto if [ -z $(grep $nome1 /etc/passwd) ] && [ -z $(grep $nome2 /etc/passwd) ] ; then #Adiciona o usuario criando o diretorio /home/$login, adicionando-o ao grupo definido na quarta coluna do arquivo nomes useradd $i -m -g $grupo #Aplica a senha definida na terceira coluna do arquivo nomes echo $i:$senha | chpasswd #Adiciona o usurio no SAMBA (echo $senha; echo $senha) | smbpasswd -s -a $i #Altera os arquivos do sistema: Substitui o login sem ponto pelo login com ponto sed "s/$nome1/$nome2/g" /etc/passwd > /etc/passwd.tmp rm /etc/passwd mv /etc/passwd.tmp /etc/passwd sed "s/$nome1/$nome2/g" /etc/shadow > /etc/shadow.tmp rm /etc/shadow mv /etc/shadow.tmp /etc/shadow sed "s/$nome1/$nome2/g" /etc/samba/smbpasswd > /etc/samba/smbpasswd.tmp rm /etc/samba/smbpasswd mv /etc/samba/smbpasswd.tmp /etc/samba/smbpasswd mv "/home/$nome1" "/home/$nome2" cp /etc/passwd /scripts/samba/passwd cp /etc/shadow /scripts/samba/shadow cp /etc/samba/smbpasswd /scripts/samba/smbpasswd else #Exibe uma mensagem de erro caso o usuario ja esteja cadastrado no sistema echo "Usuario ja cadastrado!" $nome2 fi done
passa2 - Um sistema de backup/sincronização/cópia de arquivos em SHell Script
Acompanhamento de log squid com hora real
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Linux rodando do hd externo ou ssd? (2)
Firewall iptables - Rotear Interface Cliente (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta