Problema com comando no smb.conf [RESOLVIDO]

1. Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 18/07/2013 - 13:06h

Boa tarde Pessoal, estou passando por um problema muito maluco.

Atualmente eu tenho um servidor que tem a função parecida com o FTP utilizando o CentOS, os usuários internos postam os arquivos num recurso de rede (Naturamente tem uma cota de 200MB), e assim que desmapeiam o recurso, eles recebem um e-mail com link do arquivo, para eles encaminhar para clientes e fornecedores baixar esses arquivos.

No Servidor Atual está tudo ok! funcionando perfeitamente.

Eu criei um novo servidor igual a esse para substituir o atual, porém estou tendo alguns problemas.

no smb.conf dentro do meu recurso de rede chamado downloads
e quando o usuário desmapeia é para ele receber o e-mail informado acima, o o script é executado, o mesmo não envia o e-mail e perde as permissões do arquivo sendMail.sh (Permissão estava como 777 depois passa a ficar 705).

O Outro problema é na opção para voltar a cota do usuário para 200MB quando é feito o desmapeamento. (É preciso as vezes em arquivos maiores que 200MB).
Quando é executado o setquota o /dados perde as permissões dele, e ninguém mais consegue mapear o downloads.

ja testei removendo o setquota, deixando apenas para enviar o e-mail

alguém pode me far uma ajuda?

Detalhe: as configurações estão iguais a do servidor que está funcionando.

Segue abaixo mais informações dos arquivos.


Recurso downloads no sbm.conf. existe a linha abaixo:
=============================================================================================
root postexec = chmod 0705 /dados/downloads/%u ; chmod 0704 /dados/downloads/%u/* ; touch /dados/downloads/%u/index.html ; chmod 444 /dados/downloads/%u/index.html ; /root/shellpro/IFT/sendMail.sh %u ; setquota -u %u 0 204800 0 0 /dados



arquivo sendMail.sh
=============================================================================================
login=$1
log=/root/shellpro/IFT/log/$login.log
echo "Prezado(a) $login , " >$log
echo "Informamos que os arquivos abaixo foram disponibilizados na Internet, através do sistema IFT (Internet File Transfer). " >>$log
echo " " >>$log
echo "ATENÇÃO! Vale lembrar que os arquivos criados hoje, SERÃO EXCLUÍDOS após 2 dias! " >>$log
echo " " >>$log
echo " " >>$log
ls -l /dados/downloads/$login/* | grep -v "index.html" | awk -F"/dados" '{print "http://ift.dominio.com.br"$2 }' >>$log
echo " " >>$log
echo " " >>$log
echo " " >>$log
echo "Atenciosamente," >>$log
echo "Setor de Redes de Computadores " >>$log
echo "OBS.: Alerta Automático, favor NÃO responder este e-mail! " >>$log
cat $log | mail -s "Arquivos Disponibilizados no Sistema IFT (Internet File Transfer)" $login@dominio.com







  


2. Re: Problema com comando no smb.conf [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 18/07/2013 - 13:26h

Como está o SELinux no servidor novo?


3. Re: Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 18/07/2013 - 13:39h

SELINUX=disabled

Está idêntico ao servidor de produção.


4. Re: Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 23/07/2013 - 10:39h

Pessoal, aparentemente é o %u que não está funcionando.
Se eu executo o script digitando o nome do usuário na frente o scritp funciona.

Alguém tem alguma ideia do que pode ser?


5. Re: Problema com comando no smb.conf [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 23/07/2013 - 13:05h

De longe, sem ver exatamente o que está acontecendo em primeira mão, fica um pouco difícil apontar o que pode estar acontecendo.

Eu sugiro que você tente ver se a substituição de %u está realmente falhando. Pode ser somente que o valor acabe ficando num formato que faça pouco sentido para o shell ou para um dos comandos que você invoca (por exemplo: um valor vazio, ou contendo espaços, ou caracteres com os quais o shell possa se confundir, como "?", "$" ou mesmo "\"). Recentemente houve neste fórum uma questão em que o usuário estava tendo problemas com valores de variáveis, e a solução foi simplesmente colocar a substituição da variável entre aspas, para impedir que o shell interferisse na interpretação do valor.

Outra coisa que eventualmente também pode dar problema é se o nome do usuário substituído por %u estiver usando uma combinação de letras maiúsculas e minúsculas que não seja aceita pelos comandos no lado do servidor Samba (lembrando que no mundo UNIX "paulo", "Paulo" e "PAULO" podem designar usuários totalmente distintos).

Eu tenha certa aversão a comandos complicados e/ou compostos num arquivo de configuração, especialmente quando existe substituição de variáveis envolvidas, e quando não fica evidente na documentação de que modo o comando complicado/composto será interpretado. Em lugar de ter essa composição explícita na definição de postexec, eu colocaria somente

postexec = /algum/caminho/script \"%u\" 


e dentro do script /algum/caminho/script eu colocaria os vários comandos. No script, eu teria o pleno controle de como os comandos e os argumentos seriam interpretados (além de outras expansões, como o "*" que você usou), de acordo com o shell (ou outro interpretador de comandos) usado para implementar o script (i.e.: se eu usar bash, valerão as regras do bash; se ksh, as do ksh eyc.). Também ficaria mais confortável escrever código para diagnóstico de eventuais falhas de cada um dos comandos da composição, e até de alterar o script para facilitar a depuração.


6. Re: Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 23/07/2013 - 16:12h

Entendi.

Obrigado pela ajuda,

Colocando somente o comando:

root postexec = /root/shellpro/IFT/sendMail.sh "%u"

Ele funciona perfeitamente. Porém colocando os outros comandos na frente utilizando o ";", ele não executa nada.

O Estranho é que no meu outro servidor esta conforme coloquei no primeiro post e funciona normalmente.

Att.

Daniel


7. Re: Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 06/08/2013 - 15:02h

Pessoal, descobri mais uma coisa, no servidor novo, o postexec não executa nenhum comando caso tenha mais de um comando na frente separado com ";".

Já no servidor antigo, o postexec funciona perfeitamente.


Novo Servidor:
SO: CentOS release 6.4 (Final)
Samba: Version 3.6.9-151.el6

Servidor Antigo que funciona:
SO: Fedora Core release 6 (Zod)
Samba: Version 3.0.23c-2



8. Re: Problema com comando no smb.conf [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 06/08/2013 - 19:01h

";" é um caráter especial não só para o shell, mas também na sintaxe do smb.conf, onde ele designa comentários.

Eis uma das razões pelas quais eu prefiro ter tarefas complexas agrupadas num único script, e invocar esse script de dentro do Samba, cron, ou outra aplicação qualquer.

Quem sabe se você escapar o ";" com um sinal de "\" no smb.conf a coisa funcione? Mas mesmo que funcione, eu ainda recomendo fazer sua composição de um modo seguro, dentro de um script. Assim, quando amanhã os desenvolvedores do samba resolverem alterar novamente a gramática do smb.conf, você não será novamente impactado.


9. Re: Problema com comando no smb.conf [RESOLVIDO]

Daniel
danielviolin

(usa Red Hat)

Enviado em 07/08/2013 - 07:57h

Paulo,

Muito Obrigado pela dica, fiz a partir do script e funcionou perfeitamente.

Muitíssimo Obrigado!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts