shell-script-pt
[Top][All Lists]
Advanced

[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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]