Configuração do Samba

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in fr Éric Seigne 

en to pt Bruno Sousa 

AboutTheAuthor:[A small biography about the author]

Trabalho para o mundo de software livre e, entre outras coisas, desenvolvo aplicações para aceder a base de dados web utilizando utilitários como o PostGreSQL ,MySQL e o PHP. Para tornar livre o meu modo de trabalhar (ser capaz de ter outro trabalho de tempos em tempos... como começar um novo projecto C) comecei, recentemente o meu próprio negócio. Para piorar as coisas, sou ainda um membro da ABUL www.abul.org (e ainda não paguei a minha subscrição!).

Abstract:[Here you write a little summary]

Tentarei, explicar aqui o trabalho que tivémos para implementar um servidor linux-samba, usado como controlador de domínio para uma rede Windows.
Administração de permissões dos utilizadores, dos perfis... serão detalhados.
Este documento assenta na distribuição Debian GNU/Linux 2.2 o que pode explicar que o seu ficheiro smb.conf, por omissão, seja um pouco difirente, de acordo com a sua distribuição.
A versão do samba utilizada para este artigo foi a 2.0.7

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Instalando o Samba

Sopunhamos que sabe um pouco de samba e que este já está instalado no seu servidor.
Se não for o caso, para uma instalação rápida, verifique:
Debian: apt-get install samba
RedHat(Mandrake): rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba*

O ficheiro de configuração: definições gerais

O Samba utiliza só um ficheiro de configuração, onde pode encontrar blocos tais como [global].

Só um ficheiro de configuração para o samba!


<ficheiro smb.conf mínimo>
[global]
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   guest account = pcguest

   log file = /usr/local/samba/log.%m

[tmp]
  comment = Temporary file space
  path = /tmp
  read only = yes
  public = yes
</file>

Se correr o samba com este ficheiro de configuração, as máquinas windows, na sua rede local, serão capazes de ver na sua vizinhança da rede, que a máquina chamada (o nome da máquina Linux) partilha um directório temporário onde pode escrever.

ATENÇÃO: quando actualiza o ficheiro de configuração, deve reiniciar o samba utilizando a script /etc/init.d/samba restart (para a debian)

O ficheiro de configuração, parâmetros "avançados"

Verifiquemos os seguintes parâmetros:

Variáveis Samba

Variável Definição
Variáveis do Cliente
%a Arquitectura do Cliente
Exemplo: Win95, WfWg, WinNT, Samba ...
%I Endereço IP do cliente
%m Nome de NetBios do cliente
%M Nome de DNS do cliente
Variáveis de utilizador
%g Grupo primário do utilizador %u
%H Directório de trabalho do utilizador %u
%u Nome Unix actual do utilizador
Variáveis de partilha
%P Raiz da partilha actual
%S Nome da partilha actual
Variáveis do servidor
%h nome DNS do servidor Samba
%L nome NetBios do servidor Samba
%v Versão do Samba
Variáveis variadas
%T Data e tempo corrente

Exemplos de utilização destas variáveis: se a sua rede aloja máquinas a correr o windows 3.11 e o windows 98, pode criar dois ficheiros de configuração, um para cada sistema. utilizando a variável %a.

Resultado: o nosso ficheiro de configuração

<ficheiro smb.conf>

[global]
printing = bsd
printcap name = /etc/printcap
load printers = yes
guest account = nobody
invalid users = root

; altere o seu nome de netbios
netbios name = pantoufle
; isto é a interface onde deve estar à escuta
; (não precisa do samba noutra interface de rede visto que o samba
; administra a ligação à Internet!)
interfaces = 192.168.0.1/255.255.255.0

; O security user implica que todos os utilizadores tenham um conta unix no
; servidor
security = user

; O nome do grupo de trabalho a que o servidor pertence
workgroup = rycks
; Uma descrição do servidor, de leitura quando se está a apresentar os
; detalhes
; A %h é o nome DNS do servidor e %v a versão do samba
server string = %h server (Samba %v)

; Para além do ficheiro de log syslog, utilizamos também o do samba
syslog only = no

; A informação menos importante é para ser escrita no syslog,
; a restante informação encontra-se em /var/log/smb(nmb)/
syslog = 0;

; Afinemos as ligações!
socket options = IPTOS_LOWDELAY TCP_NODELAY \
SO_SNDBUF=4096 SO_RCVBUF=4096

