(compartilhamento de arquivos)
Segue uma maneira rápida e fácil de configurar o seu GNU/Linux para compartilhar arquivos, utilizando o SAMBA. Esse artigo vai usar a base de autênticação do próprio Samba que é chamada de "database backend". Contudo, não se preocupe com esse termo "database backend", pois durante o artigo você saberá que tipo de base de autênticação está sendo usada e a diferença entre eles. Segue os passos e divirtam-se:
# apt-get update ; apt-get install samba -y(poderá aperecer a pergunta, conforme a figura abaixo. Esta pergunta está relacionada ao workgroup ou ao domínio que esse equipamento pertence. Por exemplo, se o domínio for "mydomain.com" então se deve colocar somente "mydomain". Se o domínio for "mydomain.com.br" também se deve colocar somente "mydomain". Além dessa pergunta uma outra relacionada ao uso de um servidor WINS aparecerá, responda que não usará tal servidor)

Obs1: no caso desse artigo o nome que se deve colocar na tela acima é o nome NetBIOS (Network Basic Input Output System) do domínio. O nome NetBIOS do domínio nada mais é o nome do domínio (mydomain.com.br) sem o sufixo (com.br). O NetBIOS é um sistema antigo que permite que máquinas se comuniquem utilizando um nome. Não se pode usar o sinal de ponto final "." dentro do nome, por isso a retirada do sufixo. Muitas vezes o NetBIOS é usado sobre o TCP/IP e é chamado de NBT (NetBIOS over TCP/IP).
Obs2: para ser sincero, no caso desse artigo pouco importará a resposta que será dada a pergunta acima. Contudo, se esse servidor também for cliente samba, ou seja, acessa algum compartilhamento numa máquina MS-Windows que esteja num domínio, aí sim, a resposta deve está correta para conseguir obter o acesso.
Editar o arquivo de configuração do SAMBA
# vi /etc/samba/smb.conf
workgroup = WORKGROUP (se a pergunta acima não aparecer ou quiser modificá-la depois da instalação, basta verificar esta linha)
A maioria dos parâmetros desse arquivo não precisa ser modificado. Então, vá ao fim do arquivo e digite:
[publico] (nome que aparecerá no cliente na hora dele acessar o compartilhamento via rede)
path = /mnt/hda1/publico (caminho completo do diretório que será compartilhado)
comment = Diretório de Acesso Público (comentário)
read only = yes (permissão somente de leitura)
browseable = yes (torna o compartilhamento visível para o cliente, por exemplo, ao usar o ambiente de rede de um MS-Window. Caso esse valor seja "no", ele ficará invisível, ou seja, não poderá ser visto, mas não impede o acesso via rede usando o caminho do compartilhamento "\\IP_servidor\diretorio")
Obs: ao se compartilhar arquivos em um equipamento, ele se torna um Servidor de Arquivos.
Salve e saia do arquivo de configuração. Crie um usuário específico para acessar o compartilhmento e atribua uma senha.
# useradd teste (cria um usuário. Não necessariamente deve existir um perfil para tal usuário em "/home/". Por isso, o uso do comando "useradd" e não do "adduser")
# passwd teste (atribui uma senha ao usuário teste)
Agora que já tem o usuário "teste" no sistema, deve-se cadastrar a mesma senha na base dados (database backend) do SAMBA:
# smbpasswd -a teste (será solicitado a digitação de uma senha que deve ser a mesma digitada anteriormente)
Dica: as configurações até aqui citadas são somente para leitura do diretório "/mnt/hda1/publico". Caso deseje permissão de escrita, então coloque "read only = no". Depois, digite "chmod g+w /mnt/hda1/publico -R" e "chown .teste /mnt/hda1/publico -R". Na hora de copiar arquivos para "/mnt/hda1/publico", use "cp -r" em vez de "cp -a", pois não se pode mudar o usuário, grupo e permissões dos arquivos que lá serão inseridos. Observem que a permissão de escrita será somente para o usuário "teste" e para os usuários pertencentes ao grupo "teste".
TESTE PARA VERIFICAR SE ESTÁ TUDO OK
# testparm
# testparm -s (sem prompt)
# testparm -v (verbose, mostrando as opções padrão atuais)
Restartando o serviço SAMBA
# /etc/init.d/samba restart
SOMENTE PARA CONHECIMENTO. NÃO É NECESSÁRIO ALTERAR AS OPÇÕES A SEGUIR: Então para saber qual a base de dados de autenticação (database backend) que está sendo usada, procure pelas linhas a seguir:
; security = user(o porto e vírgula ";" representa um comentário. Para habilitar essa opção, apague tal sinal. Esta linha redireciona a base de autênticação para a máquina local e usa as contas Unix/Linux)
passdb backend = tdbsam(esta linha diz que a base de autenticação é o Samba onde as informações de usuários são guardadas num arquivo TDB (Trivial DataBase - tdbsam), compatível com sistemas Microsoft Windows. Esta forma de armazenamento, proporciona um nível de segurança no armazenamento de informações quando comparada com a anterior "passdb backend = smbpasswd". Este utiliza os arquivos "/etc/samba/smbusers" e "/etc/samba/smbpasswd" em texto claro para armazenar os nomes de usuários e senhas. Atualmente, o Samba guarda os dados de usuários em /var/lib/samba/passdb.tdb. Só para conhecimento, também exite a base de autênticação do LDAP "passdb backend = ldapsam")
As configurações até agora foram para o servidor SAMBA. No entando, para que um cliente GNU/Linux acesse o compartilhamento, deve-se instalar dois pacotes no cliente:
# apt-get install smbfs smbclient (ao instalar o pacote "smbfs", habilitará o suporte do sistema operacional ao filesystem "smbfs". Além disso, o comando "smbmount" também estará disponível. Poderá aperecer a pergunta, conforme a figura abaixo. Esta pergunta está relacionada ao workgroup ou ao domínio que esse equipamento pertence. Por exemplo, se o domínio for "mydomain.com" então se deve colocar somente "mydomain". Se o domínio for "mydomain.com.br" também se deve colocar somente "mydomain". Além dessa pergunta uma outra relacionada ao uso de um servidor WINS aparecerá, responda que não usará tal servidor)

