Servidor de Arquivo completo
Para instalar o servidor do Samba é necessário que os seguintes pré-requisitos estejam instalados.
Pré-requisitos:
- Ubuntu Server (pode ser outro)
- Instalar e Configurar o Gosa
Para aqueles que estão começando agora, definiria o SAMBA como sendo um servidor de autenticação de desktop Windows na rede. Claro que essa é uma definição bem superficial levando em consideração os recursos que o SAMBA tem, por outro lado, a grande maioria usa o SAMBA realmente para fazer isso, autenticar e armazenar arquivos de usuários do Windows.
Com o SAMBA é possível compartilhar recursos entre maquinas UNIX/Linux e Windows. Neste artigo vamos ficar mais focado na parte de autenticação, fazendo o Samba funcionar como um verdadeiro PDC.
1. LDAP
Vamos começar a configuração do SAMBA pelo LDAP. Já escrevi um post que mostra como instalar e configurar o LDAP e o GOsa. Leia este artigo e configure o GOsa e LDAP antes de continuar a configuração.
Com o LDAP e GOsa instalado, vamos precisar que o sistema Linux reconheça os usuários cadastrados na base LDAP. É procedimento é necessário para atribuir permissões para os usuários da base LDAP.Caso você queira utilizar cota, só é possível habilitando o usuário LDAP juntamente com os usuários do sistemas.
Para que isso aconteça é preciso instalar um pacote chamado libnss-ldap e configurar o arquivo /etc/nsswitch.conf. O comando a seguir faz a instalação.
[root@cabeca]#apt-get install libnss-ldap
Durante a instalação, o sistema vai solicitar algumas informações sobre a base LDAP, tais como endereço, usuário de administração. Todas essas informações são gravadas dentro do arquivo /etc/ldap.conf. Segue um modelo do arquivo, altere conforme as suas configurações.
- /etc/ldap.conf
base dc=trigo uri ldap://localhost ldap_version 3 binddn cn=manager,dc=trigo bindpw x rootbinddn cn=manager,dc=trigo pam_password md5
O próximo passo é fazer o sistema Linux ir buscar os usuários também na base LDAP. Para isso é necessário que seja alterado o arquivo /etc/nsswitch.conf. Segue a forma como o arquivo deve ficar.
- /etc/nsswitch.conf
passwd: files ldap group: files ldap shadow: files ldap
No arquivo nsswitch está definido que os usuários serão pesquisados primeiramente no arquivo local (/etc/passwd, /etc/group,/etc/shadow) e caso não encontre este usuário, o mesmo será pesquisado na base LDAP. Para testar se tudo está funcionando de acordo, execute o comando getent e olhe se os usuários da base LDAP estão sendo listados também.
[root@cabeca]# getent passwd
Se o comando listar os usuários da base LDAP, o sistema está pronto para receber o SAMBA.
2. Criação de Usuários pelo GOsa
Antes da criação do usuário no sistema GOsa, vamos preparar o ambiente para a criação do diretório home do usuário no sistema de arquivo. Esse procedimento para criar o usuário é feito através de um script que é executado pelo GOsa na hora da criação do usuário. É importante frisar que é possível colocar outras tarefas nesse arquivo, tais como definição de quotas.
Como o script é executado pelo GOsa, é necessário dar permissão de administrador para o usuário do apache para executar esse script. Se não fizer isso não será possível a criação dos diretórios. Altere o arquivo /etc/sudoers, como definido a seguir.
- /etc/sudoers
www-data ALL=(ALL) NOPASSWD:ALL
Com a configuração do sudo pronta, vamos configurar o GOsa para executar o script "create_user.sh" toda vez que um usuário for criado e "delete_user.sh" toda vez que um usuário for apagado do GOsa.
- /etc/gosa/gosa.conf
Altere o arquivo gosa.conf, acrescentando a linha abaixo no plugin do posixAccound. Este plugins já existe no arquivo, é preciso apenas completar a linha com as variáveis postcreate e postremove.
<plugin acl="default" class="posixAccount" icon="posix.png" path="plugins/personal/posix" postcreate="/usr/bin/sudo /etc/gosa/create_user.sh %uid" postremove="/usr/bin/sudo /etc/gosa/delete_user.sh %uid"> </plugin>
A seguir estão os dois scripts que serão executados pelo GOsa. Lembre-se de criá-los no diretório /etc/gosa/.
- create_user.sh
#!/bin/bash HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;}) if [[ -d $HOME ]]; then exit 1 fi GROUP=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:\([[:digit:]]*\):.*/{s//\1/;p;q;}) mkdir $HOME chown $1:$GROUP $HOME
-
delete_user.sh
#!/bin/bash HOME=$(getent passwd $1| sed -n -e /^$1:x:[[:digit:]]*:[[:digit:]]*:.*:\(.*\):.*/{s//\1/;p;q;}) if [[ -d $HOME ]]; then rm -rf $HOME fi
3. Recursos do GOsa
Com o Gosa instalado e os scripts para criar os diretórios funcionando, vamos criar os usuários no GOsa. O Processo é bem simples. Na tela iniciar como mostra a figura 1, acesse o ícone "Create User".
Figura – Browser de usuários
Em seguida uma tela com o cadastro do usuário é aberto. A primeira tela de cadastro é sobre informações gerais do usuário. Preencha com cuidado os campos "last name","first name", "login", como mostra a figura 2. Também é possível enviar uma foto.
Figura 2 – Informações gerais sobre o usuário
Com as informações gerais criadas, click na aba "UNIX" para criar a conta Unix deste usuário. Preencha as informações tomando cuidado para a opção "Home Directory" que será o diretório do usuário. Para este exemplo estamos criando dentro do diretório /home/arquivos, como mostra a figura 3. Verifique se o diretório "arquivos" existe dentro do diretório home. Nesta aba também é possível definir os grupos de trabalho. Lembrando que os usuários que estiverem dentro do grupo "Domain Admins" podem colocar as máquinas no domínio.
Figura 3 – Criação da conta UNIX
Após a criação da conta "UNIX", click na aba "SAMBA" para criar a conta do SAMBA. Mude a unidade de rede para L:. Olhe as propriedades de travar conta de usuário, data para trocar senhas, como mostra a figura 4.
Figura 4 – Criação da conta SAMBA
Ao termino da configuração click na opção "SAVE" e o sistema vai solicitar a senha do usuário.
- Template
A criação dos template é um facilitador para a criação das contas dos usuários. As permissões, grupos e propriedades são automaticamente passados para os usuários. Par criar um novo template, click no ícone "Create New Template" no browser de usuário, como mostra a figura 5.
Figura 5 – Criação do template
A próxima tela é para definir o nome do template e algumas propriedades gerais, como mostra a figura 6.
Figura 6 – Definição do nome do template
Para criar a conta UNIX, click na aba "UNIX" e defina as propriedades do usuário. Perceba que no campo "Home Directory" ficou com o valor "/home/arquivos/%uid", como mostra a figura 7. No lugar do %uid vai entrar no login do usuário quando um novo usuário for criado utilizando este template.
Figura 7 – Criação da conta UNIX pelo template
Na aba "SAMBA" crie a conta geral do SAMBA, como mostra a figura 8.
Figura 8 – Criação da conta SAMBA do Template
Ao criar um novo usuário, o GOsa vai perguntar em qual template será criado e todas as propriedades serão passada ao usuário evitando erros, como mostra a figura 9.
Figura 9 – Criação de usuário pelo Template
O GOsa trabalha com ACLs, portanto você pode definir quais usuários podem criar outros usuários, quais podem alterar a senha e assim por diante.
Com o GOsa e os usuário criados, vamos passar para a configuração do SAMBA.
4. Configuração do Samba
O arquivo de configuração do SAMBA tem uma particularidade bem interessante. Todas as configurações ficam dentro de um contêiner que inicia com uma palavra entre "[ ]". Todos as seções que abre com "[ ]" são compartilhamentos criados, exceto o primeiro que é o global que define toda a configuração para o servidor. Antes de começar a configuração vamos fazer a instalação do SAMBA.
[root@cabeca]# apt-get install samba
A seguir temos um arquivo de configuração do samba, este arquivo está bem completo e pode ser utilizado para um servidor em produção, após alguns ajustes de acordo com a sua necessidade.
- /etc/samba/smb.conf
A seguir temos o arquivo smb.conf que é o arquivo de configuração do SAMBA, por questão didática, colocamos os comentários do comando logo a frente do comando, e todos os parâmetros que estão em negrito devem ser alterados de acordo com a sua configuração. Este arquivo de configuração está configurado para um cenário que tem vários usuários acessando o servidor e tem um compartilhamento chamado "GERAL" para gravar arquivos em comuns. Os profiles dos usuários ficarão no servidor e quando o usuário realizar o login no Windows será executado um script que vai ajustar à hora do computador de acordo com o servidor e fazer o mapeamento do geral.
O arquivo smb.conf a seguir está todo colorido bem carnavalesco, coloquei desta forma para agrupar os parâmetros afim.
[global] |
#Abre a seção da configuração Principal. |
netbios name = BACULO |
#Esta função define o nome da máquina na rede Windows. |
workgroup = BACULO.NET |
#Define o grupo que a mais vai estar no windows ou o domíno. |
server string = Servidor de Arquivos e Autenticao |
#Descrição sobre o servidor Samba |
name resolve order = lmhosts wins bcast |
#Essa opção define a ordem que será utilizado para resolver nome/IP |
map to guest = Bad User |
#Define que a conta guest vai ser usada na rede (lembre-se de #liberar o "guest ok =yes" nos compartilhamentos que guest terá #acesso |
guest account = nobody |
#Define qual usuário do unix será usando como guest |
null passwords = No |
#Permite ou não um usuário acessar a conta com a senha em branco. |
security = user |
#Define que a segurança vai ser por usuário autenticado. |
encrypt passwords = Yes |
#Samba vai aceitar cryptografia. WinNT 4.0 SP3 e superiores |
update encrypted = Yes |
|
interfaces = eth0 192.168.10.0/24 |
#Especifica a interface de rede que o samba vai trabalhar, se forem #todas as interfaces, comente essa opção. É possível também #especificar a rede. |
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully* |
#Habilita alteração de senha pelo windows. |
passwd program = /usr/sbin/smbldap-passwd %u |
#Programa para alterar a senha |
log level = 1 |
#Habilita o nível de debug |
syslog = 1 |
#Mapeia o log para ser registrado pelo syslog |
log file = /var/log/samba/%m.log |
#Define que os logs serão feitos por nome da maquina (%m). |
printcap name = /etc/printcap |
#Define o arquivo de configuração da impressora. Se estiver usando #cups mude essa opção. |
max log size = 100000 |
#Tamanho máximo do arquivo de log (Kilobytes) |
time server = yes |
#O samba passa a ser um servidor de Time para as máquinas Windows |
os level = 200 |
#Este parâmetro define o nmbd master da rede. Maior número |
local master = Yes |
#Define que o servidor poderá se tornar o servidor master da rede |
domain master = Yes |
#Este parametro trocar o workgroup em um domínio |
preferred master = Yes |
#Define que o servidor de preferencia na eleição de domínio na rede |
domain logons = Yes |
#Este parâmetro permite que maquina win9x tenha netlogon no domínio |
logon script = logon.vbs |
#Define o script que vai ser executado na hora do login. |
logon path = \\BACULO\profiles\%U |
#Define o local de armazenamento do perfil |
logon drive = L: |
#Define a letra da únidade do HOME |
wins support = Yes |
#O Samba passa a ser o servidor Wins da Rede |
admin users = "@Domains Admins",root |
#Define os usuários/grupos que serão os administradores do domínio |
ldap passwd sync = Yes |
#Permite que sincronizar a senha do Samba com NT e LM hash, quando #a senha for alterada pelo windows. |
ldap delete dn = No |
#Não permitir que o samba apague o usuário. Somente o Gosa faz #isso. |
passdb backend = ldapsam:ldap://localhost |
#Configurações do servidor LDAP |
ldap admin dn = cn=Manager,dc=trigo |
#Define o administrador da base LDAP |
ldap suffix = dc=trigo |
#Define o suffix da base LDAP |
ldap ssl = no |
#Define se o LDAP está com SSL ou não |
ldap user suffix = ou=people |
#Define o suffix que ficarão os usuários |
ldap group suffix = ou=groups |
#Define o suffix que ficarão os grupos |
ldap machine suffix = ou=computers |
#Define o suffix que ficarão as contas dos computadores |
ldap idmap suffix = ou=Idmap |
#Define o suffix que ficarão os idmaps para o winbind |
ldap replication sleep = 5000 |
#Valor em milisegundos |
add machine script = /usr/sbin/smbldap-useradd -a -w %m |
#Script para criar maquina no LDAP |
recycle:exclude = *.tmp *.temp *.o *.obj ~$* |
#Define os arquivos que não serão gravados na lixeira |
recycle:keeptree = Yes |
#Cria diretório dos arquivos deletados, fica mais organizado |
recycle:touch = Yes |
#Se a data do arquivo eliminado pode ser trocado pela data da #exclusão. Muito útil para limpar a lixeira |
recycle:versions = Yes |
#Permite fazer backup de versão de arquivos repetidos |
recycle:noversions = *.doc|*.xls|*.ppt|*.dwg|*.dxf|*.txt |
#Não faz backup dessas extensões de arquivo |
recycle:repository = /home/lixeira/%U |
#Local que vai ser armazenado os arquivos deletados |
recycle:maxsize = 1000000 |
#Define em bytes o tamanho máximo de um arquivo que vai encaminhado #para a lixeira. O valor zero é sem limite. |
vfs objects = recycle audit |
#Habilita o modulo de lixeira e o sistema de auditoria |
default case = lower |
#Usa internamente caixa baixa |
case sensitive = no |
#Desabilita o case sensitive |
unix charset = iso8859-1 |
#Define o charset do UNIX que vai ser mostrada no compartilhamento |
display charset = iso8859-1 |
#Define o charset que irá utizar para imprimir as mensagens, o #padrão é utizar o valor do "LOCALE", ou você pode definir. |
fstype = NFS |
|
idmap uid = 10000-15000 |
#Mapeamento de uid para o idmap winbind |
idmap gid = 10000-15000 |
#Mapeamento de gid para o idmap winbind |
nt acl support = Yes |
#Habilita o suporte de acl do net. Lembre-se de ativar partição |
protocol = NT1 |
|
announce as = NT Server |
#Define o tipo de servidor que vai anunciar o nmbd |
announce version = 4.5 |
#Define a versão do servidor |
template shell = /bin/false |
#Desabilita o shell, no preenchimento das informações pelo winbnind |
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" |
#Script que define o grupo principal de cada usuário. |
winbind use default domain = no |
#Define que não vai usar idmap para os usuários |
read raw = Yes |
#Habilita pacotes de 65.535 bytes, alguns clientes não conseguem #suportar essa negociação. |
write raw = Yes |
#Habilita o raw write quando os dados são transferidos do cliente |
Level2 oplocks = yes |
#Aumenta o acesso aos arquivos que não são escritos, tais como exe |
max xmit = 65535 |
#Determina o tamanho máximo de um pacote que será negociado pelo #samba. O valor 65535 é o maior. |
dead time = 15 |
#Valor decimal que representa o número de minuto inativo para #considerar que a conexão esta morta de desconectar. |
getwd cache = Yes |
#Essa é uma refinamento na performace. Ativa um algoritmo de #caching o que reduzir o tempo necessário para getwd(). |
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE=100 |
#Opção para inicialização do socket |
[homes] |
#Cria o compartilhamento Home |
comment = Diretório Home |
#Comentário sobre o compartilhamento |
valid users = %S |
#usuário que pode acessar o compartilhamento. Apenas o dono (%S) |
browseable = no |
#Indica que a diretória não aparece ao fazer o network browse |
writeable = yes |
#Mostra o compartilhamento |
printable = no |
#Habilita a opção de impressão(impressora) no compartilhamento |
read only = no |
#Define que o compartilhamento não é somente leitura |
available = yes |
#Define que o compartilhamento esta disponível. |
inherit permissions = yes |
#Herda permissão de arquivos e diretório do diretório home |
follow symlinks = no |
#Desabilita o acesso a links |
wide links = no |
#Define se os arquivos com links fora do diretório serão acessados |
force directory mode = 0771 |
#Força a permissão dos diretórios |
force create mode = 0771 |
#Força a permissão dos arquivos |
force group = administrators |
#Força que o grupo seja administradores |
create mode = 0771 |
#Define a permissão que será aplicada ao criar um arquivo |
directory mode = 0771 |
#Define a permissão que será aplicada ao criar um diretório |
map archive = yes |
#Habilita os mapeados de bits do dos para UNIX quando um arquivo é #modificado. |
map system = no |
#Define se o estilo do DOS vai ser mapeado para execução UNIX |
map hidden = no |
#Define se o estilo do DOS para arquivos ocultos vai ser mapeado #para UNIX |
[Geral] |
#Compartilhamento Geral |
comment = Area Publica para todos |
#Comentário sobre o compartilhamento |
path = /home/arquivos/geral |
#Caminho do diretório que será utilizado como geral |
browseable = Yes |
#Indica que a diretória aparece ao fazer o network browse |
public = Yes |
#Torna o compartilhamento público |
[netlogon] |
#Compartilhamento que ficarão os script para execução |
comment = NetLogon Script |
#Comentário sobre o compartilhamento |
path=/etc/samba/netlogon |
#Diretório que ficarão os scripts |
public = no |
#Não é um compartilhamento público |
browseable = no |
#Indica que a diretória não aparece ao fazer o network browse |
read only = yes |
#Define o compartilhamento como somente leitura |
printable = no |
#Não habilita a opção de impressão(impressora) no compartilhamento |
Level2 oplocks = yes |
#Aumenta o acesso aos arquivos que não são escritos, tais como exe |
write list = "@Domains Admins" |
#Define o grupo que pode escrever no compartilhamento |
[profiles] |
#Compartilhamento para armazenar os profiles dos usuários |
comment = Network User Profiles |
#Comentário sobre o compartilhamento |
path = /home/profiles |
#Diretório que ficarão os profiles |
read only = no |
#Define que o compartilhamento não é somente leitura |
create mask = 0700 |
#Define a permissão para arquivos criados |
directory mask = 0700 |
#Define a permissão para diretórios criados |
Browserable = no |
#Indica que a diretória não aparece ao fazer o network browse |
Pegue o arquivo smb.conf limpo.
Após fazer a configuração do arquivo smb.conf, vamos ajustar os compartilhamentos do netlogon e do profile.
-
Netlogon
O compartilhamento netlogon é criado para executar um script na hora do login da máquina na rede. O parâmetro "logon script" do smb.conf define como vai ser o script de logon e o nome. Em nosso caso estamos utilizando apenas um script para todos os usuários, e este script tem o nome de "logon.vbs". Tem caso que é necessário executar um script por usuário ou por grupo.
Crie o arquivo logon.vbs dentro do "/etc/samba/netlogon", se não existir a diretório netlogon, deve ser criado. Lembre-se de criar este arquivo no Windows porque ele é executado no Windows. Se fizer no Linux pode dar algum tipo de erro.
-
/etc/samba/netlogon/logon.vbs
' VBScript. 'WScript.Echo(Mapeando...) Dim net Set objShell = CreateObject(Wscript.Shell) Set net = CreateObject(WScript.Network) net.MapNetworkDrive g:, \\BACULO\geral, False objShell.Run net time \\BACULO /set /y, 0, TRUE
Para o Windows alterar a hora, é preciso alterar o GPO do XP para permitir os usuários altere as datas.
- Profiles
No compartilhamento profiles ficam todos os perfis dos usuários. Crie o diretório "/home/profiles" caso não exista.
Após essas configurações, é testar os parâmetros do SAMBA e em seguida passar a senha do administrador do LDAP (no nosso exemplo é o cn=mananger,dc=trigo) para o samba.
[root@cabeca]# testparm
Se não aparecer nenhum erro, continue.
[root@cabeca]# smbpasswd -w senha_do_manager<br />
- Lixeira
Para o funcionamento da função lixeira, é preciso criar o diretório /home/lixeira e mudar a permissão para permitir que os arquivos apagados sejam encaminhados para o diretório definido.
[root@cabeca]# mkdir /home/lixeira [root@cabeca]# chmod 777 /home/lixeira
Os usuários não terão acesso diretamente aos arquivos apagados.
- Auditoria
Para ativar o sistema de auditoria nas pastas, é necessário acrescentar a seguinte entrada no /etc/syslog.conf.
.*;user.!warn;authpriv.none;cron.none;mail.none;news.none /var/log/samba/audit.log
Crie o arquivo /var/log/samba/audit.log. Neste arquivo que ficarão os logs da auditoria nas pastas.
[root@cabeca]# touch /var/log/samba/audit.log
Agora podemos iniciar o samba.
[root@cabeca]# /etc/init.d/samba restart
5. Adicionando Windows no domínio Samba
Com todas as configurações prontas, vamos colocar uma maquina no domínio e fazer os testes. Com o arquivo smb.conf acima foi possível fazer alteração de senha pelo Windows , recuperar arquivos apagados através da lixeira, armazenar o perfil dos usuários no servidor.
A figura 10 mostra o Windows XP entrando no domínio. A conta da máquina é criada automaticamente na base LDAP.
Figura 10 – Windows entrando no domínio
Com a máquina no domínio, os usuários cadastrados na LDAP podem fazer login e o mapeamento da unidade home e do compartilhamento Geral devem ser feitos. A sincronização da hora com o servidor também deve ser feito no login.
-
Mapeamento
Figura 11 – Mapeamento
Agora temos um servidor de autenticação completo.
22 comentários
Enviar um comentáriohttp://www.lok-it.net/encrypted-flash-drive/
USB Encryption