[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Lei de murph...
From: |
Jose Edson Moreno Jr |
Subject: |
Re: [shell-script] Lei de murph... |
Date: |
Fri, 4 Mar 2011 12:41:42 -0300 |
Oi, para ajudar-lhe um pouco mais , para testar o nome de usuario
utilize o seguinte script
# Valida caracteres
echo "${V_login}" | egrep -x
"^[[:lower:]_][[:lower:][:digit:]_-]*[$]?" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Caracteres estranho no username"
exit 1
fi
# Valida tamanho do username
if [ ${#{V_login} -ge 33 ]; then
echo "Numero de caracteres excedido no username"
exit 2
fi
Uma outra solução para os usernames sem home é se utilizar do pam para
criar o seu home, não é belo a solução pois não é uma solução em seu
caso e sim um quebra galho, mas funciona, uma outra abordagem seria
acrescentar os usuarios sem home e somente criar para aquele que
realmente se logar atraves do pam, para isto acrescente ao arquivo
/etc/pam.d/login
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Detalhes em
http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_mkhomedir.html
[]'s
Edson
Em 4 de março de 2011 02:23, Jose Edson Moreno Jr
<address@hidden> escreveu:
> Boa noite ..
>
> Em 3 de março de 2011 19:19, shelleiro <address@hidden> escreveu:
>>
>>
>>
>> Pessoal,
>>
>> Ao configurar o servidor criei umas 10 contas sem problemas com o seguinte
>> script feito para o servidor que enunciei agora a pouco :
>>
>> useradd -p"${V_senha}" "${V_login}" -d /home/"${V_login}" 2>/dev/null
>>
>
> Primeira coisa , verifica no log a causa de erro ... normalmente lá
> você terá uma dica
> Segundo , direcione tudo que ocorre de ero para um log não para o
> null, assim tera algo com o que trabalhar em caso de erro, como agora
> e pegue a saida de retorno pra saber o que ocorreu. Alguns retornos a
> saber:
> 0 - success
> 1 - can't update password file
> 2 - invalid command syntax
> 3 - invalid argument to option
> 4 - UID already in use (and no -o)
> 6 - specified group doesn't exist
> 9 - username already in use
> 10 - can't update group file
> 12 - can't create home directory
> 13 - can't create mail spool
> Terceiro, esta tratando as entradas ? O adduser possue algumas
> restrições/recomendações como :
> - Normalmente é recomendado usar apenas nomes que começam com
> minuscula ou um sublinhado, e que só são seguidos por letras
> minúsculas, dígitos, sublinhados, traços, e,
> opcionalmente, terminado por um cifrão. Em termos de expressão
> regular: [a-z_] [a-z0-9_-]*[$]?
> - Em Debian, as restrições são apenas nomes que não começem com
> ('-') ou que contenha um (':') ou caracteres de controle ( \n, \t, \r
> ) ou um espaço.
> - E que possua no máximo 32 caracteres
>
> PS: Informações do man
>
>>
>> Ao logar como novouser ele pergunta a senha desejada e o login, verifica se
>> existe similar e se não executa este comando, pronto, teoricamente a pessoa
>> já está com Shell e cadastrada no servidor, inclusive criei meu usuário e de
>> MrBits pelo script e estou acessando o servidor, mas agora que liberei o
>> acesso, ele não mais cria o diretório home do usuário e não dá acesso ssh,
>> mas no /etc/passwd está lá cadastrado.
>>
>> Alguma dica pois já tem 22 cadastrados dentre ele pelo menos 15 sem acesso
>> ao ssh por está sem diretório home, tentei criar na mão grande para o
>> pessoal não ficar sem acesso mais não funcionou.
>>
>> for i in `grep "home" /etc/passwd | cut -f6 -d:`
>> do
>> V_user=`echo "$i" | cut -f3 -d\/`
>> mkdir "$i"
>> chown -R ${V_user}.${V_user} ${i}
>> done
>> Alguma idéia, pois só está com acesso os 5 primeiros que cadastrei
>> pessualmente.
>
> Bom, script normalmente é feito ao gosto do cliente, mas eu faria
> desta forma, acho mais limpo e não curto muito o cut usado em
> delimitadores que variam em sua posição, e ficaria de olho nos erros
> caso houvesse :
>
> for v_user in $(awk -F: '$3>500 {printf $1" "}' /etc/passwd); do
> v_home=$(grep "${v_user}:" /etc/passwd | awk -F: '{print $6}');
> mkdir -p ${v_home}
> cp -rpf /etc/skel/.[a-Z]* ${v_home}
> cp -rpf /etc/skel/* ${v_home}
> chown -R ${v_user}.${v_user} ${v_home}
> done
>
> PS: em '$3>500' estou informando que só quero id de usuario maior de
> 500, aqui coloque como esta em seu sistema
>
>>
>>
>
>
> --
> Jose Edson Moreno Jr.
>
--
Jose Edson Moreno Jr.