Preparando o Ambiente para Instalação
Passo 1: Devemos realizar a configuração de rede do sistema FreeBSD para
que o mesmo possa se conectar a Internet. A configuração de rede pode
ser feita de duas maneiras no FreeBSD: Estaticamente ou Dinamicamente.
Obtendo configurações de endereçamento IP manualmente:
Para definirmos as configurações de endereçamento IP ao host de maneira
manual, devemos inserir os parametros desejado dentro do arquivo de
configuração do sistema /etc/rc.conf, conforme exemplo abaixo:
# ee /etc/rc.conf
Obs.: Ao invés do editor
ee, você pode usar qualquer outro que desejar como o
vi, por exemplo.
ifconfig_em0=”inet 192.168.1.10 netmask 255.255.255.0”
defaultrouter=”192.168.1.254”
Explicando:
- ifconfig_em0=”inet 192.168.1.10 netmask 255.255.255.0”: Comando
utilizado para definir o endereço IP e Mascara de Sub-Rede do Host em
questão;
- defaultrouter=”192.168.1.254”: Comando utilizado para definir o Default Gateway do Host em questão;
Feito isso, basta salvar o arquivo e sair. Para que as alterações feitas
no arquivo /etc/rc.conf entrem em funcionamento, basta reiniciar o
sistema (comando reboot, init 6, shutdown -r now) ou executar o script
/etc/netstart, conforme exemplo abaixo:
# sh /etc/netstart
Devemos tambem configurar os Servidores de Nomes (DNS) que o Host irá utilizar. Como na maioria dos sistemas BSD e
Linux, essa configuração é feita no arquivo de configuração /etc/resolv.conf. Segue abaixo exemplo do arquivo:
# ee /etc/resolv.conf
#Conteudo do Arquivo:
search localdomain.my.domain
nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 8.8.8.8
Explicando:
- search localdomain.my.domain: Determina que caso seja solicitada a
resolução de algum nome sem dominio, automaticamente será incluido o
dominio “localdomain.my.domain”;
- nameserver 208.67.222.222: Especifica o Endereço IP do Servidor DNS
que resolverá os nomes para o Host. Várias entradas podem existir, uma
em cada linha;
Obtendo configurações de endereçamento IP automaticamente:
Uma maneira mais simples de obter as configurações de rede é atraves de um Servidor DHCP. Caso
em sua rede local possua um Servidor DHCP, basta seguir o procedimento abaixo para obter as
configurações necessárias:
# ifconfig
Analisando a saída do comando ifconfig abaixo, devemos identificar qual o prefixo ou codigo de
nossa Interface de Rede. No meu caso é “em0”, conforme destacado abaixo:
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&lgt; metric 0 mtu 1500
options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
ether 08:00:27:d4:a6:1e
inet 192.168.1.20 netmask 0xffffff00 broadcast 192.168.1.255
media: Ethernet autoselect (1000baseT )
status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
Feito isso, vamos utilizar o utilitário “dhclient” (Cliente DHCP) para podermos obter as configurações de rede:
# dhclient <Prefixo ou Codigo da Interface>
# dhclient em0
Observação: Caso deseje, as configurações de rede tambem podem ser
alteradas atraves do utilitário “sysinstall”, no caminho indicado
abaixo:
# sysinstall > Configure > Networking > Selecionar a opção Interfaces
Após isso, basta inserir as configurações desejadas e sair.
Iniciando a Instalação do SAMBA
Passo 2: Devemos realizar a instalação do SAMBA e suas dependências no FreeBSD. Vamos fazer
isso atraves do Ports. Para isso, tenha certeza que sua máquina FreeBSD tenha acesso a Internet,
pois a mesma necessitara se comunicar com os Servidores do Ports para realizar o download dos
pacotes necessários. Isso pode ser visto atraves do comando:
# ifconfig
Tendo endereçamento em nossa Interface de Rede, podemos testar a conectividade de nosso
FreeBSD com algo na Internet, atraves do comando abaixo:
# ping <FQDN, URL ou Endereço IP Publico>
Por exemplo:
# ping www.google.com
ou
# ping 8.8.8.8 (Servidor DNS da Google)
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=49 time=177.144 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=49 time=173.513 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=50 time=175.319 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=49 time=176.265 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=49 time=180.066 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=50 time=175.247 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=48 time=178.116 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=49 time=173.474 ms
64 bytes from 8.8.8.8: icmp_seq=8 ttl=50 time=172.755 ms
64 bytes from 8.8.8.8: icmp_seq=9 ttl=50 time=172.672 ms
64 bytes from 8.8.8.8: icmp_seq=10 ttl=50 time=176.656 ms
64 bytes from 8.8.8.8: icmp_seq=11 ttl=50 time=173.601 ms
--- 8.8.8.8 ping statistics ---
12 packets transmitted, 12 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 172.672/175.402/180.066/2.227 ms
Observação: Caso tenha obtido (Reply) resposta no teste de ping, sua conexão está estabelecida
com a Internet, caso não verifique as configurações de rede de seu FreeBSD pois algum problema
ainda existe. Revise a etapa 1 (passo 1) para maiores detalhes.
Vamos acessar o diretorio do Ports que contem o SAMBA3:
# cd /usr/ports/net/samba3
Dentro do diretório do SAMBA3, vamos realizar a instalação dos pacotes, atraves do comando
abaixo:
# make install clean
Explicando:
- make: Realiza a compilação do programa, dependências necessárias, etc;
- install: Instala o programa;
- clean: Apaga ou limpa arquivos/dependências usados no processo de compilação do mesmo;
Nota: Basta aguardar alguns minutos para que o mesmo seja instalado. Lembrando que o mesmo
deve ser instalado com as opções padrões (default), por isso, durante o processo de instalação você
poderá ser perguntando sobre a instalação de algumas bibliotecas/aplicativos. Somente instale se
por padrão a opção de seleção estiver marcada, caso contrário não.
Habilitando a execução do daemon do SAMBA
Passo 3: Depois de instalado no sistema, devemos habilitar a execução do daemon do
SAMBA no
arquivo de configuração /etc/rc.conf. A linha baixo deve ser inserida no arquivo /etc/rc.conf
respeitando os caracteres maisculos e minusculos:
samba_enable=”YES”
Para que a configuração entrem em vigor, basta executar o script abaixo:
# sh /etc/netstart
ou
Reiniciar o sistema:
# shutdown -r now
Manipulando o daemon do SAMBA
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.
Adicionando usuários para acesso aos Recursos
Passo 6: Agora, para que funcione devemos adicionar os usuários no sistema e também na base de dados do
SAMBA. Segue abaixo procedimentos necessários:
Adicionado usuário no sistema e definindo uma senha para o mesmo:
# pw useradd -n joao -u 1005 -g 1005 -c Usuário para acesso a compartilhamentos -d /home/joao -s /bin/sh
# passwd joao
Nota: Usuários podem ser adicionados no sistema com auxilio do utilitário “sysinstall”. Adicionado um usuário no SAMBA:
# smbpasswd -a joao (Depois, definir a senha)
Pronto. Basta a partir de uma estação Windows tentar o acesso ao compartilhamento. Isso pode ser
feito atraves do caminho UNC. Por exemplo:
\\192.168.1.20\arquivos onde: IP do Servidor SAMBA + Compartilhamento chamado “arquivos”.
Observação: Para verificar se os daemons do SAMBA estão em execução, versão do SAMBA e
demais informações uteis, podemos utilizar os comandos abaixo:
# /usr/local/etc/rc.d/samba status
# smbstatus
# top
# ps -aux | grep smbd nmbd
Observação 2: A maiora das alterações realizadas no arquivo de configuração do SAMBA
(/usr/local/etc/smb.conf) para que as mesmas entrem em funcionamento, é necessário “restartar” o
serviço do SAMBA. Isso pode ser feito atraves do comando abaixo:
# /usr/local/etc/rc.d/samba restart
Compartilhando e Gerenciando Impressoras
Passo 7: O lpd é o antigo daemon de spooler de impressão utilizado no
FreeBSD
e na maioria dos sistemas baseados em Unix. Ele é um protocolo que está
definido na RFC 1179 e é capaz de lidar com solicitações de impressões
de entrada de rede ou localmente e armazena-las no diretório onde o
mesmo utiliza para fazer “spool”, e em seguida envia-los para as
respectivas impressoras. O daemon lpd utiliza o arquivo de configuração
/etc/printcap para poder se comunicar com as impressoras. Por esse
arquivo ser complicado de se trabalhar, existe um utilitário que pode
ser instalado via Ports chamado “apsfilter”, localizado em
/usr/ports/print/apsfilter.
Para habilitar a execução do daemon, basta inserir a entrada abaixo no arquivo de configuração /etc/rc.conf:
lpd_enable=”YES”
# sh /etc/netstart
# /etc/rc.d/lpd start
Observação: Esse sistema de impressão é obsoleto, e não é muito utilizado atualmente. Em
substituição a esse sistema, foi lançado o CUPS.
O
CUPS é o acrônimo de
Common Unix Printing System. É
um sistema para gerenciamento e controle de impressoras, com uma
interface muito mais amigavel e simples em comparação ao daemon lpd.
Além de suportar o próprio protocolo lpd, o CUPS possui suporte nativo
aos seguintes protocolos de impressão:
- IPP (Internet Printing Protocol);
- SMB;
- Protocolo HP JetDirect;
Podemos dizer que a “grosso” modo o CUPS é um super melhoramento do sistema lpd. Além dos
vários protocolos suportados, o CUPS suporta Controle de Acesso, Encriptação e Autenticação.
Instalando o CUPS
O CUPS pode ser instalado via Ports, conforme os passos abaixo:
# cd /usr/ports/print/cups
# make install clean
Basta aguardar alguns minutos que o CUPS ira ser instalado. Durante a instalação pode ser lhe
perguntando sobre a instalação de bibliotecas e itens adicionais. Apenas siga com a instalação
padrão (default).
Nota: Opcionalmente, nas opções da biblioteca “GhostScript8” você pode selecionar a primeira
opção para definir o tamanho default da página como A4 e não Letter.
Habilitando a execução do daemon do CUPS
Para habilitar a execução do daemon, basta inserir a entrada abaixo no arquivo de configuração
/etc/rc.conf:
cupsd_enable=”YES”
# sh /etc/netstart
ou
Reiniciarlizar o sistema:
# shutdown -r now
Manipulando o daemon do CUPS
Assim como qualquer serviço de sistema, o daemon do CUPS (cupsd) pode
ser iniciado, pausado e reiniciado, através dos comandos abaixo:
# /usr/local/etc/cups/cupsd.conf start
# /usr/local/etc/cups/cupsd.conf stop
# /usr/local/etc/cups/cupsd.conf restart
Opcional (para ver o status do daemon):
# /usr/local/etc/cups/cupsd.conf status
Preparando o arquivo de configuração: /usr/local/etc/cups/cupsd.conf
Após a instalação do CUPS, necessitamos configurar (ajustar) seu arquivo de configuração para que
possamos acessa-lo via Browser para poder realizar as configurações/gerenciamento de impressoras
e jobs (trabalhos). O arquivo de configuração, deve possuir o conteudo abaixo:
# ee /usr/local/etc/cups/cupsd.conf
Inicio do arquivo de configuração:
# Log general information in error_log - change "warn" to "debug"
# for troubleshooting...
LogLevel warn
# Administrator user group...
SystemGroup
# Only listen for connections from the local machine.
Port 631
#Listen localhost:631
Listen /var/run/cups.sock
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseAddress @LOCAL
BrowseLocalProtocols CUPS
# Default authentication type, when authentication is required...
DefaultAuthType Basic
DefaultEncryption IfRequested
# Restrict access to the server...
Order deny,allow
Deny From All
Allow From 127.
Allow From 192.168.1.
</Location>
# Restrict access to the admin pages...
Order deny,allow
Deny From All
Allow From 127.
Allow From 192.168.1.
</Location>
# Restrict access to configuration files...
AuthType Default
Require user @SYSTEM
Order deny,allow
Allow From 127.
Allow From 192.168.1.
</Location>
# Set the default printer/job policies...
# Job-related operations must be done by the owner or an administrator...
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job
Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription
Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job
Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer
CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default
CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer
Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer
Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs
CUPSReject-
Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
# Set the authenticated printer/job policies...
# Job-related operations must be done by the owner or an administrator...
<Limit Create-Job Print-Job Print-URI>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job
Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription
Cancel-Subscription Get-Notifications
Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
# All administration operations require an administrator to authenticate...
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# All printer operations require a printer operator to authenticate...
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer
Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs
Deactivate-Printer Activate-Printer Restart-Printer
Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPSReject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
# Only the owner or an administrator can cancel or authenticate a job...
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
Observação: O arquivo já está com comentários (em Inglês) descrevendo a funcionalidade básica
de cada opção inserida no arquivo. Basta reiniciar o serviço do CUPS para que as configurações
entrem em funcionamento.
Acessando o CUPS através de um host da Rede Local
Atraves de uma máquina da rede, podemos acessar o painel de gerenciamento do
CUPS via
Browser (Navegador). Não recomendo o IE para o acesso ;-). Segue abaixo o endereço que devo
acessar:
http://192.168.1.20:631/
Nota: Por default, o CUPS “escuta” na porta lógica 631. Se não estiver
conseguindo o acesso, revise o arquivo de configuração do CUPS
(provavelmente está sem acesso lá no arquivo), e tente checar se a porta
lógica está sofrendo algum tipo de bloqueio (Firewall, etc). Atraves de
um programa PortScan (como o NMAP, por exemplo), podemos checar se a
porta está aberta e aceitando conexões, atraves do comando abaixo:
# nmap -sS -p 631 localhost
Será retornado a mensagem abaixo, indicando que a porta está aberta (open):
Starting Nmap 5.21 ( http://nmap.org ) at 2011-03-03 23:59 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000066s latency).
PORT STATE SERVICE
631/tcp open ipp
Nmap done: 1 IP address (1 host up) scanned in 1.19 seconds
Compartilhando impressoras com o SAMBA
O CUPS é uma poderosa ferramenta para:
- Instalação Impressoras;
- Gerenciamento de Impressoras;
- Gerenciamento de Jobs (Trabalhos de Impressão);
- Separação de impressoras por Classes (Organização);
- Visualização do seu próprio arquivo de log/job;
- Edição de seu próprio arquivo de configuração;
- Etc;
Enfim, possui muita funcionalidade que são utilizadas mediante a necessidade de um ambiente em
especifico. Para podermos compartilhar essas impressoras com os usuários, fazemos isso atraves do
SAMBA.
Para isso, podemos inserir uma sessão adicional chamada “Printers” ao arquivo de configuração só
SAMBA, fazendo com que todas as impressoras instaladas no CUPS sejam mapeadas para todos os
usuários, sejam eles cadastrados no sistema e/ou no SAMBA. Segue abaixo o conteudo que deve
ser inserido no arquivo de configuração do SAMBA (/usr/local/etc/smb.conf):
[printers]
comment = Compartilhamento de todas as impressoras
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes
hosts allow = 192.168.1.
Explicando opções relevantes:
# Diretorio utilizado para o spool de impressão (Area temporária);
path = /var/spool/samba
# Faz com que o compartilhamento da impressora este ativo e operante;
print ok = yes
# Permite que qualquer usuário possa imprimir, seja ele cadastrado no SAMBA ou não;
guest ok = yes
# Define quais hosts poderão utilizar as impressoras. No caso todos os hosts de minha rede local;
hosts allow = 192.168.1.
Afinando as configurações de impressoras no SAMBA
É possível também especificar o compartilhamento individual de cada
impressora, o que é muito util quando o servidor compartilha várias
impressoras diferentes e diferentes permissões precisam ser aplicadas a
cada uma delas. Para criarmos um compartilhamento especifico de uma
impressora já instalada no CUPS (por exemplo, uma HPC3180), devemos
inserir a entrada abaixo no final do arquivo de configuração do SAMBA:
[hpc3180]
path = /var/spool/samba
print ok = yes
guest ok = yes
browseable = yes
hosts allow = 192.168.1.
invalid users = joao, maria, pedro
Explicando:
Nesse caso estou compartilhando a impressora de nome hp3180 (nome do
compartilhamento definido no momento da instalação da impressora no
CUPS) com algumas permissões diferentes, onde todos os usuários de minha
rede local podem imprimir, menos os usuários joao, maria e pedro,
independente da máquina que estejam. Isso é possível atraves das opções
abaixo:
hosts allow = 192.168.1.
invalid users = joao, maria, pedro
Nota: Sempre, após alguma alteração para que a mesma possa entrar em vigor reinicie o daemon do
SAMBA para que as mesmas entram em funcionamento.
Observação: Tenha em mente que o CUPS também pode ser utilizado para compartilhar as
impressoras, mas o SAMBA é utilizado para fazer isso devido a flexibilidade que pode fornecer.
Observação 2: No exemplo do compartilhamento das impressoras, tenha em mente também que o
driver não é fornecido. Com isso, caso esteja adicionando essa impressora em ambiente Windows,
você deve possuir o driver correto da impressora para que a mesma possa funcionar corretamente.
Usando e Habilitando o SWAT para editar a configuração do SAMBA
SWAT:
Podemos realizar toda a configuração do SAMBA atraves de um navegador WEB, através de uma
interface de menus gráfica. Para muito administradores, a melhor maneira é editar o arquivo
diretamente via linha de comando, mas o SWAT (SAMBA Web Administration Tool) é uma boa
ferramenta para que está começando e deseja aprimorar mais suas habilidades e conhecimentos.
Para poder utiliza-lo, não é necessário a instalação de nenhum servidor WEB de terceiros, pois ele
possui seu próprio manipulador de solicitações WEB.
Habilitando o SWAT no arquivo /etc/inetd.conf:
O daemon inetd é considerado um serviço de Internet “Super-Server”. Basicamente, ele é
responsavel por escutar por certas conexões a alguns sockets configurados no servidor em questão.
Apenas receber uma solicitação, o mesmo analisa qual programa o socket necessita e o invoca para
poder ser executado e atender a solicitação em questão. Após o programa ser utilizado, o inetd
continua a escutar o socket para aguardo de novas conexões/solicitações.
Para habilitar o SWAT no arquivo de configuração do daemon inetd, basta descomentar a ultima
linha do arquivo que diz respeito ao SWAT, conforme segue a mesma abaixo:
swat stream tcp nowait/400 root /usr/local/sbin/swat swat
Explicando:
Editar o arquivo de configuração do daemon inetd:
# ee /etc/inetd.conf
Descomentar ou inserir (caso não exista) a linha abaixo referente ao “socket” do SWAT:
swat stream tcp nowait/400 root /usr/local/sbin/swat swat
Habilitando a execução do daemon do Inetd
Para habilitar a execução do daemon, basta inserir a entrada abaixo no arquivo de configuração
/etc/rc.conf:
inetd_enable=”YES”
# sh /etc/netstart
Feito isso, basta agora iniciarmos o serviço do inetd para podermos acessar a interface de
configuração do SWAT. Segue comando abaixo:
# /etc/rc.d/inetd start
Agora, a partir de uma máquina da rede, acesse via Browser a interface de configuração do SWAT,
atraves do seguinte endereço:
http://ipdoservidor:901/
Explicando:
- ipdoservidor: Deve ser o endereço IP do servidor SAMBA;
- 901: Porta default utilizada pelo SWAT. Certifique de que a mesma
não está bloqueada no Firewall ou dispositivo de segurança da máquina do
de sua rede local (LAN).
Nota: Tenha em mente que as configurações deitas atraves do SWAT, serão aplicadas diretamente
no arquivo de configuração do SAMBA (/usr/local/etc/smb.conf). Com isso, muito cuidado com as
alterações realizadas.
Dica: Caso queira testar o SWAT, faça antes uma cópia do arquivo de configuração do SAMBA,
para que possa voltar ao normal caso alguma configuração saia errado ou não esteja satisfeito com
alto e não consiga reverter depois. Essa cópia pode ser feita para o seu diretório HOME, como por
exemplo para o usuário João:
# mkdir /home/joao/backup
# cp /usr/local/etc/smb.conf /home/joao/backup/smb.conf.backup
Explicando:
- mkdir /home/joao/backup: Criando um diretório para armazenar o backup do arquivo do SAMBA;
- cp /usr/local/etc/smb.conf /home/joao/backup/smb.conf.backup:
Copiando o arquivo principal de configuração do SAMBA para o diretorio
criado anteriormente;
Referências
- Livro: Servidores Linux (Guia Pratico) – Carlos E. Morimoto;
- Livro: Network Administration with FreeBSD 7 – Babak Farrokhi;
- Meus conhecimentos/Experiência;
Social