Passo 4: Como todo serviço de sistema, o SAMBA pode ser iniciado ou pausado caso desejado. Os
daemons do SAMBA (smnd e nmbd) podem ser inicializados, pausados, restartados ou mesmo
obter o status dos mesmsos atraves dos comandos abaixo:
# /usr/local/etc/rc.d/samba start Inicia o serviço;
# /usr/local/etc/rc.d/samba stop Pausa o serviço;
# /usr/local/etc/rc.d/samba restart Reinicia o serviço;
# /usr/local/etc/rc.d/samba status Mostra o status do serviço;
Nota: Os daemons do SAMBA significam, basicamente:
- smbd: O acronimo de smbd é Server Message Block Daemon é tem a função de fornecer serviços
de compartilhamento de arquivos e impressoras para clientes Windows, originalmente Windows
95/98, Windows NT, Windows for Workgroups. Nas versões mais atuais dos sistemas Windows, o
protocolo utilizado para essa finalidade é o CIFS, mas o suporte ao SMB ainda é mantido.
- nmbd: NetBIOS name server to provide NetBIOS over IP naming services to clients, esse é o
significado de nmbd. Esse daemon prove suporte a serviços de nome e navegação para o
protocolo NetBIOS.
Preparando o arquivo de configuração: /usr/local/etc/smb.conf
Passo 5: Agora, precisamos editar o arquivo de configuração do SAMBA e inserir as opções
desejadas no mesmo. Por default, o arquivo principal de configuração do SAMBA fica localizado
no caminho abaixo:
# cd /usr/local/etc/
# ee smb.conf
Um exemplo do arquivo smb.conf pode ser observado abaixo:
[global]
workgroup = WORKGROUP
netbios name = firewall
server string = FreeBSD Samba Server
smb ports = 139
# log file = /var/log/samba/log.%m
max log size = 100
local master = yes
os level = 100
preferred master = yes
preserve case = no
default case = lower
encrypt passwords = yes
security = user
hosts allow = 192.168.1. 127.
[homes]
path = /usr/home/%u/share
valid users = %S
read only = no
create mask = 1700
directory mask = 1700
browseable = no
[arquivos]
comment = Arquivos Compartilhados pelo Samba Server
path = /arquivos_samba
valid users = danilo danilo2
public = no
printable = no
writeable = yes
browseable = yes
create mask = 644
vfs objects = recycle
recycle:keeptree = yes
recycle:versions = yes
recycle:repository = /var/spool/samba/trash/%U
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso
recycle:exclude_dir = tmp, cache
[financeiro]
comment = Arquivos Departamento Financeiro
path = /financeiro
valid users = user user2
public = no
printable = no
writeable = yes
browseable = yes
create mask = 644
Breve explicação sobre as opções (Comentário sobre a mesma):
O SAMBA é dividido em duas sessões: Uma area de configurações Globais e outra area onde
inserimos informações sobre os compartilhamentos de diretórios, impressoras, etc. Na sessão
Global, inserimos configurações que afetam todo o funcionamento do SAMBA, ou seja, afetam
todos os compartilhamentos providos por ele. Já na sessão dos compartilhamentos, podemos definir
configurações que só terão impacto especificamente em um determinado compartilhamento e não
em todos.
[global]
# Nome do dominio ou grupo de trabalho em que o host faz parte;
workgroup = WORKGROUP
# Nome NetBIOS da máquina (o mesmo nome que é definido na instalação do FreeBSD). Essa entrada é opcional;
netbios name = firewall
# Descrição para a função da máquina ou algo desejado pelo Administrador;
server string = FreeBSD Samba Server
# Porta lógica default que o SAMBA utiliza. Essa entrada é opcional, já que esse valor é default;
smb ports = 139
# Define em qual arquivo serão armazenados os log's do SAMBA. Por default, na instalação do SAMBA já são criados dois arquivos para essa função. Os mesmos ficam armazenados em /var/log/samba. Observe que essa linha não está em uso, apenas para exemplo;
# log file = /var/log/samba/log.%m
# Tamanho (em KB) máximo do arquivo de log do SAMBA;
max log size = 100
# Em redes Windows, uma das máquinas fica sempre responsavel por montar e atualizar uma lista dos compartilhamentos disponiveis eenvia-las aos demais, conforme solicitado.O host que executa essa função é chamado de Master Browser. O cargo de Master Browser em uma rede é disputado atraves de uma eleição, onde os parametros os level e preferred master são analisado e comparados entre as máquinas competidoras. Com isso basta definir as opções abaixo para que nosso host consiga entrar nessa disputa, já que o mesmo ira fornecer compartilhamentos de arquivos e impressão:
os level = 100
preferred master = yes
local master = yes
# Faz com que todos os arquivos que sejam inseridos nos compartilhamentos sigam um padrão, ou seja, os nomes de todos os arquivos serão armazenados em caixa baixo (letra minuscula):
preserve case = no
default case = lower
# Opção default do SAMBA. Habilita a criptografia de senhas;
encrypt passwords = yes
# Define o modo de segurança em que o SAMBA irá operar. Todos os modos possíveis são: share, user, server, domain e ads, onde cada um possui sua particularidade e deve ser inserido tendo isso em mente. No caso, user significa que deve existir usuário no sistema e também no SAMBA;
security = user
# Nesse caso, estamos permitindo a conexão com o servidor maquinas presentes na rede Classe C e a Interface de Loopback. Essa entrada poderia ser também como: 192.168.1.0/24 e 127.0.0.0/8;
hosts allow = 192.168.1. 127.
# Ativa o uso do sistema CUPS em conjunto com o SAMBA. Na verdade, nas versões mais novas do SAMBA o CUPS já é o sistema de gerenciamento de impressão padrão. Tenha em mente que o CUPS é mais uma opção para o gerenciamento de impressão. Em muitos casos, o próprio SAMBAsozinho pode compartilhar as impressoras sem problema algum;
printing = cups
# Opção necessária que faz com que o SAMBA carregue as impressoras por padrão, quando a mesma está configurada no arquivo /usr/local/etc/smb.conf;
load printers = yes
# Uma vantagem da utilização de usuários reais no servidor SAMBA, é a vantagem de poder compartilhar os diretórios home de cada usuário cadastrado no sistema, através da seção [homes], conforme mostrada abaixo. Lembre-se: O usuário deve existir no sistema, no SAMBA e possuir um diretório home para que isso funcione;
[homes]
# Caminho do diretório a ser compartilhado localizado no FileSystem do FreeBSD. Nesse caso, muita atenção. Os diretórios home de cada usuário do sistema ficam localizados no diretório /usr/home. A variavel %u utilizada significa nome do usuário cadastrado no sistema, ou seja, cadastrado no FreeBSD. Já o diretório share foi criado justamente para que ele possa ser compartilhado, ao inves do diretório home raiz de cada usuário. O objetivo é fazer com que os demais arquivos (incluse arquivos de configuração do usuário) não apareçam para o usuário, o que em muitos casos pode confundir o mesmo ou o mesmo excluir algo por engano ;-).
path = /usr/home/%u/share
Para usuários que já existam no sistema, é possível criar um
Shell Script onde o mesmo fará a criação do diretório share, ajustará as permissões conforme desejado e tornará o usuário em questão dono do diretório. Segue abaixo como criar o Shell Script:
Entrando no diretório home dos usuários:
# cd /usr/home
Criando o arquivo cria_share.sh com o editor de texto padrão, no meu caso o ee:
# ee cria_share.sh
Segue abaixo o conteudo que deve existir no arquivo a ser criado chamado cria_share.sh:
#!/bin/sh
# Script utilizado para criar o diretorio de nome share dentro do HOME de
# cada usuario no sistema;
echo " "
echo "..:: Iniciando a execucao do script, por favor aguarde ..."
echo " "
cd /usr/home
for i in *; do
mkdir $i/share 2> /dev/null
chmod -R 1700 /usr/home/$i/share 2> /dev/null
chown -R $i /usr/home/$i/share 2> /dev/null
done
echo " ..:: Tarefas realizadas com sucesso ::.. "
Observação: Lembrando que as entradas iniciadas com o caractere # trata-se de um comentário e
não será interpretado pelo shell no sistema.
Após inserir o conteudo, basta salvar o arquivo e executa-lo, conforme exemplo abaixo:
# sh /usr/home/cria_share.sh
# Após criada a pasta share que será compartilhada para cada usuário, a linha abaixo especifica (garante) que a pasta somente ficara acessivel apenas para o próprio usuário, ou seja, somente o usuário com as credências do dono da pasta poderá acessa-la e mais ninguém (exceto o usuário root, que tem permissões em tudo ;-));
valid users = %S
# Habilita a permissão de escrita;
read only = no
# Opções que ajustam as permissões dos arquivos e diretórios inseridos/criados dentro do compartilhamento em questão. Vale lembrar que a permissão mais restritiva (geralmente a imposta no FileSystem do sistema) tem precedência sobre essas entradas do SAMBA:
create mask = 1700
directory mask = 1700
# Em conjunto com a opção valid users, especifica que o compartilhamento somente será visivel e acessivel pelo usuário dono em questão;
browseable = no
[arquivos]
# Comentário para o compartilhamento;
comment = Arquivos Compartilhados pelo Samba Server
# Caminho do diretorio a ser compartilhado localizado no FileSytem do FreeBSD;
path = /arquivos_samba
# Usuários válidos ou que terão permissão para acesso ao compartihamento em questão. Atenção, esse usuário deve estar cadastrado no sistema e tambem na base de dados do SAMBA. Devem obrigatoriamente terem o mesmo nome de usuário:
valid users = danilo danilo2
# Especifica que o compartilhamento não é publico e exige credencias para poder acessa-lo. Essa é uma opção importante e deve ser configurada para restringir o acesso ao compartilhamento em questão;
public = no
printable = no
# Autoriza a leitura e gravação no compartilhamento. Note que essa é apenas uma permissão concedida pelo SAMBA. Caso o diretorio que esteje sendo compartilhado não possua permissões de gravação e escrita para um usuário especifico, a escrita ou leitura do mesmo não será possível;
writeable = yes
# Faz com que o compartilhamento esteja visivel. Caso o valor no seja inserido, o compartilhamento ira desaparecer, ou seja, ficara indisponivel para acesso (utel em casos de manutenção ou alteração de configuração em um único compartilhamento);
available = yes
# Opção que faz com que o compartilhamento fique oculto ou não. Quando com o valor yes define que o compartilhamento ficara vizivel e, quando com o valor no significa que o mesmo ficara oculto, porem acessivel atraves de seu nome de compartilhamento;
browseable = yes
# Permissões que os novos arquivos que forem inseridos nesse compartilhamento terão. Tenha em mente que as configurações de permissão do Filesystem tem privilegios sobre essa configuração do SAMBA, ou seja, se a configuração de permissão do Filesystem for mais restritiva que a do SAMBA, a do Filesystem tem privilegio e será utilizada;
create mask = 644
# Proibe que sejam inseridos arquivos com as extensões listadas abaixo nesse compartilhamento;
veto files = /*.bat/*.exe/*.msi/
# Essa opção adiciona um modulo a mais ao servidor SAMBA. Com ela, podemos ativar o uso de uma lixeira no SAMBA, ou seja, um local para onde arquivos excluídos do compartilhamento irão ser armazenados. Detalhe: Essas opções sobre a lixeira podem ser inseridas na seção Global no arquivo de configuração do SAMBA (para que todos os compartilhamentos tenham uma pasta de lixeira), ou inserido em um único compartilhamento em especifico (para que somente o mesmo tenha uma lixeira nesse caso, vou utilizar essa segunda opção).
vfs objects = recycle
# Essa opção da lixeira, faz com que os arquivos que forem deletados não fiquem misturados no diretório raiz da lixeira. Com essa opção, os arquivos são organizados de uma forma que facilita a identificação do mesmo, caso necessário;
recycle:keeptree = yes
# A opção da lixeira recycle:versions = yes, faz com que o SAMBA mantenha diferentes versões de um arquivo excluído, em vez de manter a ultima versão do mesmo. Os arquivos repetidos passarão a ter uma nomenclatura conforme exemplo abaixo:
Copy #1 Samba.sxw;
Copy #2 Samba.sxw; Etc...
recycle:versions = yes
# Podemos organizar e centralizar todas as lixeiras em uma única partição de disco ou em um único diretório. Nesse caso, estamos configurando para que as lixeiras dos usuários sejam armazenadas no diretório /var/spool/samba/trash. A variavel do SAMBA %U que aparece no final do caminho absoluto do arquivo significa que será criado uma pasta com o nome de cada usuário do sistema, com o objetivo de que cada usuário tenha sua pasta de lixeira e apenas o mesmo consiga acessa-la (ou seja, os demais usuários não conseguirão acesso a mesma).
recycle:repository = /var/spool/samba/trash/%U
Observação: O diretório /var/spool/samba/trash não existe por default. Com isso, é necessário realizar a criação da mesma manualmente e definir as permissões de modo que todos os usuários tenham permissões de escrita na pasta Trash para que possam manipular seus arquivos na lixeira, como excluir, etc. Segue abaixo respectivamente, como criar o diretório e como definir as devidas permissões ao mesmo:
# mkdir /var/spool/samba/trash
# chmod -R 1777 /var/spool/samba/trash
Observação 2: Após criado o diretório e definida as devidas permissões, é necessário criar um outro compartilhamento no SAMBA, especificando o caminho onde a lixeira (ou melhor, onde o diretório que servirá de lixeira está localizado). Segue abaixo como deve ser criado o compartilhamento no arquivo de configuração do SAMBA:
[lixeira]
comment = Lixeira do SAMBA para o compartilhamento arquivos
path = /var/spool/samba/trash/%U
writable = yes
Observação 3: Não esquecer de inserir a variavel %U no compartilhamento, pois é ela quem vai
criar as pastas de cada usuário dentro do diretório /var/spool/samba/trash.
# Ambas as entradas servem para especificar que determinadas extensões de arquivos e nomes de diretórios não devem ficar gravados na lixeira, como no caso são extensões de arquivos e diretórios de arquivos temporários, que podem ser gerados com as movimentações de leitura e escrita nos diretórios. Com isso, esses tipos de arquivos e diretórios serão excluídos da lixeira;
recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso
recycle:exclude_dir = tmp, cache
Para que todas as alterações entram em funcionamento, salve o arquivo de configuração do
SAMBA (/usr/local/etc/smb.conf) e reinicie o daemon do SAMBA.