Obs1: no caso desse artigo o nome que se deve colocar na tela acima é o nome NetBIOS (Network Basic Input Output System) do domínio. O nome NetBIOS do domínio nada mais é o nome do domínio (mydomain.com.br) sem o sufixo (com.br). O NetBIOS é um sistema antigo que permite que máquinas se comuniquem utilizando um nome. Não se pode usar o sinal de ponto final "." dentro do nome, por isso a retirada do sufixo. Muitas vezes o NetBIOS é usado sobre o TCP/IP e é chamado de NBT (NetBIOS over TCP/IP).
Obs2: No caso de um cliente samba, ou seja, equipamento que acessa algum compartilhamento numa máquina MS-Windows que esteja num domínio, a resposta acima deve está correta para conseguir obter o acesso. Muitos problemas ao usar um GNU/Linux para acessar um compartilhamento no Windows está relacionado a opção acima.
Comandos que podem ser digitados no cliente GNU/Linux
# smbclient -L IP_servidor (se for solicitado uma senha, aperte o ENTER. Com esse comando aparecem várias informações do micro "IP_servidor" como a lista dos diretórios compartilhados pelo servidor remoto)
# smbclient -L IP_servidor -U nome_usuario (idem, mas especifica um usuário)
# smbclient //IP_servidor/publico -U nome_usuario (entra no diretório "publico" compartilhado do "IP_servidor", especificando o usuário para autenticar)
# smbmount //IP_servidor/publico /mnt -o username=teste (monta o diretório "publico" compartilhado do "IP_servidor" em "/mnt" e especifica o usuário "teste" para autenticar. Esse comando "smbmount" é instalado ao instalar o pacote "smbfs")
# mount -t cifs //IP_servidor/publico /mnt -o username=teste (idem ao comando anterior)
# mount -t cifs //IP_servidor/publico /mnt -o username=teste,dom=matrix.lan (idem, especifica o domínio)
# mount -t cifs //IP_servidor/publico /mnt -o username=teste,sec=ntlm (especifica o modo de autenticação)
# mount -t cifs //IP_servidor/publico /mnt -o username=teste,sec=ntlmv2 (especifica o modo de autenticação)
# mount -t cifs //IP_servidor/publico /mnt -o username=teste,sec=ntlmssp (especifica o modo de autenticação)
# mount -t cifs //IP_servidor/publico /mnt -o username=teste,password=12345678 (especifica a senha)
# mount (mostra os sistemas de arquivo montados, inclusive os de rede)
# umount //IP_servidor/publico (desmonta o sistema de arquivo montado anteriormente)
# umount /mnt (o mesmo que o anterior)
Comandos que podem ser usados dentro do ambiente SMBCLIENT:
smb: \> help ou ? (lista os comandos que podem ser utilizados)
smb: \> ? comando (ajuda do comando)
smb: \> ls (lista o coteúdo do diretório atual)
smb: \> dir (o mesmo que "ls")
smb: \> cd (muda de diretório)
smb: \> mkdir (cria um diretório)
smb: \> rmdir (deleta um diretório vazio)
smb: \> get (obtem um arquivo da máquina remota para o diretório atual da máquina local)
smb: \> mget (obtêm vários arquivos da máquina remota para o diretório atual da máquina local)
smb: \> newer (o mesmo que o "get", mas somente transfere se o arquivo remoto for mais novo que o local)
smb: \> put (põe um arquivo do diretório atual da máquina local para o diretório atual da máquina remota)
smb: \> mput (põem vários arquivos do diretório atual da máquina local para o diretório atual da máquina remota)
smb: \> del (deleta um arquivo na máquina remota)
smb: \> lcd (mostra o diretório atual da máquina local ou muda o diretório atual da máquina local para o digitado)
smb: \> pwd (mostra o diretório atual da máquina remota)
smb: \> prompt (habilita e desabilita o modo interativo - interessante desabilitar ao usa o "mget" ou "mput")
smb: \> open (abre um arquivo)
smb: \> exit ou quit (sai da máquina remota)
Caminho para um cliente MS Windows acessar o compartilhamento
# Iniciar - Executar - \\IP_servidor (Digitar o usuário e a senha anteriormente cadastrados)
Limpar cache de credênciais de compartilhamento
Em um sistema operaciona MS-Windows ao acessar um compartilhamento é feito um cache das credenciais usadas. Para limpar esse cache digite:
# net use * /delete (deleta todos os cache de credênciais de compartilhamento)# net use \\10.1.1.1\util /delete (deleta o cache de credênciais do compartilhamento "\\10.1.1.1\util")
# vi /etc/fstab (arquivo de configuração dos pontos de montagem do sistema)
//IP_Servidor/directory /mount_point smbfs username=teste,password=123456,rw,iocharset=utf8 0 2 (sintaxe)
//10.1.1.5/publico /mnt smbfs username=teste,password=123456,rw,iocharset=utf8 0 2 (exemplo)
# mount -a (monta o compartilhamento acima)
; winbind separator = + (essa opção tem a função de mudar o simbolo que separa o dominio do usuário. O padrão é o "\" (dominio\user). Mas se colocar outro símbolo, por exemplo, "+", aí ficaria assim "dominio+user")
guest ok = yes (essa opção tem a função permitir acessar compartilhamentos sem autênticação. Ela deve fica nas opções do diretório que deseja compartilhar)