Em preparação para fazer o exame de certificação LPI-302 do Linux
Professional Institute para administradores de sistema, aprenda a
configurar o Samba e estruturar seu arquivo de configuração. Saiba
também como o Samba interage com a rede, como configurar a criação de
log e como depurar problemas com o Samba.
Neste artigo, aprenda a:
- Criar e configurar o compartilhamento de arquivos
- Planejar uma migração de serviço
- Ocultar o compartilhamento administrativo, IPC$
- Criar scripts para que usuários e grupos possam lidar com compartilhamentos de arquivos
- Usar ferramenta de linha de comando para compartilhamentos de arquivos
Este artigo ajuda você a se preparar para o Objetivo
312.2 no Tópico 312 do exame de especialidade de Ambiente Misto do Linux
Professional Institute (302). O objetivo tem peso 4.
Pré-requisitos
Para aproveitar ao máximo os artigos desta série, é necessário ter um
conhecimento avançado de Linux e um sistema Linux funcional, no qual
seja possível praticar os comandos mencionados neste artigo. Além disso,
é preciso ter acesso a um ambiente Windows que será usado para testar o
acesso a arquivos e impressão.
Sobre esta série
Esta série de artigos ajuda você a aprender as
tarefas de administração de sistema Linux. Também é possível usar o
material desses artigos para se preparar para os exames de certificação do Linux Professional Institute
nível 3 (LPIC-3).
Consulte o developerWorks roadmap for LPIC-3 para ver uma descrição de cada artigo da série e um link para cada um desses artigos. O roteiro está em andamento e reflete os objetivos em relação aos exames LPIC-3. À medida que cada artigo é concluído, eles são adicionados ao roteiro.
Criando compartilhamentos de arquivos
Lembre que no artigo anterior mencionamos que o Samba entende qualquer seção dentro de smb.conf, exceto homes, printers e global, como nome do compartilhamento. Além do nome do compartilhamento, o
mapeamento desse nome em um local do disco é outra informação
importante. Este é o mais simples compartilhamento útil:
[tmpdir]
path = /var/tmp
Esse código define um compartilhamento chamado tmpdir que mapeia /var/tmp no servidor Samba.
Por exemplo, se o nome do servidor era phoenix,
os usuários conseguiriam acessar esse compartilhamento de arquivo no
caminho de Convenção Universal de Nomenclatura (UNC) phoenixtmpdir.
Mas essa configuração esparsa não é útil: a configuração padrão para um
compartilhamento deve ser de somente leitura, para que o
compartilhamento acima não possa ser gravado.
Usando parâmetros de segurança
O Samba tem muitos parâmetros relacionados à segurança que controlam o
que pode ser acessado por quem e de onde. Muitos desses parâmetros
afetam a interação entre o Samba e as permissões de arquivo UNIX
subjacentes e não são discutidos neste artigo. No entanto, alguns
parâmetros mais gerais são discutidos aqui.
Os servidores SMB (Server Message Block), incluindo implementações Microsoft nativas, têm um compartilhamento chamado IPC$,
que é a comunicação entre processos e é usado para executar funções de
software em uma rede. O sufixo de um compartilhamento em um cifrão ($) é considerado oculto e não é mostrado em clientes Microsoft, embora o servidor anuncie a existência do compartilhamento.
O Samba cria o compartilhamento IPC$, embora ele talvez
não exista em smb.conf. Se criarmos o compartilhamento, poderemos
controlar o acesso a ele. Este é um exemplo de compartilhamento IPC$
restrito:
[IPC$]
hosts allow = 192.168.1.0/255.255.255.0
browsable = no
Esse fragmento define o compartilhamento IPC$ e o marca como
acessível apenas a pessoas da rede 192.168.1.0. O exemplo também desliga
o recurso Browsable, que diz ao Samba que o compartilhamento não deve
ser exibido quando os clientes o solicitarem.
Algum tempo atrás, era prática comum ocultar
compartilhamentos sensíveis, como IPC$, na esperança de que um invasor
ignorasse o alvo. Isso não faz sentido em relação ao compartilhamento
IPC$.
Por exemplo, pedir a um servidor uma lista de compartilhamento
depende da conexão com o compartilhamento IPC$. Se observarmos as
depurações do Samba e os rastreamentos de pacote, veremos que essa opção
Browsable não tem efeito.
A razão de eu chamar atenção a isso é que é um ponto mencionado na
descrição do exame. É muito melhor restringir os hosts que podem se
conectar do que tentar esconder o compartilhamento IPC$.
Um usuário pode se conectar a um compartilhamento sem nome de usuário, o que faz do usuário um convidado. Por padrão, um compartilhamento não permite usuários convidados, mas é possível ativar essa conta em guest ok = yes
no nível de compartilhamento. O usuário convidado padrão é nobody, mas é possível alterar esse usuário com o parâmetro global guest account.
Links simbólicos são usados amplamente em sistemas UNIX
para ligar duas áreas de um sistema de arquivos. Por exemplo, em seu
diretório inicial, pode-se criar um link simbólico para o diretório
temporário do sistema todo e usá-lo como se fosse parte do seu diretório
inicial.
O Samba segue esses links simbólicos, o que poderia permitir
que as pessoas acessassem áreas fora do compartilhamento de arquivos. Se
não quisermos que isso aconteça, devemos usar follow symlinks = no no nosso compartilhamento.
Se quisermos restringir os usuários que podem acessar um compartilhamento, devemos usar o parâmetro valid users. Por exemplo, valid users = sean, jon, isaac
permite que apenas esses três usuários acessem o compartilhamento no
qual esse parâmetro é usado. Pode-se usar esse parâmetro juntamente com
as permissões de nível de arquivo como nível extra de segurança para
compartilhamentos sensíveis.
Compartilhamentos iniciais
É comum dar aos usuários um diretório inicial para seus arquivos
pessoais. Cada usuário no arquivo de senhas do UNIX tem um diretório
inicial atribuído a ele.
Pode-se exportar facilmente qualquer quantidade
de diretórios iniciais pelo Samba sem ter que digitar uma seção de
configuração separada, usando a seção [homes].
Quando alguém solicita um compartilhamento chamado joe, o Samba procura um compartilhamento configurado chamado joe. Se o Samba não localizar esse compartilhamento, procurará um usuário
com o mesmo nome. Se o usuário for localizado, o Samba usará a
configuração na seção [homes] como modelo para esse compartilhamento.
A Listagem 1 mostra uma seção [homes] típica.
Listagem 1. Modelo de compartilhamentos na página inicial do usuário
[homes]
comment = Home Directories
writable = yes
browsable = yes
valid users = %S
A configuração da Listagem 1 executa estas tarefas:
- Começa a configuração da seção homes.
- Designa um comentário, que é mostrado para pessoas
que procuram detalhes sobre os compartilhamentos de arquivos disponíveis
nesse servidor - Marca o compartilhamento como gravável para que os usuários possam fazer alterações em seu diretório inicial
- Indica que o compartilhamento pode ser visto quando
os usuários navegam em uma lista de compartilhamentos. Eles verão ambos
os diretórios iniciais e um compartilhamento com seu nome de usuário - Limita os usuários que podem se conectar a esse compartilhamento àqueles usuários que possuem o compartilhamento
Observe o uso da macro %S na Listagem 1:
essa macro amplia o nome do compartilhamento. Visto que o nome de
usuário é o mesmo do compartilhamento, a restrição valid users faz com que apenas o proprietário do compartilhamento possa usá-la.
Agora, sempre que os usuários procurarem uma lista de
compartilhamentos, verão seu diretório inicial e conseguirão se conectar
a ele. O compartilhamento será mapeado em seu diretório inicial UNIX.
Outra coisa interessante sobre os compartilhamentos de
diretórios iniciais é que, se nos conectarmos a serverhomes
diretamente, obteremos nosso próprio compartilhamento, como se
tivéssemos nos conectado a serverusername. Esse é um recurso extra
que a equipe do Samba incluiu para ajudar as pessoas em máquinas
compartilhadas e para reduzir a confusão.
Scripts para acrescentar usuários e grupos
Se procurarmos em um domínio da Microsoft a lista de usuários, é
possível que um usuário que se conecta ao seu servidor não tenha uma
conta de UNIX local.
Uma maneira de contornar esse problema é fazer o
Samba criar o usuário quando esse se conectar por meio do parâmetro add user script. A macro %u expande para o usuário em questão. Pode-se usar uma ferramenta do sistema, como useradd, ou escrever seus próprios scripts.
Existe um parâmetro similar para grupos – add group script –
que é usado ao utilizar ferramentas da Microsoft para gerenciar a
instância do Samba. Também são úteis, ao usarmos essas ferramentas, os
scripts add user to group e delete, que é similar. A man page de smb.conf tem uma lista completa de tarefas que podem receber scripts.
Ter um daemon para criar usuários on demand nem sempre é a melhor ideia. Pode valer mais à pena usar winbind
ou um mecanismo de autenticação baseado em LDAP (Lightweight Directory
Access Protocol) de modo que o Samba e o Linux possam compartilhar um
banco de dados comum de usuários.
Lidando com mistura de maiúsculas e minúsculas
Se um nome de arquivo ou diretório está em maiúsculas ou minúsculas, não importa na região da Microsoft. Ou seja, FILE, file e FiLe
todos se referem ao mesmo arquivo.
Em Linux, porém, isso é importante,
de modo que esses três arquivos seriam arquivos diferentes. O Samba
precisa saber como fazer o mapeamento entre esses dois mundos para
resolver qualquer conflito. Esse processo de mapeamento de maiúsculas e
minúsculas faz parte de um processo maior chamado name mangling.
Alguns parâmetros afetam o mangling de maiúsculas e minúsculas no nome de arquivo. O parâmetro mais importante é case sensitive, que pode ser yes, não ou
auto.
Se case sensitive for
ativado, o Samba usa o que o cliente solicitar: seja maiúscula, seja
minúscula. Se essa configuração for desativada, o Samba procura no
diretório um correspondente que não dependa de maiúsculas e minúsculas.
Um problema com a diferenciação de maiúsculas e
minúsculas é que, se for configurada incorretamente, talvez não seja
possível acessar alguns arquivos.
Pense em um diretório com dois
arquivos – um chamado test e outro chamado TEST. Se o Samba não usar o acesso que diferencia maiúsculas de minúsculas, não conseguirá diferenciar entre os dois arquivos.
O padrão nessa configuração é auto, que
procura um campo de extensão de cliente para indicar que este suporta o
acesso com diferenciação de maiúsculas e minúsculas. Os clientes Windows
não suportam essa funcionalidade, de modo que não usam a diferenciação
de maiúsculas e minúsculas.
Os parâmetros default case e preserve case funcionam entre si.
Se preserve case for configurado como yes, aquilo que o cliente definir será usado. Se preserve case for configurado como no, o valor de maiúsculas e minúsculas default será usado para determinar essa configuração no arquivo recém-criado.
Ativando Usershare
Os usuários podem criar seus próprios compartilhamentos sem precisar modificar o smb.conf usando um recurso chamado Usershare.
Depois que o administrador ativa o recurso Usershare, os usuários
regulares usam uma ferramenta de linha de comando para exportar
diretórios à sua escolha. Os usuários também podem excluir seus
compartilhamentos quando estiverem concluídos.
A primeira etapa para usar o Usershare é ativar o recurso
em nível global. A Listagem 2 mostra uma parte do smb.conf que ativa o
Usershare.
Listagem 2. Ativando Usershare
[global]
usershare path = /var/lib/samba/usershares
usershare max shares = 5
usershare prefix allow list = /home
usershare prefix deny list = /var, /usr
A Listagem 2 opera na seção [global].
Primeiro, o usershare path define um diretório que o Samba
utiliza para a configuração relacionada ao compartilhamento de usuário.
Há várias restrições nesse diretório, que serão explicadas mais
adiante. Em seguida, é imposto um limite ao número de compartilhamentos
de usuário. Os dois últimos parâmetros mostram como restringir os
diretórios que podem ser compartilhados.
usershare prefix allow list restringe todos os compartilhamentos em diretórios específicos. Nesse caso, os compartilhamentos devem vir de /home. usershare prefix deny list
usa a abordagem contrária e permite qualquer coisa, exceto os diretórios específicos.
O Samba impõe mais outras duas restrições aos compartilhamentos de usuários. Primeiro, o usershare path deve ser gravável pelo usuário que cria o compartilhamento, e o diretório deve ter o sticky bit configurado (1000 ou +t).
Segundo, o usuário deve ser proprietário do diretório que está sendo compartilhado, a menos que usershare owner only esteja configurado como false.
A primeira restrição em relação às permissões de arquivos significa que é preciso ter cuidado ao criar o usershare path. Se quiser restringir o compartilhamento de usuários a pessoas no grupo usershare, é preciso uma série de comandos como estes:
# mkdir -p /var/lib/samba/usershares
# chown root:usershares /var/lib/samba/usershares
# chmod 1770 /var/lib/samba/usershares
O primeiro comando cria o diretório e qualquer diretório pai
necessário. O comando seguinte define a propriedade de usuário e grupo
do diretório para a raiz e para usershares, respectivamente. O comando
final define as permissões de diretório para proprietário e grupo como
Read/Write/Execute, nega acesso a todos os outros e define o sticky bit.
Assim, apenas a raiz e os membros do grupo usershares podem usar esse
diretório; em vista do sticky bit, apenas o proprietário de um arquivo
pode excluí-lo.
Configurar o compartilhamento é, talvez a parte mais difícil do exercício. Um usuário pode executar:
net usershare add docs /home/me/Documents/ "My docs" Everyone:F
O comando acima exporta /home/me/Documents como compartilhamento chamado docs com Full Control para todos. Outros comandos permitidos são:
- net usershare list lista os compartilhamentos que o usuário criou.
- net usershare info docs
mostra a configuração do compartilhamento docs. - net usershare delete docs
remove o compartilhamento docs.
Ferramentas de linha de comando
O Samba vem com várias ferramentas de linha de comando. Por meio de libsmbclient que o Samba fornece, outras pessoas prepararam utilitários SMB/Common Internet File System (CIFS) comumente usados.
Uma diferença marcante entre UNIX e Windows é que o
primeiro tem um grande sistema de arquivos enquanto o segundo tem uma
série de letras de unidade. O utilitário smbclient permite
navegar em um compartilhamento Windows remoto em uma interface
semelhante a FTP (Protocolo de Transferência de Arquivos), mas, para ser
transparente aos aplicativos, um compartilhamento Windows remoto deve
ser montável como qualquer outro sistema de arquivos.
O Samba vem com um utilitário chamado smbmount, às vezes reempacotado como mount.cifs. Pode-se chamar esse comando diretamente ou por meio do comando mount. A Listagem 3 mostra um sistema Linux que monta um compartilhamento CIFS remoto no sistema de arquivos regular.
Listagem 3. Montagem de compartilhamento remoto de CIFS
# mount -t cifs '192.168.1.134docs' /mnt -o user=myuser
Password:
# mount
...
\192.168.1.134docs on /mnt type cifs (rw)
O primeiro comando monta um sistema de arquivos CIFS no caminho UNC
determinado e o coloca em /mnt. Com exceção do caminho UNC, a aparência
disso é padrão mount padrão. As opções são passadas com a opção -o.
A única opção necessária aqui é o nome de usuário. A man page
mount.cifs descreve todas as outras opções, que podem incluir uma senha e
domínio. Se não for especificada uma senha, será solicitado que se faça
isso. Finalmente, o comando mount
mostra o sistema de arquivos montado.
Outro comando é smbsh. Em vez de montar um sistema de arquivos com meios UNIX padrão, o smbsh
intercepta as chamadas de biblioteca para solicitações de arquivos e, se
necessário, redireciona a solicitação para um compartilhamento CIFS.
A
maioria dos sistemas não vem mais com esse comando, porque ele não é tão
confiável quanto a montagem de um sistema de arquivos.
Migrando compartilhamentos de arquivos
Ao mover nossos serviços de arquivos de um servidor para outro, os
usuários talvez se esqueçam de acessar o novo servidor. O Samba permite
que seu servidor responda a outro nome.
Por exemplo, se movermos
compartilhamentos de arquivos de um servidor chamado phoenix para um chamado fs2,
pode-se fazer o fs2 responder a solicitações ao phoenix. Naturalmente,
será preciso confirmar que o phoenix não responda, desligando-o ou
renomeando-o.
Para acrescentar um alias a um servidor, use o parâmetro global netbios aliases. Se quiser mudar o nome de um servidor Samba para algo diferente de um nome UNIX de servidor, use o parâmetro netbios name.
Os comandos que aprendemos até aqui para montagem de
sistemas de arquivos também serão úteis ao copiar arquivos de um
servidor para outro em preparação para a migração. Talvez seja
interessante também usar utilitários UNIX como rsync para ajudar.
Progredindo
Este é o fim do tópico de compartilhamentos de arquivos. O próximo
objetivo de exame, 312.3,
o fará criar e configurar compartilhamentos de impressora e o ensinará a
acessar esses compartilhamentos a partir de outros sistemas.
Sobre o exame elegível LPI-302
O Linux Professional Institute Certification (LPIC) é
como muitas outras certificações, pois também oferece certificações em
níveis diferentes, e cada nível requer mais conhecimento e experiência
que o anterior. O exame LPI-302 é um exame elegível especial no terceiro
nível da hierarquia do LPIC, e requer um nível avançado de conhecimento
de administração de sistema Linux.
Para obter a certificação LPIC nível 3 (LPIC-3), é
necessário passar nos dois primeiros exames do primeiro nível (101 e
102), nos dois exames do segundo nível (201 e 202) e no exame principal
do LPIC-3 (301). Depois de alcançar esse nível, é possível fazer os
exames elegíveis especializados, como o LPI-302.
Recursos
Aprender
- A versão da Web da man page de smb.conf é mais conveniente do que a versão de linha de comando.
- O SMB HOWTO tem muito mais detalhes sobre como acessar sistemas de arquivos remotos a partir de uma máquina Linux.
- Se estiver usando SELinux, este documento sobre gerenciamento de Samba e SELinux será bastante útil, em especial ao configurar diretórios iniciais.
- No site do programa LPIC
você encontra objetivos detalhados, listas de tarefas e amostras de
perguntas referentes aos três níveis da certificação em administração de
sistemas Linux do LPI. Especificamente, veja os objetivos detalhados do LPI-302 e as tarefas e amostras de perguntas. - Revise toda a série de preparação para os exames LPI
no developerWorks, para saber mais sobre os fundamentos do Linux e se
preparar para a certificação de administrador de sistemas, com base nos
objetivos do exame LPI anteriores a abril de 2009. - Exam Preparation Resources for Revised LPIC Exams fornece uma lista de outros recursos de treinamento para certificação mantidos pelo LPI.
- Na zona Linux do developerWorks, encontre vários artigos de instruções e tutoriais, bem como downloads, fóruns de discussão e muitos outros recursos para desenvolvedores e administradores Linux.
- Fique por dentro dos eventos técnicos e webcasts do developerWorks com foco em uma variedade de produtos da IBM e tópicos do segmento de mercado de TI.
- Participe de um briefing ao vivo e gratuito gratuito para se atualizar rapidamente sobre produtos e ferramentas da IBM, bem como tendências do segmento de mercado de TI.
- Acompanhe as Demos on demand do developerWorks
, que abrangem desde demos de instalação e configuração de produtos
para iniciantes até funcionalidades avançadas para desenvolvedores
experientes.
Obter produtos e tecnologias
- Obtenha a a versão mais recente do Samba para estar atualizado com os recursos mais recentes.
***
artigo publicado originalmente no developerWorks Brasil, por Sean Walberg
Sean Walberg é engenheiro de redes e autor de dois livros sobre rede.
Trabalhou em vários segmentos de mercado, como assistência médica e
mídia.