Este documento visa abranger as dúvidas mais comuns de usuários ja experientes vindos do SaMBa 2.x, ou até mesmo novatos no SaMBa 3.0.
Veja bem: Novatos no servidor SaMBa, mas pressupõem-se que você tenha algum conhecimento em servidores linux, que saiba iniciar e parar serviços, editar arquivos de configuração e etc.
Estou usando o Conectiva 10 e o Kurumin 3.0 no artigo, adapte os comandos caso seja necessário.
Não complique, procure binários no CD de instalação de sua distribuição ou use uma ferramenta para baixar a versão mais nova dos sites da mesma. No Conectiva, o comando ficaria (depois do bom e velho 'apt-get update')
# apt-get install task-profile-sambaserver
Esse 'task', no Conectiva Linux, é um meta-pacote que inclui:
[root@gateway root]# rpm -qa | grep samba samba-winbind-3.0.10-72731U10_7cl samba-server-3.0.10-72731U10_7cl samba-doc-3.0.10-72731U10_7cl samba-swat-3.0.10-72731U10_7cl samba-vfs-3.0.10-72731U10_7cl samba-vscan-clamav-3.0.10-72731U10_7cl samba-testprogs-3.0.10-72731U10_7cl samba-common-3.0.10-72731U10_7cl samba-clients-3.0.10-72731U10_7cl
Claro que você pode instalar um a um, via apt, yast ou urpmi em sua distribuição.
No Kurumin, o comando para pegar a versão 3.0 do SaMBa ficaria:
# apt-get install samba -t unstable
Você até pode usar ferramentas genéricas como o webmin ou o swat, ou ainda, ferramentas próprias de sua distribuição como o Mandrake Control Center ou o YaST do SuSE, mas, de toda forma, ajustes finos devem ser feito diretamente no .conf do danado.
Concentre-se então no arquivo que geralmente fica em /etc/samba/smb.conf
No Conectiva, o padrão dele é ótimo, vem com ótimos "hacks" que se tornaram indispensáveis hoje em dia ao invés daquele enorme arquivo default do samba que quase ninguém lê :)
Ainda no Conectiva 10, você tem a opção de dar um 'reload' no serviço, ao invés de dar um 'restart' que nada mais é um 'stop + start', ou seja, você pode fuçar no arquivo sem o medo de escutar reclamação dos usuários dizendo que a rede está caindo! :) Leia mais sobre o reload aqui.
Nas seções seguintes, vou abordar as configurações mais usadas e problemas mais freqüentes. No final, exemplos funcionais do mesmo.
O SaMBa 3.x está bem melhor do que seu antecessor, sem sombra de dúvidas. Leia essa nota:
"O projeto Samba anunciou o lançamento da versão 3.0 oficial de seu sistema, cuja principal novidade em relação à série 2.x é o suporte a ActiveDirectory. Isto significa que ele pode se integrar a redes gerenciadas pela família Windows 2000, identificando-se como um servidor membro e autenticando usuários usando LDAP/Kerberos. Outras novidades, incluindo o suporte a unicode, nova autenticação, o surgimento do comando net (similar ao que existe no Windows) e muito mais você encontra no anúncio de lançamento."
Contudo, você pode ter problemas com os caracteres, anti-vírus, lixeira e outras coisas no novo SaMBa, no qual irei tentar passar algumas dicas rápidas, porém precisas (como uma espadada do Ninja TuxKiller :)
Os artigos anteriores sobre o SaMBa 2.x continuam disponíveis para consulta, e provavelmente você precisará consultar algum deles
Ainda bem que agora temos suporte ao Unicode e não precisamos arrancar a força o UTF do sistema para que os caracteres fiquem normais, como era feio anteriormente.
Faça um teste: Pelo windão, crie um arquivo chamado 'çççããã' e veja no Linux como ele ficou. Agora pense na possibilidade de tentar recuperar um backup do mesmo via linha de comando. Meio difícil, né?
A forma de dizer para o SaMBa que nós somos da Ilha de Vera Cruz e falamos Tupiniquim mudou do SaMBa 2.x para o 3.x, agora é usado:
unix charset = iso8859-1 display charset = cp850
Isso, logicamente levando em consideração que suas estações Windows também falem Português! Caso tenha dúvidas verifique o autoexec.bat da estação, lá no meio daquela tranqueiralhada vai ter o tal o 850.
A lixeira também mudou uma série de coisas. Mas ela continua sendo um módulo VFS (Virtual File System)
Insira o bloco abaixo no seu [global] para fazer efeito em todos os compartilhamentos, ou apenas em um específico.
recycle:exclude = *.tmp *.temp *.o *.obj ~$* recycle:keeptree = True recycle:touch = True recycle:versions = True recycle:noversions = .doc|.xls|.ppt recycle:repository = .recycle recycle:maxsize = 10000000 vfs objects = recycle
Aprenda mais sobre os tais VFS aqui: http://info.ccone.at/INFO/Samba/VFS.html
Se tudo der certo, depois do 'reload' no SaMBa, o arquivo apagado via Windows irá parar em, por exemplo, f:\\.recycle
Se sua lixeira estiver funcionando corretamente, em pouco tempo ela vai lotar até acabar o espaço em seu servidor :) Para evitar isso, agende no seu crontab:
00 18 * * 1-5 find /dados/.recycle/ -type f -mtime 15 -exec rm -rf {} \\;
Cuidado com o comando, que apagará os arquivos que estão na lixeira há mais de 15 dias, de segunda a sexta as 18:00!
Esse é outro cara que mudou, e, como a prima Lixeira, ainda é um módulo VFS.
No Conectiva 10 com o pacote 'clamav' e 'samba-vscan-clamav' instalados e o serviço 'clamd' rodando, insira as linhas abaixo na seção [global] para que o danado atue em todos os compartilhamentos ou insira apenas onde você queira que anti-vírus funcione.
vfs object = vscan-clamav vscan-clamav:config-file = /etc/samba/vscan-clamav.conf
Vale-se notar que o ClamAV não tem permissão de entrar no diretório $HOME dos usuários ;)
Dê uma afinada no seu 'vscan-clamav.conf' e tome cuidado com a perda de desempenho, principalmente com arquivos grandes em rede 10/10 :)
A opção 'verbose file logging' pode ser inicialmente definida para yes, para você acompanhar em /var/log/messages o que está acontecendo no seu servidor.
Recomendo que defina a opção 'max file size' para '10000000' que é algo próximo a 10 MB, senão o windão pode parecer travado quando o usuário tentar abrir aquele Service Pack de 200 MB que está no servidor, e fora que a sua CPU vai ficar um tempinho com 100% de utilização.
Recomendo também que a opção 'infected file action' seja definida para 'quarantine' (o diretório padrão é /var/lib/samba/quarantine)
Para testar, use o Eicar especialmente desenvolvido para essa finalidade.
Se não funcionar com o reload, apele para o restart (do samba e do clamd).
Se for usa-lo em conjunto com a lixeira, faça uma única vez:
vfs object = recycle, vscan-clamav
Esse, na minha opinião, foi uma grade mancada "dos caras" do SaMBa, na minha opinião.
Ao levantar o SaMBa em um gateway (com duas placas de rede), é conveniente que somente a rede interna tenha acesso aos arquivos, concorda? Isso era feito com a linha:
interfaces = eth1
Mas, sei lá porque cargas d'agua, agora também é necessário que a linha abaixo ativada (por padrão ele é 'no')
bind interfaces only = Yes
Aí sim, você restringi o acesso apenas ao pessoal da eth1 (caso essa seja sua LAN). Mas, você pode ter problemas caso use autenticação do SQUID integrada com o SaMBa. Aí a autenticação começa a falhar, mesmo liberando o 'lo' (loopback) junto a eth1.
Você terá que resolver a nível de firewall mesmo. Use-o também se quiser redundância :)
iptables -A INPUT -p tcp -i eth0 --dport 137:139 -j REJECT iptables -A INPUT -p udp -i eth0 --dport 137:139 -j REJECT iptables -A INPUT -p tcp -i eth1 --dport 137:139 -j ACCEPT iptables -A INPUT -p udp -i eth1 --dport 137:139 -j ACCEPT
No Conectiva 10, os "hacks" necessários funcionam que é uma beleza! Testei com uma HP 1200 e foi tudo ok! Certifique-se primeiro, que a impressora imprime localmente (dã...) antes de tentar colocá-la no SaMBa (parece óbvio, mas tem cara um por ae....)
No [global]:
printcap name = cups load printers = yes printing = cups
Nos [share's]:
[print$] path = /var/lib/samba/drivers guest ok = yes browseable = yes read only = yes write list = root [printers] comment = All Printers path = /var/spool/samba browseable = no # Defina 'public = yes' para permitir que o usuário 'convidado' a imprimir guest ok = no writable = no printable = yes printer admin = root
Isso continua igual, e é bem legal fazê-lo :)
veto files = /*.mp3/*.wmv/*.wma/*.ogg/
Meu professor de Integradas, na universidade, mandava a gente conversar com o exercício... agora eu entendo o que ele quis dizer, e digo a vocês: Conversem com o SaMBa!!!! :)
Caso algo dê errado, corra seu terminal para /var/log/samba e veja os arquivos alterados recentemente. Olhe minuciosamente cada detalhe, se necessário, delete todos e de um 'reload' no SaMBa para ver de novo qual é o problema. Eu costumo fazer assim:
# cd /var/log/samba # ll -tr
Assim, os arquivos que foram alterados por último aparecem em baixo. Use o 'tail' para acompanhar em tempo real o que está acontecendo:
# tail -f log.smbd
(aperte crtl+c para fechá-lo)
Caso necessário, delete tudo de novo, aumente no smb.conf o 'debug level' para '=3' (ou mais ainda!), reload no samba e veja de novo o que ocorre. Caso não entenda nada, olhe de novo. Repita esse passo até entender algo!!!! (heheheh)
Claro, consultem também o oráculo (google.com) copiando e colando trechos do log... Vai na fé (isso dizia meu professor de Prolog) que você consegue resolver o pepino ;)
Um pequeno estudo de caso para ilustrar essa ocasião:
Em lindo dia, chovendo pra caramba e um baita trânsito em São Paulo, um cliente me acorda no buzão dizendo que o Windão 2000 dele travou as quatro rodas e o bicho não liga mais. Depois de uma longa viajem até o local, realmente, o windão tava ruim das pernas, nem em modo de segurança ele entrava! (ahhhh, que novidade!!!) =)
O W2k (vou chamá-lo dessa forma a partir de agora) apenas compartilhava uma pasta com uma galera, sem permissão nem restrição nenhuma... e ele era também os servidor do Norton Corporate da galera.
Então fiz o seguinte: Levantei o SaMBa no meu servidor de Internet e e-mail que tinha ao lado rodando Kurumin, joguei os arquivos para lá usando um Live-CD antigo também do Kurumin, deixei o mesmo NetBIOS do defunto, startei o SamBa, a galera acordou e voltou a trabalhar sem saber de nada... hehehhe... enquanto isso, mais uma vez, eu cometi o "seppuku" (suicídio dos samurais :), iniciado pelo comando 'fdisk', logo depois 'format c:' que vocês devem bem conhecer...
A parte que interessa, é a seguinte:
Depois de instalado no Kurumin, o instalador faz algumas perguntas, como por exemplo se deseja senhas criptografadas. Responda que SIM caso trabalhe com algum Windows superior ao 95 (provavelmente sim!!!)
Abrindo o smb.conf dele, deixei como mostra o setup abaixo, e vou comentando melhor ao longo do artigo as principais opções.
##########################################
# Arquivo de configuração do SaMBa
# Por Tiago Cruz - http://linuxrapido.org
# Em 05/01/2005
##########################################
[global]
# Grupo, nome do servidor e comentário
# que aparece no ambiente de rede
workgroup = GRUPO
netbios name = SERVIDOR
netbios aliases = SERVIDOR
server string = Backup dos Vendas
# Acentuação
unix charset = iso8859-1
display charset = cp850
# Tenho duas placas de rede, a eth0 é internet
interfaces = eth1
bind interfaces only = Yes
# Aqui! Somente compartilha!
security = SHARE
# Nem esquenta com o restante por enquanto...
obey pam restrictions = Yes
passdb backend = smbpasswd, guest
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\\snew\\sUNIX\\spassword:* %n\\n *Retype\\snew\\sUNIX\\spassword:* %n\\n .
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = No
panic action = /usr/share/samba/panic-action %d
invalid users = root
include = /etc/samba/dhcp.conf
# 'dados' é o nome que o pessoal estava acostumado a procurar no ambiente
# de rede (\\\\servidor\\dados)
[dados]
comment = Dados do pessoal
path = /dados
force user = nobody
force group = nobody
force create mode = 0777
force directory mode = 0777
guest only = Yes
Alguns detalhes importantes:
Bom, precisei criar a pasta /dados e dar permissão para todos nela:
# mkdir /dados # chown nobody.nobody /dados -R # chmod 777 /dados -R
Verifique também se o usuário 'nobody' existe em seu sistema, e veja que, os arquivos criados dentro do servidor serão acessíveis para todos os usuários devidos devido ao '777'
Veja que tomei o cuidado de deixar o mesmo nome que o servidor tinha e o mesmo nome do compartilhamento!
Nota aos desatentos: Tudo isso foi feito sem nenhum boot no servidor de internet e e-mail =)
Umas horas depois, depois de tudo ok com o W2k de volta ao ar, com o Nortão instalado, parei de novo os usuários e troquei o "netbios name" do SaMBa para que ele não se batesse com o Wk2 (acredite: é bem mais fácil trocar o do samba! Se o windão tiver Active Directoy então....), voltei os arquivos e mais um dia com o final feliz! :)
Nota: O windão teve que continuar lá devido ao Nortão Corporate >:(
Nesse outro cenário, agora vamos montar um cara que será o PDC (Personal Digital Cellular? Não!!! Primary Domain Controller!) da rede, validando usuário e senha, rodando script de logon, sincronizando horário com as estações velhas sem baterias na BIOS :), restrição de acesso e tudo mais!! :)
O .conf pode ficar mais ou menos assim:
#####################################
# Arquivo de configuração do SaMBa
# Por Tiago Cruz e Bruno
# Configurado para SHARE em 05/12/04
# Configurado para PDC em 07/01/05
[global]
# Grupo, nome e comentário
workgroup = EMPRESA
netbios name = SERVER
server string = Servidor de Dados
# Arquivo de log
log file = /var/log/samba/%m.log
# Tamanho maximo do mesmo
max log size = 50
# Nivel de detalhamento dos logs
debug level = 2
# Aqui eu alterei o 'security = SHARE' para o abaixo
security = USER
# Necessário para Windows >= 98
encrypt passwords = yes
# Senha criptografada :)
smb passwd file = /etc/samba/smbpasswd
username map = /etc/samba/smbusers
# Isso tem a ver com o desempenho do servidor
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Essa linha é a fodona que coloca estações 2k para sambar!
add machine script = /usr/sbin/adduser -n -r -g machines -c "Samba machine" -d /dev/null -s /bin/false %u
passdb backend = smbpasswd
# Somente para a LAN
interfaces = eth0
bind interfaces only = yes
# Acentos pt_BR
unix charset = iso8859-1
display charset = cp850
# Opcoes para PDC da rede
domain logons = Yes
os level = 100
preferred master = Yes
domain master = Yes
# Arquivo de lote que sera executado no logon
logon script = todos.bat
# Para não criar profile so server
logon path =
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[homes]
comment = Diretorio do Usuario
browseable = no
writable = yes
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
write list = tiago, bruno, roger
[dados]
comment = Drive de dados do Servidor
path = /dados/empresa
writable = yes
Nessa configuração do [dados], diferente da anteior, o que o usuário criar dentro do servidor vai ser dele, obedecendo o 'umask' do seu servidor Linux. No Kurumin, ele é 022 o que significa que o diretório criado pelo mesmo terá permissão '744' ou seja: 'usuário=rwx, grupo=rx, outros=rx'
Logo, outros usuários não modificação suas pastas ou seus arquivos! Só para lembrar: read = 4, write = 2 e execute = 1. Detalhes no 'man chmod' :)
Outras pontos importantes a comentar:
'add machine script': Essa linha já vem no Conectiva 10, facilitando coisa de 300% o processo de colocar uma máquina com 2000 ou XP na rede pois ela cria a conta de máquina "automagicamente". Não acredita? De uma lida na seção "Colocando o WinXP na rede" do meu artigo "Samba como PDC da rede"
'logon script': Arquivo de lote que as estações irão executar ao logar no PDC. Pode-se usar variáveis, como por exemplo %m ou %u para separar os scripts por usuários ou por maquinas (não necessariamente nessa mesma ordem, detalhes na documentação :)
A parta /home/netlogon deverá ser criada, e o arquivo 'todos.bat' lá deverá existir, ** criado a partir de uma estação windows** para manter a quebra de linhas, ou convertido posteriormente com o utilitário 'unix2dos'. Um exemplo do todos.bat:
@echo off net use F: \\\\server\\share net use h: /home net time \\\\server /set /yes regedit /s f:\\caminho\\arquivo.reg
Veja que você pode mapear o diretório HOME do usuário, sincronizar a data com o servidor, e até mesmo forçar a leitura de um arquivo de registro!!! Legal né? Se você colocar um 'deltree /y c:\*.*' deve funcionar também, heheheh 8-)
'os level': Aumente esse número para que o SaMBa seja realmente o PDC da rede. Acompanhe nos log's, e verá que a cada inicialização ele procura por quem é mais poderoso do que ele, e, como no Highlander (só pode haver um :) ele detona o cara e assume o posto de soberano. Acha que eu estou louco? Então olhe você mesmo nos log's... Abaixe esse número para deixar uma estção Windows ganhar... hehehe
'logon path': Deixe-o em branco se quiser evitar em em todo login/ logoff a estação windows 2k/XP copie todo o seu perfil para o servidor (demora um bocado....)
Bom, agora que temos o PDC, precisamos... de usuários para logar nele!!!
Continua a mesma coisa: Necessário usuário cadastrado e válido no Linux e no SaMBa
# useradd tuxkiller # passwd tuxkiller # smbpasswd -a tuxkiller
Note que esse usuário não terá uma shell válida, sendo impossibilitado de fazer logon via ssh/ ftp!
O que mudou efetivamente, é que o stdin do smbpasswd mudou. "O que quer dizer isso", você pergunta.
Antes, um simples:
# smbpasswd -a login senha
Era capaz de cadastrar um fulano no SaMBa sem ter que digitar e confirmar a senha dele. Imagine esse processo x100 usuários, que legal vai ser para você, responsável pela migração...
Agora, no SaMBa 3.x tive que bolar algo assim:
# ( echo senha ; echo senha ) | smbpasswd -s -a login
"Para que isso??" você me pergunta! Para automatizar em um script, uai!
Eu achei, muito tempo atrás, um script na NET que adicionava e removia usuários no Linux, dei uma mexida no script e agora ele faz o serviço completo: Adiciona no Linux e no SaMBa, digitando uma única vez. Tem até uma cara mais amigável para o usuário final, tanto é que eu configurei o sudo em um conectiva para que um usuário mortal pudesse fazer o serviço sem a minha intervenção!
Para saber mais sobre o sudo, consulte esse outro artigo nosso: Controle o acesso a Internet e diminua sua conta de telefone =)
Segue o danado logo abaixo. O 'changelog' dele não está aí a toa, é para ler e configurar como é solicitado.
Como em toda GPL, só peço que mantenha os créditos e caso faça alguma modificação interessante no código, que mande-o de volta para mim. Assim eu atualizo aqui e todo mundo fica feliz ;)
#!/bin/bash
#######################################################
# Funcionamento básico escrito por leof - www.leofc.tk
# Adicionado recursos para o SaMBa por
# Tiago Cruz - tiagocruz@linuxrapido.org
# Adicionar/Remover usuários no Linux e no SaMBa
# Versão 0.1 criada em 10/10/2003
# -----------------------------------------------------
# Versão 0.2 em 13/10/2003 por Tiago Cruz
# Senha do usuário criada junto com a o SaMBa, mas
# necessita do pacote libgii
# -----------------------------------------------------
# Versão 0.3 em 18/01/05 por Tiago Cruz
# Adicionar com o visudo (pacote sudo) para um usuário
# mortal poder criar e deletar o povo :)
# usuario ALL=(ALL) NOPASSWD: /usr/sbin/useradd
# usuario ALL=(ALL) NOPASSWD: /usr/sbin/userdel
# usuario ALL=(ALL) NOPASSWD: /usr/bin/smbpasswd
# usuario ALL=(ALL) NOPASSWD: /usr/bin/passwd
# usuario ALL=(ALL) NOPASSWD: /bin/cut
# ----------------------------------------------------
# Versão 0.4 em 28/01/05 por Ronivaldo Uriel
# e-mail uriemca@ipiranga.com.br
# Adicionado opção para listar os usuários
#######################################################
Principal() {
clear
dir="Diretório: `pwd`"
kernel="Kernel: `uname -r`"
arquitetura="Arquitetura: `uname -m`"
echo "+-------------------------------------------------+"
echo "| Utilies for LinuX |"
echo "+-------------------------------------------------+"
echo "| Adicionar/ Remover usuários no SaMBa e no Linux |"
echo "+-------------------------------------------------+"
echo "| Escrito por: |"
echo "| Tiago Cruz - www.linuxrapido.org |"
echo "+-------------------------------------------------+"
echo
echo $dir
echo $kernel
echo $arquitetura
echo
echo "Opções:"
echo "1. Adicionar um usuário"
echo "2. Deletar um usuário"
echo "3. Listas os usuários"
echo "0. Sair"
echo -n "Entre com a opção desejada => "
read opcao
echo
case $opcao in
1) Adicionar ;;
2) Deletar ;;
3) Listar ;;
0) exit ;;
*) echo "Opção desconhecida." ; echo ; read msg ; Principal ;;
esac
}
Adicionar() {
echo -n "Entre com o login do usuário: "
read login
echo -n "Entre com o nome completo do usuário: "
read nome
#echo -n "Entre com o depto do usuário: "
#read depto
echo -n "Entre com a senha do usuário: "
stty -echo
read senha
stty echo
echo
echo "Mensagens do sistema: "
echo
sudo /usr/sbin/useradd $login -c "$nome" -s /bin/false; echo "$senha" | sudo /usr/bin/passwd $login --stdin
echo
( echo $senha ; echo $senha ) | sudo smbpasswd -s -a $login
#smbpasswd -a $login $senha
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
}
Deletar() {
echo -n "Entre com o login do usuário a deletar: "
read login
echo
echo "Mensagens do sistema: "
echo
sudo /usr/bin/smbpasswd -x $login
echo
sudo /usr/sbin/userdel $login
echo
echo "Pressione qualquer tecla para continuar..."
read msg
Principal
}
Listar() {
echo "Usuários existentes: "
echo
sudo cut -d: -f1 /etc/samba/smbpasswd | sort | more
read msg
Principal
}
Principal
Recomendo fortemente que começe por aqui que é bem mais fácil! Basta alterar a estação para fazer parte de um domínio, reiniciar e etc... fique esperto nos log's para entender o que está acontecendo. Depois que estiver tudo ok, passe para as NT-like
Elas são chatas, mas basta seguir as dicas do Edinho em SaMBa como PDC: Enfrentando Problemas e Aplicando Soluções! que não tem erro. Como disse antes, o processo melhorou muito e não é mais necessário editar o registro do windão, graças ao SaMBa :)
Resumidamente, não acesse o servidor antes de ingressar em domínio, senão o XP vai reclamar que não pode fazer duas conexões com o mesmo usuário no mesmo servidor, algo assim. Para contornar isso, reinicie a máquina ou mande um 'net session /d' no XP e tente de novo.
O root deverá estar cadastrado no SaMBa (smbpasswd -a root)
Lembre-se que o novo usuário vai "perder" os e-mails, ícones, papel de parede e outras coisas, porque será criado um novo usuário no windão. Portanto, trate de backupear essas coisas em um local acessível para posterior importação.
Nos NT-like (NT, 2000, XP e 2003) você irá perceber que seu usuário é um mísero mortal e que nada pode fazer no sistema. Talvez você precise instalar algum programa, então precisará tornar seu usuário um administrador na máquina NT-like.
Para isso, o --d@niel-- postou umas dicas muito interessante que se resume em:
1-) Criar um grupo de administradores
# groupadd god
Depois, via webmin ou alguma ferramenta de administração de usuários como o kuser, ou diretamente no arquivo de grupos, adicione os usuários que serão administradores. Exemplo de uma entrada no /etc/group:
god:x:1001:tiago,tuxkiller
2-) Mapeie o grupo "Domain Admins" do Samba para o seu grupo
# net groupmap modify ntgroup="Domain Admins" unixgroup=god
Isto associará o grupo "Domain Admins" (Administradores do Domínio) ao grupo "god" (troque pelo que você definiu no passo 1). Verifique se a saída do 'net groupmap list' possui algo semelhante a:
Domain Admins (S-1-5-21-1518627310-3038261392-4081985781-512) -> god
E verifique se esse "Domain Admins" não está duplicado. Se estiver, delete e faça de novo senão vai dar uma confusão tremenda :-)
Se precisar de mais ajuda, consulte o documento Group Mapping MS Windows and UNIX.
Contribuição de Washington de Lima aka Wconserta (olwm AT bol.com.br )
Neste tutorial explicarei como fazer, a partir do smb.conf do PDC do tutorial do Tiago Cruz, a criar uma impressora virtual no samba que numa rede Windows terá a função de converter tudo o que for mandado para esta impressora uma cópia em PDF no home do usuário no samba, isso é muito útil pois ja pensou em converte arquivos do autocad de DWG ou DWF para PDF ou mesmo um documento em DOC e XLS converter em PDF para mandar por e-mail para algum cliente além de arquivos de imagens como gerados num coreldraw, gimp, photoshop converte-los sem perda para pdf e compartilhar por e-mail ou mesmo uma pagina da web você queira salvar em PDF, com esta impressora virtual tudo isso é possível.
Chega de delonga e vamos ao que interessa :-)
Primeiro de tudo vamos instalar os programas que fazem o trabalho, eu uso o conectiva 10 então não irei compilar nada mais sim usar os pacotes oficiais da distro, este esquema foi testado e funcionou nas distro Conectiva 10, mandrake 10, mandrake 10.1, whiteboxlinux.org, sem problemas .
Vamos puxar os pacotes
# apt-get install gv xpdf ghostscript
Com esta linha acima, irá instalar os pacotes que serão usados pois não basta só o GhostScript
Depois de instalado vamos fazer uns teste antes tipo com o gv tente abrir um arquivo PDF e a mesma coisa com o xpdf, tem que abrir em ambos, pois é sinal de que esta tudo funcionando.
Depois vamos para o smb.conf, como disse me baseei no do PDC do Tiago Cruz
#Onde será salvo os pdf gerados, ou seja será salvo no home de cada usuário da rede [home] comment = public = no path = /home/%u browsable = yes writable = yes create mask = 0600 directory mask = 0700 # para compartilhar as impressoras que você tem pelo cups [printers] comment = All Printers path = /var/spool/samba browseable = no printable = yes # Aqui está as linhas da Impressora virtual de gerar PDF [pdf-gen] comment = Gerador de PDF path = /var/tmp guest ok = no printable = yes printing = bsd printcap name = cups print command = /usr/share/samba/scripts/print-pdf "%s" "%H" "//%L/%u" "%m" "%I" "%J" & lpq command = /bin/true
Bem depois que copiou isso no seu smb.conf vamos fazer o script que realmente faz todo o trabalho, este script ele vem por padrão no mandrake 10.
Para criar o script vamos digitar assim
vi /usr/share/samba/scripts/print-pdf
se você não gosta do vi pode usar o mcedit ou kedit numa boa
e copie o script abaixo sem alterar nada
_______________________________________________________________________
#!/bin/bash
# samba-print-pdf
# This is a script which allows you to set up a virtual printer on samba
# which will take the file (generated by a postscript filter on windows)
# and turn it into a PDF, informing the user of where it is when it
# is done
#
# (c) Buchan Milne <bgmilne@cae.co.za> 2002
# License: GPLv2
# Changelog
# v0.0.6 20030428
# - Allow options passed as env. variables from print command
# - Inline and simplify sed (use tr) clean script
# - Ensure file arrives in PREFIX even if TEMP is used without provided name
# - Changes from Joshua M. Schmidlkofer <joshua@imr-net.com> 20030425
# - Debugging, adjustments, and corrections.
# - Stupid sed sanitizing script. [probably horribly inefficient also].
# - Temp file usage cleanup.
# v0.0.5 20020723
# - Add support for preset settings
# - Allow passing of filename provided by client as final filename
#
# Arguments:
# $1 = file (usually passed with %s from samba)
# $2 = unix prefix to where to place the file (~%u should work)
# $3 = windows prefix to the same location (//%L/%u should work)
# $4 = user/computer to send a notification to (%u or %m)
# $5 = IP address of client (%I)
# $6 = Name of destination file without extension (%J)
# $7 = PDF setting (prepress,print,screen etc)
#
# If you want to customise any of the following configuration defaults,
# you can place them in the file /etc/samba/print-pdf.conf.
# If you need to modify anything in this script, please provide me with your
# changes, preferably in such a way that the changes are configurable.
PS2PDF=ps2pdf13
OPTIONS="-dAutoFilterColorImages=false -sColorImageFilter=FlateEncode"
#Values taken from arguments:
INPUT=$1
PREFIX="$2"
WINBASE=$(echo "$3"|sed -e 's,/,\\\\\\\\,g')
#NAME=`echo "$6"|sed -e 's/[&/:{}\\\\\\[<>$#@*^!?=|]/-/g;s/\]/-/g'`
NAME=`echo "$6"|tr '[:punct:]' '[-*]'`
# Source config file if it exists:
CONFFILE=/etc/samba/print-pdf.conf
[ -e $CONFFILE ] && . $CONFFILE
#Values not taken as arguments, could be set via env. vars (?) or config file
KEEP_PS=${KEEP_PS=0}
PERMS=${PERMS=640}
BASEFILE=${BASEFILE=pdf-service}
TEMP="${TEMP=$2}"
UMASK=${UMASK=006}
#Make sure that destination directory exists
mkdir -p "$PREFIX"
INFILE=$(basename $INPUT)
umask $UMASK
[ -n "$NAME" ] && TEMP="$PREFIX"
#make a temp file to use for the output of the PDF
OUTPUT=`mktemp -q $TEMP/$BASEFILE-XXXXXX`
if [ $? -ne 0 ]; then
echo "$0: Can't create temp file $TEMP/$OUTPUT, exiting..."
exit 1
fi
if [ -n "$NAME" ]; then
FINALOUTPUT="$PREFIX/$NAME"
else
FINALOUTPUT="$OUTPUT"
fi
if [ -n "$7" ]; then
OPTIONS="$OPTIONS -dPDFSETTINGS=/${7#pdf-}"
else
OPTIONS="$OPTIONS -dPDFSETTINGS=/default"
fi
WIN_OUTPUT="$WINBASE\\\\"`basename "$FINALOUTPUT"`
#mv "$INPUT" "$INPUT.ps";INPUT="$INPUT.ps"
# create the pdf
$PS2PDF $OPTIONS "$INPUT" "$OUTPUT.pdf" >/dev/null 2>&1
mv -f "${OUTPUT}.pdf" "${FINALOUTPUT}".pdf
# Generate a message to send to the user, and deal with the original file:
MESSAGE=$(echo "Your PDF file has been created as $WIN_OUTPUT.pdf\n")
# Cleanup
if [ $KEEP_PS != 0 ];then
mv -f $INPUT "${FINALOUTPUT}".ps
MESSAGE=$(echo "$MESSAGE and your postscript file as $WIN_OUTPUT.ps")
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".ps "${FINALOUTPUT}".pdf
else
rm -f $INPUT
# Fix permissions on the generated files
chmod $PERMS "${FINALOUTPUT}".pdf
fi
#Remove empty file from mktemp:
rm -f $OUTPUT
# Send notification to user
echo -e $MESSAGE|smbclient -M $4 -I $5 -U "PDF Generator" >/dev/null 2>&1
Como pode ver é um script um pouco complexo mais eu mantive ele original, funciona sem problema no Conectiva 10, Mandrake 10, Whiteboxlinux.org, Red Hat 9, eu só tive problema no Fedora core 3 onde não funcionou, mais isso é devido a estrutura dos diretórios do Fedora ser diferente das outras.
Depois de tudo feito vamos para o Windows configurar a impressora.
Em Painel de Controle - Impressoras e adicione uma impressora "da rede", onde a impressora a ser utilizada é aquela que criamos ou seja “pdf-gen”
O Windows irá mostrar uma caixa de diálogo dizendo que o servidor não possui drivers para a impressora, é só ignorar
Vamos escolha uma impressora POSTSCRIPT,
Eu Recomendo a “HP Color Laser 5/5M PS” pois esta vai gerar um arquivo pdf mantendo as cores do documento original, agora se sua intenção é que seja gerado pdf em preto e braco ai escolha esta “HP Laserjet 4P/4MP Postscript”
Ficamos por aqui qualquer dúvida que possa ter mandar para o FórumGdH sessão Linux que lá eu e mais colegas poderão tirar suas duvidas, não me mande e-mail nem MP pois só ajudo no fórum.
Assim uns artigos que na qual podem ajudar a quem tiver dificuldade são esse e esse, eu me baseie neles em alguma coisa, menos no script e config do smb.conf que foi totalmente diferente, porém pode ajudar a quem tiver dificuldade, se caso o meu não servir para a sua distro.
Espero que este documento ajude alguém como vem me ajudado, afinal, é uma ótima coletânea de quase 1 ano acumulando dicas e resolvendo problemas nessa nova versão do software.
Caso você tenha alguma contribuição para fazer ao este documento, alguma melhoria, correção de português (deve ter vários...), elogio ou algo do tipo, por favor, sinta-se a vontade em me mandar um e-mail (tiagocruz AT linuxrapido.org)
Agora, caso você tenha alguma dúvida, por favor, não me mande e-mail em particular, e sim, poste no fórum para que outras pessoas ajudem a resolvê-la também.
Infelizmente não posso me recordar todos que me ajudaram, de uma forma ou outra, a elaborar este documento, mas indico cegamente o FAQ do meu amigo ZAGO que muita coisa daqui saiu de lá. Também indico como leitura "extra-curricular" o Manual Oficial do SaMBa para que tudo dê certo no final.
Este material é livre para leitura, uso, redistribuição ou modificação, entre outros direitos, conforme definido na licença livre GNU Free Documentation License.