Servidor Debian - Parte 2 - Samba

Samba

No início o Samba era um sistema de rede projetado para construir pequenas redes locais.

Havia naquele sistema um “pedaço de software”, conhecido até hoje como NetBIOS (Network Basic Input Output System), que fornecia uma interface entre os programas e o hardware de rede.

O NetBIOS passou por uma grande evolução, tornando-se capaz de trabalhar com protocolos de alto nível — entre eles o famoso TCP/IP. Mais tarde, depois de o Windows se consolidar no mercado, a Microsoft acrescentou ao protocolo SMB (Service Message Block) um controlador de domínio (Windows NT Domain Control).

Dentre tantas funcionalidades presentes no servidor Samba, podemos destacar:

  • Compartilhamento de arquivos, impressoras, diretórios, entre outros, com máquinas que rodam o Windows;
  • Controle de acesso e privilégios;
  • Resolução de nomes (DNS);
  • Configurações a partir de ambientes remotos.

Vale ressaltar que os recursos do Samba são bastante completos. Não por acaso, muitas corporações que possuem equipes de TI dedicadas usufruem dos recursos do Samba.
Que vantagens o Samba oferece?

Como a principal função do servidor Samba é simular um servidor Windows, mais precisamente as distribuições do Windows Server, inevitavelmente o custo-benefício entra em jogo a favor do Samba.

Levando em consideração os bugs, que são muito menos recorrentes no Samba, a estabilidade e a segurança — visto que o software é instalado em um sistema GNU/Linux —, o sistema da Microsoft fica para trás.

Instalação


apt install samba


Configuração

Acesse o arquivo de configuração:
nano /etc/samba/smb.conf


[global]
workgroup = bureau
netbios name = dataserver

[publica]
path = /arquivos/publica
null passwords = yes
available = yes
read only = yes
guest ok = yes
writeable = yes
browseable = yes
force create mode = 777
force directory mode = 777

[rh]
path = /arquivos/rh
available = yes
read only = no



Esse é um exemplo simples de compartilhamento de pasta no samba.
Depois de salvar, digite o comando testparm para verificar erros no arquivo de configuração.

testparm

Para adicionar usuários para compartilhar algum diretório, basta criar o diretório e criar o usuário no samba.

chmod 777 -R /pastaCompartilhada
adduser usuario
smbpasswd -a altair

Para reiniciar o samba basta usar o comando:
systemctl restart smbd 
systemctl restart nmdb

O samba não é apenas um servidor para compartilhar pastas e impressoras, ele também pode gerenciar um domínio de rede completo, no melhor estilo Windows Server!


Ex.:

[global]
 workgroup = dominioPDC
 netbios name = samba
 server string = Servidor Samba

 admin users = @"%L\Domain Admins"

 #keepalive = 300
 #deadtime = 10
 
 domain master = yes
 domain logons = yes
 logon script = netlogon.vbs

 security = user
 encrypt passwords = true
 passdb backend = tdbsam

 prefered master = yes
 local master = yes
 os level = 100
 wins support = yes

 #deixar em branco caso não seja necessário o Roaming Profiles
 #armazena somente  pasta "Desktop", "Modelos" e "Meus Documentos", além das entradas do menu iniciar, cookies, arquivos temporários do IE e bookmarks.
 logon home = \\%L\%u\.profiles
 logon path = \\%L\profiles\%u
 #logon home = 
 #logon path = 
 #wins support = yes

 time server = yes
 #dns proxy = no
 #log file = /var/log/samba/log.%m
 #max log size = 1000
 #syslog = 0
 #panic action = /usr/share/samba/panic-action %d
 #add machine script = /usr/sbin/useradd -s /bin/false -d /var/lib/nobody %u


[netlogon]
 path = /var/samba/netlogon
 read only = yes
 browseable = no
 guest ok = yes

[arquivos]
 path = /var/arquivos
 guest ok = yes
 #read only = yes
 writable = yes
 browseable = yes
 force directory mode = 777

