em Sem categoria

Samba como PDC da Rede

Artigo retirado do site Dicas-L

Hoje falarei mais um pouco sobre o Samba, desta vez com ele atuando como PDC da rede: Como validar usuário/senha, colocar um máquina com Windows XP na rede e permitir que o usuário altere sua senha.

Usei o Red Hat 8.0 rodando o Samba 2.2.8a. Abaixo segue meu /etc/samba.conf:

####################################
# Arquivo de Configuracao do SaMBa
# Por Tiago Cruz
# tiagocruz (a) linuxdicas.com.br
# Atualizado em 03/10/2003
####################################

[global]
# Grupo de trabalho/ Dominio
workgroup = TUX
# Nome da maquina do ambiente de rede
netbios name = MAQ_100
netbios aliases = MAQ_100
# Comentario no ambiente de rede
server string = Servidor de dados – Samba Server %v
# Desabilitando o UTF (/etc/sysconfig/i18n) somado a estas opções o SaMBa 2.x
# consegue trabalhar corretamente com a acentuação dos arquivos no RH
client code page = 850
character set = ISO8859-1
# Para conexoes com maquinas > W95
encrypt passwords = Yes
# Tamanho minimo da senha
min passwd length = 4
# Para alterar a senha pela estacao
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %nn *Retype*new*password* %nn *passwd:*all*authentication*tokens*updated*successfully*
# Sincronizar a senha do SaMBa com a do Linux. Desabilite caso tenha problemas
# com a sincronizacao em maquinas W2k
unix password sync = Yes
# Local do arquivo de log
log file = /var/log/samba/%m.log
# Tamanho maximo do mesmo
max log size = 100
# Desempenho
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Arquivo de lote que sera executado no logon
logon script = todos.bat
# Opcoes para PDC da rede
domain logons = Yes
os level = 64
preferred master = Yes
domain master = Yes
printing = lprng
# Para que os arquivos criados fiquem em minusculo
preserve case = no
short preserve case = no
default case = lower

# Diretorio onde ficara o arquivo de lote definido acima
[netlogon]
comment = Network Logon Service
path = /home/netlogon
write list = tiago
guest ok = Yes

# Diretorio /home/usuario, somente o dono do mesmo pode acessar
[homes]
comment = Home Directories
valid users = %U
read only = No
force create mode = 0755
force directory mode = 0755
browseable = No

[log]
comment = Log’s de Backup
path = /dados/log

[CdRom]
comment = Drive de CD-ROM do Servidor
path = /mnt/cdrom

[Drive_f]
comment = Drive de Dados do Servidor
path = /dados/drive_f
force user = nobody
force group = nobody
read only = No
force create mode = 0777
force directory mode = 0777
guest only = Yes

# Aqui deve ser aplicado algumas restricoes por usuario
[GPS614]
comment = Drive de Dados da GPS
path = /dados/GPS614
valid users = tiago,marcio,andrea,ricardo,regina,mislaine
force group = gps
read only = No
force create mode = 0770
force directory mode = 0770

Aqui cabe uma observação que recebi do Sr. Ronaldo Yoyart:

“Gostaria de acrescentar que nos últimos exemplos citados do smb.conf, não menciona um linha importantíssima, na qual permite que o samba crie usuário no linux (apenas cria o usuário sem senha e direciona o terra (null)) automaticamente.

Isso serve quando uma maquina Windows2000 ou XP, entra para um domínio, após clicar para entrar no dominio, o windows pergunta um usuário e senha, mas se a maquina (nome da maquina) não estiver criada como usuário com um $ no final , a maquina não entra e assim não roda login script.

Segue a linha que falta:

add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u

Ronaldo, muito obrigado pela observação 😉

