Come migrare un PDC Samba basato su LDAP da una macchina vecchia ad una macchina nuova


Date 2 macchine:

MACCHINA A = vecchio PDC Samba
MACCHINA B = nuovo (e futuro) PDC Samba

Stoppare i servizi SMB, NMB, LDAP (RHEL/CentOS)

Copiare i files di configurazione di Samba (smb.conf), LDAP (ldap.conf e slapd.conf) e SMBLDAP-TOOLS (smbldap_bind.conf e smblad.conf) dalla “MACCHINA A” alla “MACCHINA B

A = net getlocal sid
B = net setlocal sid
copiare il SID della vecchia macchina sulla nuova

A = net getdomain sid
B = net setdomain sid
copiare il SID della vecchia macchina sulla nuova

A = slapcat > /root/users.ldif
B = slapadd -l /root/users.ldif

B =  smbpasswd -w (password inserita nel file smb.conf)

Riavviare i servizi SMB, NMB e LDAP.

Annunci

Inserire un PC con Windows XP/7 in un dominio realizzato con Samba


Una volta realizzato un dominio seguendo questo post occorre annettere i vari PC al dominio.
Per farlo più semplicemente esistono delle chiavi di registro da variare:

… per Windows XP realizzare un file chiamato “win_xp.reg” con le seguenti voci:


Windows Registry Editor Version 5.00

;
; This registry key is needed for a Windows XP Client to join
; and logon to a Samba domain. Note: Samba 2.2.3a contained
; this key in a broken format which did nothing to the registry –
; however XP reported “registry key imported”. If in doubt
; check the key by hand with regedit.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
“requiresignorseal”=dword:00000000
“signsecurechannel”=dword:00000000

… per Windows 7 realizzare un file chiamato “win_7.reg” con le seguenti voci:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
; Enable NT-Domain compatibility mode
; Default:
; [value not present]
; “DomainCompatibilityMode”=-
“DomainCompatibilityMode”=dword:00000001

; Disable required DNS name resolution
; Default:
; [value not present]
; “DNSNameResolutionRequired”=-
“DNSNameResolutionRequired”=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
; Disable requirement of signed communication
; My Samba (3.0.33) works with signed communication enabled, so no need to disable it.
; Default:
; “RequireSignOrSeal”=dword:00000001
; Disable the usage of strong keys
; Default:
; “RequireStrongKey”=dword:00000001
“RequireStrongKey”=dword:000000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
“RequireSignOrSeal”=dword:00000001

I files sono in ogni caso scaricabili dai seguenti link:
registro per Windows XP
registro per Windows 7

Aggiungere/modificare utenti ad un PDC realizzato con Samba e OpenLDAP


Aggiungere un utente:

… come “Administrator”
smbldap-useradd -N “Nome” -S “Cognome” -P -a -m -c “Nome Cognome” username_assegnato -s /bin/bash -g “Domain Admins” -u 500 Administrator

… come utente normale
smbldap-useradd -N “Nome” -S “Cognome” -P -a -m -c “Nome Cognome” username_assegnato

Aggiungere un gruppo all’utente:

Aggiungere l’utente “username_asegnato” al gruppo “Amministratori” (oltre al gruppo principale di appartenenza)
smbldap-usermod -G “Domain Admins” username_assegnato

Vedere chi appartiene ad un determinato gruppo:

smbldap-groupshow “Domain Admins”

Ottenere una lista degli utenti presenti sul sistema:

smbldap-userlist

Rimuovere i file inutilizzati


Recentemente un cliente mi ha chiesto di individuare su un sistema Linux quali fossero, se ve ne fossero, i file non utilizzati e se vi fossero anche gruppi o utenti in disuso. Scriviamo in una shell dei comandi:

cosacerchiamo="/dev /etc /home /opt /usr /var"
premiamo invio e scriviamo anche profondo="3"

quindi possiamo dire

/usr/bin/find $cosacerchiamo -depth -maxdepth $profondo -xdev -nouser -nogroup

Possiamo infilare tutto in uno script, se viene più comodo. Analogamente questo script permette di trovare gli utenti che non sono proprietari di file


#/bin/bash
cosacerchiamo="/dev /etc /home /opt /usr /var"
profondo="3"

for u in `/bin/grep -v ‘root’ /etc/passwd |/bin/cut -d: -f1`
do
echo -n “$u…”
x=`/usr/bin/find $cosacerchiamo -depth -maxdepth $profondo -xdev -user $u |wc -l`
if [ $x -gt 0 ]; then
echo “non cancellabile”
else
echo “cancellabile”
fi
done

Se vogliamo estendere la cosa ai gruppi, ecco cosa aggiungere allo script


for g in `/bin/grep -v 'root' /etc/group |/bin/cut -d: -f1`
do
echo -n "$g..."
x=`/usr/bin/find $cosacerchiamo -depth -maxdepth $profondo -xdev -group $g |wc -l`
if [ $x -gt 0 ]; then
echo "non cancellabile"
else
echo "cancellabile"
fi
done