[homes]
 valid users = %S
 guest ok = yes 
 browseable = no


#Aqui são configurações para ativar os perfis remotos, caso o usuário possua muitos arquivos pode sobrecarregar a rede e causar demora no momento do login e logout
[profiles]
 path = /var/profiles
 writable = yes
 browseable = no
 create mask = 0600
 directory mask = 0700
 
 
 
 
 
 
 
  • Dica: sempre usar testparm após a configuração. Caso esteja tudo ok aparecerá "Server role: ROLE_DOMAIN_PDC"
  • Verificar se o root do sistema foi cadastrado no samba e se as senhas são iguais: smbpasswd -a root
  • É necessário adicionar a linha "/bin/false" no arquivo /etc/shells
  • Criar a pasta do path na seção [netlogon]. No nosso caso está em /var/samba/netlogon: mkdir -p /var/samba/netlogon e chmod 775 /var/samba/netlogon
  • Criar os usuários e senhas: adduser teste
  • No samba também smbpasswd -a teste
  • Adicionar o login de máquina: useradd -d /dev/null -s /bin/false pc01$ (não tem diretório home (-d /dev/null), nem shell (-s /bin/false) e é uma conta de máquina ($ ao fim do nome)) passwd -l pc01
  • smbpasswd -a -m pc01
  • Dica: smbstatus mostra todos os usuários logados e a máquina em que estão.

Roaming Profiles

  • No caso de utilização do Roaming Profiles é necessário criar o diretório .pds: mkdir /home/teste/profile.pds
  • chown -R teste.teste /home/teste/profile.pds
  • Criar a pasta "/var/profiles", onde será armazenado as informações o usuário: mkdir /var/profiles e dar permissões chmod 1777 /var/profiles
  • Obs: Para excluir o usuário: smbpasswd -x teste e depois userdel -r teste. O -r é para exluir todo o cache e maildir da conta.

Adicionando usuário no grupo de administradores do windows

  • Primeiro é necessário criar os grupos no linux groupadd -g 512 ntadmins, groupadd -g 513 ntusers e groupadd -g 512 ntguests
  • Mapeá-los no samba: net groupmap add ntgroup="Domain Admins" unixgroup=ntadmins rid=512 type=d, net groupmap add ntgroup="Domain Users" unixgroup=ntusers rid=513 type=d e net groupmap add ntgroup="Domain Guests" unixgroup=ntguests rid=514 type=d
  • Adicionar os usuários nos seus devidos grupos com o comando gpasswd -a dener ntadmins

Proxy Autenticado

  • Criar a pasta compartilhada na seção [netlogon]
  • Criar um arquivo chamado "proxyauth" somente com a palavra "allow" dentro dele e colocá-lo na pasta netlogon.
  • No caso de utilização do proxy autenticado juntamento com o squid, é necessário realizar o seguinte teste: /usr/lib/squid3/smb_auth -W dominioPDC - U 192.168.2.2 -d
  • Digitar o nome do usuário e a senha separados por espaço: teste 123123
  • O seguinte resultado deverá aparecer:
 
Domain name: dominioPDC
Pass-through authentication: no
Query address options: -U 192.168.2.2 -R
Domain controller IP address: XX.XX.XX.XX
Domain controller NETBIOS name: SAMBA
Contents of //SAMBA/NETLOGON/proxyauth: allow
OK
 
Porém provavelmente aparecerá este:
 
Domain name: dominioPDC
Pass-through authentication: no
Query address options: -U 192.168.2.2 -R
Domain controller IP address: XX.XX.XX.XX
Domain controller NETBIOS name: SAMBA
Contents of //SAMBA/NETLOGON/proxyauth:
ERR
 
 
 
  • Para resolver este erro (Um problema "na sintaxe do comando smbclient da nova versão 3.3 do Samba"), é necessario acessar o arquivo /usr/lib/squid3/smb_auth.sh e alterar a linha de authinfo=`smbclient "//$dcname/$AUTHSHARE" -I $dcip -d$ 0 -E -W "$DOMAINNAME" -c "get $authfilebs -" 2>/dev/null` para authinfo=`$SAMBAPREFIX/bin/smbclient "//$dcname/$AUTHSHARE" -U $USER -I $dcip -d 0 -E -W "$DOMAINNAME" -c "get $authfilebs -" 2>/dev/null`
  • No mesmo arquivo, adicionar logo no início, a seguinte linha: export SAMBAPREFIX=/usr
  • Salvar o arquivo e executar os três comandos seguintes:
 
 mkdir -p /usr/local/samba/bin