Para quem não sabe, as linhas que começam com uma tralha (‘#’) são apenas comentários, o programa irá ignora-las em sua execução

Continuando…

Esse servidor em questão já é capaz de validar os usuários, bastando o mesmo informar o Dominio “TUX”. Inclusive o usuário pode alterar sua senha pelo “Painel de Controle -> Senhas -> Alterar outras Senhas” ou com a famosa combinação de “CTRL+ALT+DEL” no caso do XP.

Para isso, é necessário cadastrar o usuário no Linux e no Samba:

# useradd tiago
# smbpasswd -a tiago

Caso você á tenha uma lista com seus usuários, poderá usar algum script para cadastra-los no Linux e no Samba. No meu caso eu tinha um arquivo separado por “|” contendo o login, o nome completo e grupo:

$ cat king.txt
alessandra|Alessandra R. Graciano|contabilidade
alessandra-o|Alessandra Oliveira|diretoria
ana paula|Ana Paula|fiscal
ana rosa|Ana Rosa|juridico
anderson|Anderson|pessoal
andrea|Andrea|pessoal

O script segue abaixo, use-o por sua conta e risco.
Alterações e melhorias no mesmo são bem vindas 🙂

$ cat adduser.pl
##########################
# Criado por Tiago Cruz
# [email protected]
# em Feveriro/ 2003
##########################
#!/usr/bin/perl

$file=”king.txt”;
if ( -e $file ) {
open(arq, $file) or die “Não foi possivel abrir o arquivo”;
@linhas = ;
close(arq);
$passwd=senha;
$i=0;
while (@linhas[$i]) {
($login, $nome, $depto) = split(/|/, @linhas[$i]);
system “/usr/sbin/useradd -p $passwd -c ‘$nome’ $login -G $depto”;
system “/usr/bin/smbpasswd -a $login $passwd”;
sleep(0.5);
$i++;
}
}3

Colocando o Win95 na rede:

Alterar no registro:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesVxDVNETSUP]
“EnablePlainTextPassword”=dword:0x00000001

Colocando o Win2000 na rede:

Siga os mesmos passos do WinXP, e caso não consiga trocar sua senha experimente retirar a linha “unix password sync” do seu arquivo de configuração e reiniciar o SaMBa (dica de Angelo Costa).

Colocando o WinXP na rede:

1-) Cadastrar senha de root no samba:

# smbpasswd -a root

2-) Cadastrar máquina XP:

Observe que a conta criada tem um sheel invalido (/bin/false) e também um home nulo (/dev/null) para que nenhum engraçadinho faça login usando essa conta 🙂

# useradd -d /dev/null -c MAQ_709 -m -s /bin/false MAQ_709$
# smbpassword -m -a MAQ_709

3-) Alterar Registro da estação:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetlogonParameters]
“DisablePasswordChange”=dword:00000000
“maximumpasswordage”=dword:0000001e
“requiresignorseal”=dword:00000000
“requirestrongkey”=dword:00000000
“sealsecurechannel”=dword:00000001
“signsecurechannel”=dword:00000001
“Update”=”no”

4-) Entrar em:

Painel de Controle->Ferramentas Administrativas->Politica de Segurança Local e depois em Politicas Locais->Opções de Segurança

Dentro dessa janela, desabilite as opções abaixo. Não quer quer eu traduza para você, certo? 🙂

Domain member: Digitally encrypt or sign secure channel (always)
Domain member: Disable machine account password changes
Domain member: Require strong (Windows 2000 or later) session key

5-) Depois em:

Botão Direito em Meu Computador->Propriedades->Nome do Computador->Alterar

Nome do computador: MAQ_709
Membro de: Informar Dominio Samba
Entre com o username e password de Root, depois reinicie o micro

Ufa 🙂
Ah, talvez seja necessário reiniciar depois de alterar o registro, mas creio que isso não seja nenhuma novidade para você =]

Bom, logicamente não fui eu quem “descobriu” tudo isso, pois existem vários tutoriais pela rede, além da documentação do próprio software. De qualquer forma, seguindo esses passo eu consegui colocar o benedito no Domínio, mas talvez você não precise fazer tudo isso 🙂

Se ainda tiver dúvidas sobre o SaMBa, por favor consulte nossos outros artigos desta mesma seção. Visite também este FAQ sobre o assunto.

Agradeço aos tutoriais espalhados pela rede, ao pessoal das listas de discussão, ao google… e espero que esse documento ajude alguém 😉

Abraços,
Tiago Cruz
Linux User #282636