Você está na página 1de 9

Samba como PDC (Primary Domian Controler – Controlador Primários de Domínio)

1. Instalar o Samba e seus pacotes:

# apt-get install samba samba4-common-bin smbclient

Composição dos usuários da empresa:


Pasta/Diretório Grupo Login

joao.santana João Carlos Santana (gerente desenvolvimento) joao.santana

carlos.silva Carlos José Silva (desenvolvedor) carlos.silva

daniel.vespasiano Daniel Vespasiano (desenvolvedor) daniel.vespasiano

maria.antoneita Maria Antonieta (gerente teste) maria.antonieta

ubirajara.santos Ubirajara dos Santos (tester) ubirajara.santos

marcelo.pereira Marcelo Pereira (gerente infraestrutura) marcelo.pereira

augusto.silva Augusto da Silva (técnico infraestrutura) augusto.silva

geraldo.castelar Geraldo Castelar (diretor) geraldo.castelar

flavia.nascimento Flávia Nascimento (secretária) flavia.nascimento

Grupos e respectivos diretórios/pastas


Pasta/Diretório Integrantes Logins

desenvolvimento João Carlos Santana (dono do grupo e da pasta) joao.santana

Carlos José Silva (desenvolvedor) carlos.silva

Daniel Vespasiano (desenvolvedor) daniel.vespasiano

Teste Maria Antonieta (dona do grupo e da pasta) maria.antonieta

Ubirajara dos Santos (tester) ubirajara.santos

Infra Marcelo Pereira (gerente infraestrutura) marcelo.pereira

Augusto da Silva (técnico infraestrutura) augusto.silva

Diretoria Geraldo Castelar (dono do grupo e da pasta) geraldo.castelar

João Carlos Santana joao.santana

Maria Antonieta maria.antonieta

Marcelo Pereira marcelo.pereira


2. Adicionar os grupos:

# groupadd desenvolvimento

# groupadd teste

# groupadd infra

# groupadd diretoria

3. Criar os diretórios dos grupos do compartilhamento:

# mkdir -m 770 /home/desenvolvimento

# mkdir -m 770 /home/teste

# mkdir -m 770 /home/infra

# mkdir -m 770 /home/diretoria

4. Alterar os donos dos grupos

# chgrp desenvolvimento /home/desenvolvimento

# chgrp teste /home/teste

# chgrp infra /home/infra

# chgrp diretoria /home/diretoria

5. Renomear o arquivo original Samba:

# cd /etc/samba

# mv smb.conf smb.conf.original

6. Remover o smb.conf

# rm smb.conf

7. Criar o arquivo smb.conf com o conteúdo abaixo:

# nano /etc/samba/smb.conf
[global]
server string = Servidor PDC EMPRESA
workgroup = empresa
netbios name = PDC

domain master = yes


domain logons = yes
logon script = %U.bat
logon drive = H:
preferred master = yes
local master = yes
wins support = yes
log file = /var/log/samba/%m.log
max log size = 100

security = user
encrypt passwords = yes
passdb backend = tdbsam
logon path =
os level = 100

log level = 1
ntlm auth = yes
lanman auth = yes
client ntlmv2 auth = yes
case sensitive = no

add machine script = /usr/sbin/useradd -d /dev/null -s /sbin/nologin "%u"

