14.25. Como configurar o samba para autenticar os usuário no Windows 2000?

### Conectiva 8 ###

Considera-se que o Servidor Windows 2000 que autenticará os usuários seja o PDC (Primary Domain Controller) da rede e que a configuração básica do samba já esta realizada.

Para obter informações sobre as configurações genéricas do samba, acesse:

http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/servidores.samba.html

Inicialmente iremos configurar o Windows 2000, acessando no Active Directory:

Container (pasta):

Computers

Clique com o botão Direito -> New -> Computer.-> Computer Name: <nome do servidor linux que fará a autenticação no Windows 2000> ->Habilite a opção Allow pre-Windows 2000 computers to use this accout Pressione OK

Agora no Linux:

Primeiramente deve-se configurar o samba. Edite o arquivo /etc/smb.conf e localize as respectivas seções e altere-as conforme indicado:

    workgroup = conectiva


altere conforme o domínio (workgroup) de sua rede windows

    security = domain


isto fará o samba autenticar em domínio (se estiver como share ou user altere para domain, caso seja alterado para server a autenticação será por servidor independente de ser PDC de rede ou não)

    password server = w2k.conectiva


indique o servidor que irá autenticar os usuários, caso seja usado um "*" (sem aspas) em vez do nome de uma máquina, ele irá procurar pelo PDC da rede.

    encrypt passwords = yes


faz com que o samba use senhas criptografadas, necessário para interagir com Windows 95 OSR2, Windows 98/ME/XP/2000 e Windows NT com service pack 3 ou maior instalado.

    winbind separator = +


Separa o domínio do nome do usuário com o caractere "+". Pode ser usado também o caractere "\". Geralmente o correto é o "+".

    winbind uid = 1000-2000
    winbind gid = 1000-2000


Informa o range de uid (user ID) e gid (group ID) a ser usado. Deve ser usada uma faixa que não está sendo usada pelo sistema, para saber quais os uid e gid, pode-se executar:

    [root@localhost /]# getent passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:
    daemon:x:2:2:daemon:/sbin:
    adm:x:3:4:adm:/var/adm:
    lp:x:4:7:lp:/var/spool/lpd:
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:
    news:x:9:13:news:/var/spool/news:
    uucp:x:10:14:uucp:/var/spool/uucp:
    operator:x:11:0:operator:/root:
    games:x:12:100:games:/usr/games:
    gopher:x:13:30:gopher:/usr/lib/gopher-data:
    ftp:x:14:50:FTP User:/var/ftp:
    nobody:x:65534:65534:Nobody:/home:
    mysql:x:100:101:MySQL server:/var/lib/mysql:/bin/bash
    www:x:101:102::/var/www:/bin/false
    sshd:x:102:103:sshd:/var/empty:/bin/false
    stunnel:x:103:233::/home/stunnel:/dev/null
    postfix:x:104:104:postfix:/var/spool/postfix:
    ntp:x:105:105:NTP daemon:/etc/ntp:/bin/false
    named:x:106:235:Domain name server:/var/named:/bin/false
    postgres:x:107:107:PostgreSQL Server:/var/lib/pgsql:/bin/bash
    [root@localhost /]#


Em nossa simulação, o último uid foi o 107, então poderíamos usar na opção winbind uid os valores 150-500, por exemplo, o valor inicial foi 150 para reservar User IDs para contas adicionadas futuramente no sistema (linux).

    winbind enum users = yes
    winbind enum groups = yes


Ativa a numeração de usuários e grupos para as chamadas de sistema. Em ambientes grandes, é aconselhável desabilitar esta numeração (com a flag no), mas alguns aplicativos podem deixar de funcionar apropriadamente.

Salve o arquivo e saia.

Devemos adicionar o servidor linux no domínio do Windows 2000, para isto usaremos o comando smbpasswd conforme exemplo abaixo:

    [root@localhost /]# smbpasswd -r <nome do pdc> -j <dominio>


Considerando que a máquina com Windows 2000 e PDC da rede tenha o nome de w2k e o domínio seja conectiva, o comando seria:

    # smbpasswd -r w2k.conectiva -j conectiva
    2002/07/10 11:04:55 : change_trust_account_password: Changed password for domain CONECTIVA.
    Joined domain CONECTIVA.


Edite o arquivo /etc/nsswitch.conf e localize as linhas:

    passwd:     files nisplus nis
    group:      files nisplus nis


e altere-as para:

    passwd:     files winbind
    group:      files winbind


Edite o arquivo /etc/pam.d/samba e as linhas:

    auth    required        /lib/security/pam_unix.so nullok shadow
    account required        /lib/security/pam_unix.so


devem ser removidas (aconselha-se apenas comentar as linhas ou fazer uma cópia de segurança do arquivo) e as seguintes linhas adicionadas:

    auth       required /lib/security/pam_securetty.so
    auth       required /lib/security/pam_nologin.so
    auth       sufficient    /lib/security/pam_winbind.so
    auth       required     /lib/security/pam_pwdb.so use_first_pass shadow nullok
    account required /lib/security/pam_winbind.so


Edite o arquivo /etc/rc.d/init.d/smb e localize a seção:

    start)
            gprintf "Starting %s services: " "SMB"
            daemon smbd -D
            echo
            gprintf "Starting %s services: " "NMB"
            daemon nmbd -D
            echo
            touch /var/lock/subsys/smb
            ;;


Adicione as linhas:

       gprintf "Starting %s services: " "Winbind"
            daemon winbindd
            echo


Deixando a seção do seguinte modo:

     start)
            gprintf "Starting %s services: " "SMB"
            daemon smbd -D
            echo
            gprintf "Starting %s services: " "NMB"
            daemon nmbd -D
            echo
            gprintf "Starting %s services: " "Winbind"
            daemon winbindd
            echo
            touch /var/lock/subsys/smb
            ;;


O mesmo deverá ser feito nas seções stop e status, conforme exemplo:

      stop)
            gprintf "Stopping %s services: " "SMB"
            killproc smbd
            echo
            gprintf "Stopping %s services: " "NMB"
            killproc nmbd
            echo
            gprintf "Stopping %s services: " "Winbind"
            killproc winbindd
            echo
            rm -f /var/lock/subsys/smb
            ;;
      status)
            status smbd
            status nmbd
            status winbindd
            ;;


    [root@localhost /]# service smb stop
    [root@localhost /]# service smb start


Então, teste a configuração executando:

    [root@localhost /]# smbclient <//nomedamaquina/compartilhamento> -U <dominio+usuario>


Considerando que o nome da máquina linux seja samba, o compartilhamento seja usr, o domínio seja conectiva e o usuário seja tulio, o comando seria:

    [root@localhost /]# smbclient //samba/usr -U conectiva+tulio
    added interface ip=10.0.2.89 bcast=10.0.7.255 nmask=255.255.248.0
    Password: 
    Domain=[CONECTIVA] OS=[Unix] Server=[Samba 2.2.3a]
    smb: \>