ln -s /usr/bin/nmblookup /usr/local/samba/bin/nmblookup
ln -s /usr/bin/smbclient /usr/local/samba/bin/smbclient 
 
 
 
  • Executar novamente o teste: /usr/lib/squid3/smb_auth -W dominioPDC - U 192.168.2.2 -d seguido do usuário e senha.
  • Agora os computadores clientes solicitarão usuário e senha para liberar o acesso à internet.

Netlogon

  • Dica: Para executar o arquivo netlogon.bat, é necessário ser administrador do windows
  • Criar o arquivo netlogon.vbs (o arquivo .vbs executa o .bat e impede que a tela do prompt se abra ao logar com o usuário, impedindo que o cidadão feche-o) com o conteúdo:
 
 Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.run "%comspec% /c \\sambaPDC\netlogon\netlogon.bat",0
Set WshShell = Nothing
 
 
 Criar também o arquivo netlogon.bat (Caso o arquivo netlogon.bat foi criado no linux  é necessário rodar unix2dos netlogon.bat para converter no formato ms-dos)
 
 
 
rem O "rem" é utilizado para comentários no ms-dos

rem net use m: /HOME

rem Mapear unidade de rede
net use O:\\samba\arquivos /yes

rem Sincroniza hora com o servidor PDC
net time \\samba /set /yes

rem A partir daqui é possível ativar ou desativar os itens do windows.
rem "REG_DWORD /d 00000001 /f" basta mudar o final do hexadecimal

rem Desativa o painel de controle
rem 1 = Bloqueia / 0 = Libera
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoControlPanel /t REG_DWORD /d 00000001 /f

rem Define o papel de parede
rem Inserir o arquivo do papel de parede na pasta netlogon
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ConvertedWallpaper /t REG_SZ /d "\\samba\netlogon\wallpaper.jpg" /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v OriginalWallpaper /t REG_SZ /d "\\samba\netlogon\wallpaper.jpg" /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d "\\samba\netlogon\wallpaper.jpg" /f 

rem Bloqueia a alteração de papel de parede
rem 1 = Bloqueia / 0 = Libera
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoDesktopCleanupWizard /t REG_DWORD /d 0x00000001 /f

rem Bloqueia Página para configurações de tema
rem 1 = Ativa / 0 = Desativa
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoThemesTab /t REG_DWORD /d 0x00000001 /f

rem Desativa o firewall do windows
rem 1 = Ativa / 0 = Desativa
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile" /v EnableFirewall /t REG_DWORD /d 0x00000000 /f

rem Bloqueia a Notificação de Anti Virus
rem 0 = Ativa / 1 = Desativa
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Security Center" /v AntiVirusDisableNotify /t REG_DWORD /d 0x00000001 /f

rem Bloqueia a Notificação de Firewall
rem 0 = Ativa / 1 = Desativa
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Security Center" /v FirewallDisableNotify /t REG_DWORD /d 0x00000001 /f

rem Bloqueia a Notificação de Atualização Automática
rem 0 = Ativa / 1 = Desativa
reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Security Center" /v UpdatesDisableNotify /t REG_DWORD /d 0x00000001 /f

rem Impede a exclusão de impressoras
rem 1 = Ativa / 0 = Desativa
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v NoDeletePrinter /t REG_DWORD /d 0x00000000 /f 
 
 
 
 
 

Mais vistos:

Utilitários

Disco 100% no Windows 10