; Utilizamos palavras-passe encriptadas. Seja cuidadoso,
; todo o cliente W95 tem de ser actualizado com o patch de segurança MS SMB
; O NT4 tem de ser actualizado com o SP3 ou superior...
; Em relação ao W3.11 não consigo lembrar-me:
; provavelmente não suporta palavras-passe encriptadas :(
encrypt passwords = yes

; Este servidor também trabalha como servidor WINS.
; O WINS permite que duas redes, utilizando intervalos diferentes de IP's
; (por exemplo 192.168.0.0/255.255.255.0 e 192.168.0.1/255.255.255.0)
; vejam os recursos partilhados de "outra" rede,
; mal o gateway esteja activo.
wins support = yes

; O nível de OS. Visto que o nosso servidor é o master do domínio, com
; logons locais, etc, é
; "superior" ao servidor NT, se houver algum!
os level = 34

; Administração de Dominio
domain master = yes
local master = yes
preferred master = yes

; Administração das ligações de domínio
domain logons = yes

; Qual a script a correr quando um cliente se liga?
; O %g corresponde ao nome do grupo primário de que o utilizador é membro
logon script = %g.bat
; Em que directório é que se podem encontrar os ficheiros das scripts?
; O %L é o nome netbios do servidor samba
logon path=\\%L\netlogon
; Onde armazenar o perfil dos utilizadores?
; O %U é o login do utilizador
logon home=\\%L\%U\winprofile

; Em que ordem devem ser verificados os resursos a serem encontrados
; pelo nome de uma máquina?
; Note o broadcast no fim ... ao contrário do windows
; que, por base, envia broadcasts.
name resolve order = lmhosts host wins bcast

; Deve o Samba ser utilizado como proxy de DNS?
dns proxy = no

; Preservar o nome dos ficheiros e a sua capitulação
; (Maiúsculas, Minúsculas)
preserve case = yes
short preserve case = yes

; Devemos sincronizar as palavras-passe do windows e do Linux?
unix password sync = yes

; O que deve ser utilizado para a sincronização de palavras-passe
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* \
%n\n *Retype\snew\sUNIX\spassword:* %n\n .

; Tamanho máximo do ficheiro de log,
; previne a saturação do directório /var
max log size = 1000

; Somos um servidor de tempo: uma boa coisa para a sincronizar
; um pouco o tempo das máquinas.
; Utilizaremos esta característica a partir do ficheiro logon .bat
time server = yes

; Especificamos onde está o netlogon.
; Só é utilizado na altura de ligação,
; assim não o temos de tornar público.
[netlogon]
path = /home/netlogon/%g
public = no
writeable = no
browseable = no

; O directório de trabalho para cada utilizador
[homes]
comment = Home Directories
browseable = no

; Pode ele escrever ?
read only = no

; A máscara por omissão do unix
create mask = 0700

; Com o propósito de segurança, a máscara
; de directório também é definida como 700!
directory mask = 0700


; Partilhamos o FTP, é mais fácil tê-lo na vizinahça da rede
; do que ter um programa especifico
[ftp]
path = /home/ftp/pub
public = yes
printable = no
guest ok = yes

; O directório temporário
[tmp]
path = /tmp
public = yes
printable = no
guest ok = yes
writable = yes

; Outro directório temporário especial
; para um utilizador a precisar de extra espaço!
[bigtemp]
path = /home/bigtemp
public = yes
printable = no
guest ok = yes
valid users = erics
writable = yes

</smb.conf file>

O que temos no servidor

De um forma breve, o servidor poderia ter:



<file /home/netlogon/admin.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
</file admin.bat>
   
<file /home/netlogon/teachers/teachers.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\teachers.reg
</file teachers.bat>
   
<file /home/netlogon/pupils/pupils.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\pupils.reg
</file pupils.bat>
   
<file /home/netlogon/teachers/teachers.reg>
[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"
</file teachers.reg>
   
<file /home/netlogon/pupils/pupils.reg>
[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"
</file pupils.reg>
   

Este ficheiro permite a montagem automática do directório pessoal do utilizador no arranque como drive P: e o directório temporário como drive T:. O tempo do sistema também é obtido a partir do servidor samba.

NOTE: o ficheiro .bat deve ter a mudança de linha no "modo DOS". O modo mais fácil para criar este ficheiro é com o notepad, por exemplo, e enviá-lo para o servidor.

Definindo a política de segurança do sistema (C) (TM) (R)

Proteger o Windows, é quase possível, utilizando um controlador de domínio.

Isto é um título! Bem, Roubei-o de um documento da MS respeitante à política de segurança deles.

Assim, para criar uma política de sistema Windows, para, por exemplo, evitar que alguns utilizadores (todos ?) corram o regedit, um programa DOS, etc, tem de utilizar o POLEDIT que se encontra no CD do Windows 98.

Corra o PolEdit, veja a sua ajuda, aponte a informação... este artigo não tem por intenção ensinar-lhe como é que software proprietário funciona.

Logo que o seu ficheiro .POL esteja pronto, copie-o para o servidor samba, para o directório que se encontra na PATH do grupo [netlogon].

CUIDADO: Para clientes W9x, o ficheiro de estratégia do sistema deve ser o CONFIG.POL ... para o WindowsNT é outro nome, e por não ter NT não lho posso dizer:'(
Não, não me envie uma versão NT com o propósito de testes. De qualquer modo, obrigado. Foi muito simpático da sua parte:o)

NOTE: O PolEdit permite-lhe criar grupos de utilizadores e utilizadores, mas ainda não o conseguimos. Só o utilizador criado por omissão é que é tido em conta.

Por exemplo, se eu criar um grupo "admin" no PolEdit, com permissão de editar o regedit, ao ligar-me como "erics" ("admin" sendo o seu primeiro grupo), Eu não posso correr o regeedit:(

Contudo crie um utilizador "erics" no poledit... e trabalhará.

Visto que não nos vemos a criar 1056 utilizadores no poledit e a administração global dos utilizadores é mais interessante, "oferecemos" o seguinte truque:

Para fazer isto, andámos à volta do problema: criámos 3 ficheiros config.pol somente com os utilizadores por omissão, no servidor Linux temos:
/home/netlogon/teachers/CONFIG.POL
/home/netlogon/teachers/teachers.bat
/home/netlogon/pupils/CONFIG.POL
/home/netlogon/pupils/pupils.bat
/home/netlogon/admin/CONFIG.POL
/home/netlogon/admin/admin.bat
E alterámos o ficheiro smb.conf para ter isto em conta:

<smb.conf file>
[netlogon]
; adicionámos o %g para meter o netlogon apontar para um directório
; diferente do grupo de utilizador, no qual o ficheiro config.pol
; corresponde a cada perfil de grupo de utilizador.
path = /home/netlogon/%g
public = no
writeable = no
browseable = no
</smb.conf file>

Configuração das máquinas Windows

Com um pouco de sorte, 20 cliques de rato e um reboot devem ser suficientes para configurar o windows!

Para um cliente do tipo Win98

Clique em Start/Parameters/Configpanel e duplo-clique em Network

Instale:

network configuration

De seguida clique no tab de "Identificação" e forneça o nome de computador e o respectivo workgroup.
Identity

Clique no "Controle de Acesso" e seleccione a checkbox com o controle a nível de utilizador
Access control

Volte novamente ao tab de configuração e dê um duplo-clique em "Cliente para redes MS"
Client for MS network

Não se esqueça de configurar o suporte TCP/IP:
Duplo-clique em TCP/IP
Endereço IP:

A configuração WINS:

Notas "personalização/performance/bom senso?"

No trabalho, rapidamente aparece um estrangulamento devido à utilização dos perfis do windows.

De facto, o perfil está cheio de coisas que a MS decidiu serem importantes como a cache do IE, a cache do OutLook, etc.

Em suma, isto significa que cerca de 10MB serão transferidos ao ligar-se à máquina (contudo, o meu perfil é um "clássico", uma imagem de fundo, ie e outlook...) e 10MB serão transferidos para o servidor ao desligarmos.

10 MB por cada utilizador, numa sala com 15 máquinas (tamanho "normal" de um laboratório, por exemplo), faz 150MB e se o edifício tiver 10 salas... calcule somente o tempo que demoraria quando os utilizadores se desligam ao tocar a campanhia.

Devia antecipar-se e deligar-se 5... (bem tenho de admitir que era o que eu fazia quando era estudante) em vez de passados 5 minutos. É um pouco como a circulação do tráfego das grandes cidades: é melhor ir 10 minutos antes do que passadas 2 horas!

Assim, de acordo com a política que implementar pode ser uma boa ideia montar o directório de trabalho na drive P: (por exemplo, P de Pessoal) para toda a gente e educar os utilizadores: "guarde os seus documentos na drive P e não nos Meus Documentos, caso contrário não poderão ser recuperados".

De seguida, tem de encontrar o software capaz de ser configurado para ter as bookmarks em P:\bookmarks.html e o mesmo para os devidos parâmetros.

Nem sequer sei se tal existe no mundo do Windows!

Se está ciente de uma solução, escreva um artigo acerca disto, isto é conhecimento para partilhar!

Questões e sugestões a seguir

É possivel ter vários grupos de trabalho no mesmo domínio, como é que isto pode ser administrado, é possivel partilhar os problemas entre vários GNU/Linux Samba?

Como utilizar ambos os servidores NT e Samba?

A configuração dos clientes NT: o equivalente ao CONFIG.POL tem outro nome sob o NT.

Um problema real quando se tem um só servidor Samba (e nenhum NT): Estou a trabalhar sob o W98 e quero partilhar um recurso local, a minha impressora por exemplo:

Apresentação da partilha da minha impressora

Seguindo o clique do botão adicionar...

BOAS NOTÍCIAS: alguém me deu a solução. O Suficiente para seleccionar "controle de nível de acesso a recurso" durante o passo 3 da configuração do windows.

Agradecimentos

Ao Bruno <bcarrere(at)asp-france.fr> pelo seu trabalho de prova de leitura e pela sua ajuda preciosa :o)

Ao JohnPerr por me incitar a escrever o meu primeiro artigo para a LinuxFocus, e por o ter traduzido para Inglês.
Ao Michel Billaud também conhecido por MiB por todas as soluções que encontrou para os nossos problemas; ensninou-nos truques como o strace, etc.:o)
Ao Etienne, Éric, e ao homem invisivel cujo nome me esqueci, desculpe-me por isso! Obrigado, então, por ter partilhado o seu conhecimento dos cursos da MS acerca de servidores NT.
Ao Jean Peyratout, precisamos de dizer porquê? Seria muito longo.
A Abul por assim falar
Rycks por me fornecer tempo e recursos para desenvolver e documentar software livre.

Recursos

Livro Online da O'Reilly: http://www.oreilly.com/catalog/samba/chapter/book/index.html

Este documento será actualizado em a secção de documentação da rycks.com