veto files = /*.mp3/*.mpg/*.avi/*.(*)/

directory mask = 07777


force unknown acl user = yes

[publico]
comment = Pasta Publica
available = yes
path = /home/publico
writable = yes

[homes]
comment = Pasta pessoal
browseable = no
writable = yes
valid users = %S
create mode = 0664
dierctory mode = 0775

[netlogon]
comment = Pasta para os servicos de Logon
path = /home/netlogon
read only = yes
guest ok = yes
writeable = no
share modes = no

[printers]
comment = Impressoras
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700

[print$]
comment = Drivers das Impressoras
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[desenvolvimento]
comment = Pasta Desenvolvimento
path = /home/desenvolvimento
browaseable = yes
valid users = @desenvolvimento
[teste]
comment = Pata Teste
path = /home/teste
browseable = yes
valid users = @teste

[infra]
comment = Pasta Infraestrutura e Suporte
path = /home/infra
browseable = yes
valid users = @infra

[diretoria]
comment = Pasta Diretoria
path = /home/diretoria
browseable = yes
valid users = @diretoria

Configurações:
workgroup = empresa
- especifica o grupo de trabalho ou domínio da rede;
netbios name = PDC
- em redes NETBEUI todo computador é identificado por um nome de 16 caracteres que deve
ser único na rede, onde 15 identificam o computador e 1 identifica o tipo de serviço;
server string = Controlador de Domínio Empresa
- banner que será exibido no compartilhamento;
name resolver order = lmhosts hots wins bcast
- define a ordem de pesquisa para a resolução de nomes no Samba;
anounce as = NT SERVER
- especifica o tipo de servidor nmdb (servidor de nomes NetBios) que vai ser divulgado na
rede; o default é igual ao Windows NT. As opções são: NT, NT Server, NT Workstation, Win95
ou WfW;
printcap name = CUPS
- indica o arquivo para busca das definições das impressoras;
load printers = yes
- disponibiliza as impressoras para a rede;
printing = cups
- indica o tipo de serviço de impressão;
log file = /var/log/samba/%m.log
- indica o arquivo de logo do Samba;
max log size = 100
- indica o tamanho máximo do log;
debug level = 1
- define o nível do log a ser gravado, quanto maior o valor, mais detalhes o log terá, se for 0
(zero) não gravará log;
security = user
- define o tipo de acesso ao compartilhamento, ou seja, o nível de autenticação, que pode ser:
Share (solicita senha de acesso para cada recurso de compartilhamento), user (permissões são
dadas de acordo com o login do usuário), server (a senha são validadas em outro servidor
Samba), domain (só usado se o host for adicionado a um domínio Windows usando o comando
smbpasswd, onde o login e senha são enviados para o PDC da rede);
encrypt password = yes
- indica o uso de senhas criptografadas, em que as senha são criptografadas antes de serem
transmitidas;
smb passw file = /etc/smbpasswd
- indica o caminho do arquivo de senha do Samba;
username map = /etc/samba/smbusers
- permite estabelecer equivalência entre os logins caso os mesmo não tenham o mesmo nome
no Windows e no Linux;
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
- define os sockets a serem usados pelo Samba para melhora de performance no envio de
pacotes pela rede;
shared mem size = 10485760
- especifica o tamanho da memória a ser usada pelo servidor Samba;
hosts allow =
- define os computadores que podem acessar o compartilamento, podem ser usados
endereços IP e rede (hosts allow = 192.168.1. EXCEPT 192.168.1.3 192.168.1.4);
deny hosts =
- define os hosts que não poderão acessar o compartilhamento, segue o mesmo padrão do
allow;
guest account = guest
- usado junto com as opções “guest ok” e “public”, permite que usuário guest se loguem no
compartilhamento sem senha (visitante);
guest account = nobody
- permite acesso ao compartilhamento porém com privilégios praticamente nulos;
guest ok = yes
- se for usada a opção yes (pode ser no também), nenhuma senha será solicitada para o
acesso, sendo atribuídos os privilégios de “guest acconut”;
keepalive = 20
- tempo para verificar o status dos computadores logados no compartilhamento, útil para
verificar travamento de hosts; medido em segundos;
local master = yes
- indica se o servidor Samba irá disputar para ser o autenticador local ou não (yes ou no),
usado junto com a opção “os level”;
domain master = yes
- se estiver setado como “yes" indica que o Samba será o autenticador mestre do domínio, ou
seja o PDC da rede; não se recomenda usar esta opção caso já exista outro PDC na rede;
preferred master = yes
- força uma eleição para o PDC, deve ser usado junto com a opção “domain master = yes”, se
os dois forem usados habilitados juntos, o Samba sempre terá vantagem na concorrência;
time server = yes
- sincroniza a data e hora das estações com o servidor, pode ser “yes”ou “no”; no cliente
Windows digitar: net time \\servidor /set /Yes
share modes = yes
- especifica se os usuários podem compartilhar o mesmo arquivo ou não;
domains logons = yes
- para ativar o recurso de scripts de logon do Samba (netlogon);
os level = 100
- valor para a disputa de mestre de domínio, pode ir de 1 a 255;
preserve case = yes
- preserva ou não (yes ou no) o nome do arquivo como enviado pelo cliente;
default case = lower
- define se os arquivos terão seus nomes todos em maiúsculo ou minúsculo (lower ou upper);
short preserve case = no
- especifica se o nome do arquivo (padrão 8.3) será preservado ou não (yes ou no);
unix charset = iso-8859-1
- define o padrão de caracteres a serem usados; o padrão para Brasil e América Latina é: iso-
8859-1;
client code page = 850
- define o padrão para a página de códigos do servidor Samba que para línguas latinas é: 850;
veto files = /*.mp3
- bloqueia a gravação dos arquivos a serem gravados/copiados/”baixados” no
compartilhamento;
logon script = %U.bat
- define o arquivo onde serão armazenados os scripts de login do Samba;
- Ex: criar arquivo nome_login.bat e iserir: net use y: \\nome_servidor\publico
- A configuração no arquivo fará com que toda vez que o cliente Windows inicie o script .bat
seja inicializado e mapeie a pasta publico como unidade y.
add machines script = /usr/sbin/adduser -n -r -g grupo -d /dev/null -s /bin/false %u
passdb backend = smpasswd
- os dois parâmetros acima são usados para definir o comando para adicionar um host cliente
no Samba;
comment = Pasta pessoal
- banner de comentários sobre o compartilhamento;
browseable = no
- permite em caso de yes que a pasta compartilhada seja visualizada em toda rede e por todos
os usuários, caso seja no, a pasta não será visualizada no ambiente de rede e apenas os
usuários com permissão de acesso poderão visualizá-la usando o comando
\\servidor\pasta_compatilhada
writeable = yes
- se estivem em Yes permitirá aos usuários gravarem na pasta, caso esteja em no, não
permitirá a gravação;
read only = no
- quando em no permite que os usuários gravem no compartilhamento, se estiver em yes será
permitida apenas a leitura;
guest only = no
- permite apenas o usuário guest (convidado) acessar o compartilhamento;
guest ok = no
- permite acesso ou não ao usuário guest (convidado);
printeable = yes
- caso exista impressora de rede disponível deve estar em Yes, se estiver em no
indisponibilizará compartilhamento de impressoras pela rede mesmo que esteja configuradas
para rede;
create mode = 0700
- permissão para criar os arquivos de spool durante a impressão;
write list = login_usuario
- define o usuário que vai ter acesso à escrita no compartilhamento; pode-se usar mais de um
usuário, sendo estes separados por vírgula (jose.junior, carlos.nero) ou um grupo, iniciando o
nome do grupo por @ (@desenvovlimento);
read list = Jose.junior
- define quem terá acesso apenas de leitura ao compartilhamento;
path = /home/publico
- indica o caminho do compartilhamento no servidor;
valid users = @diretoria
invalid users = jose.junior
- definem quem tem direito e quem não tem direito de acesso ao compartilhamento;
max connections = 100
- define o número máximo de acessos ao compartilhamento;
max disc size = 250
- especifica o limite máximo de espaço em disco que o compartilhamento pode usar em Mb;
admin users = carlos.nero
- define usuário ou usuários com privilégios de administração do compartilhamento;
force create mode = 775
force directory mode = 1775
- indica que quando o sistema carregar um arquivo o faça segundo as permissões acima;

8. A seguir realizar o teste utilizando o comando:


# testparm

Load smb config files from /etc/samba/smb.conf


rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[publico]"
Processing section "[homes]"
Processing section "[netlogon]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC

A saída acima determina que o Samba está executando e como PDC.

9. Adicionar os usuários no sistema usando o script a seguir:


echo "Adicionando um novo usuario ao dominio EMPRESA:"

echo "Digite o login do usuario a ser cadastrado (ex: joao.silva):"

read nome

echo "Digite o grupo (desenvolvimento, teste, infra ou diretoria):"

read grupo

groupadd $nome

useradd -g $nome -G $grupo -s /bin/false -d /home/$nome $nome

echo "Digite a senha para $nome ..."

passwd $nome

echo "Digite a senha para $nome logar no sistema"

smbpasswd -a $nome

echo "Criando o diretorio de $nome ..."

mkdir /home/$nome

chown $nome:$nome /home/$nome

chmod 700 /home/$nome

echo " " >> /etc/samba/smb.conf

echo " " >> /etc/samba/smb.conf

echo "[$nome]" >> /etc/samba/smb.conf


echo "comment = Diretorio de dados de $nome" >> /etc/samba/smb.conf

echo "path = /home/$nome" >> /etc/samba/smb.conf

echo "browseable = yes" >> /etc/samba/smb.conf

echo "read only = no" >> /etc/samba/smb.conf

echo "guest ok = no" >> /etc/samba/smb.conf

echo "write list = $nome" >> /etc/samba/smb.conf

echo "writeable = yes " >> /etc/samba/smb.conf

echo " " >> /etc/samba/smb.conf

echo "Digite o nome do computador a ser adicionado (exe: comp01):"

read comp

echo "Digite o grupo do computador (desenvolvimento, teste, infra,


diretoria):"

read grupo

echo "inserindo o computador no grupo ..."

useradd -s /bin/false -d /dev/null $comp

passwd -l $comp

smbpasswd -a -m $comp

echo "Atribuindo privilegios e liberando acesso ao diretorio publico ..."

chmod 1777 -R /home/publico

echo "Reiniciando o servidor samba..."

/etc/init.d/samba restart

10. Atribuir permissão de execução:

# chmod u+x cadastro.sh

E executar:

# ./cadastro.sh

Ou simplesmente digitar:

# bash cadastro.sh

11. Cadastrando usuários nos grupos

# usermod -G diretoria joao.vasconcelos

# usermod -G diretoria maria.antonieta

# usermod -G diretoria marcelo.prereira


12. Reniciar o servidor Samba

# /etc/init.d/samba restart

13. Efetuar o teste usando a máquina virtual Windows.

Obs: pode-se utilizar máquina virtual Windows ou até mesmo a máquina real Windows, basta
apenas inserir ambos na mesma rede, o host com Windows e o serivdor Linux/Samba.

Você também pode gostar