Creare un PDC con Samba
Da MelugWiki.
Samba è un'implementazione "libera" del sistema di networking dei sistemi Microsoft. Samba non solo permette di accedere o condividere risorse quali file o stampanti con i client Windows, ma può anche implementare a "Windows Server Domain". Un dominio NT è un insieme di risorse (computer, stampanti, filesystem condivisi) su una rete Windows, queste risorse possono essere utilizzate da un utente appartenente al dominio stesso mediante una singola combinazione di login e password. Un PDC (Primary Domain Controller) non è altro che un server per la gestione del dominio.
Indice |
Cosa deve fare un PDC
Un Primary Domain Controller deve:
- accettare gli utenti ad autenticarsi sul dominio attraverso un server centrale, quindi utilizzando un'unica combinazione di login e password
- fornire agli utenti una unica "home" contenente tutti i dati personali dell'utente stesso e deve essere accessibile da qualsiasi macchina del dominio stesso
- permettere ad un utente appartente al dominio di accedere a tutte le risorse condivise nel dominio stesso
- fornire un livello di protezione per l'accesso alle risorse condivise da parte degli utenti del dominio, un utente può vedere ed accedere solo alle risorse dove è stato autorizzato
Installazione di Samba
Molte distribuzioni linux forniscono già i pacchetti binary per l'installazione di samba, per queste distribuzioni basta seguire le operazioni base per l'installazione dei pacchetti sulla distribuzione stessa, da notare che questo documento crea un PDC mediante l'utilizzo di samba-3.0 o superiori quindi se la vostra distribuzione non fornisce un pacchetto compatibile forse è meglio seguire i passi di compilazione di questo, infatti i file di configurazione forniti potrebbero non funzionare con release di samba inferiori alla 3.0. Brevemente:
- scarichiamo i sorgenti di samba dal sito: Samba Home Page, l'ultima release stabile di samba al momento della stesura di questo documento è la 3.0.21a
# wget http://us2.samba.org/samba/ftp/stable/samba-3.0.21a.tar.gz
- estraiamo e compiliamo il pacchetto
# tar xvfz samba-3.0.21a.tar.gz
# cd samba-3.0.21a/source
# ./configure --prefix=/usr \
--sysconfdir=/etc \
--libdir=/etc/samba \
--with-privatedir=/etc/samba \
--with-piddir=/var/run/samba \
--localstatedir=/var \
--with-netatalk \
--with-pam \
--with-syslog \
--with-utmp \
--with-readline \
--with-pam_smbpass \
--with-libsmbclient \
--with-winbind \
--with-msdfs \
--with-automount \
--with-tdbsam \
--with-ldap \
--with-python \
--with-fhs \
--enable-shared \
--enable-static
# make all
# make install
- aggiungiamo un semplice script di boot "/etc/init.d/samba"
#!/bin/bash
# services
NMBD=$(which nmbd)
SMBD=$(which smbd)
SMBDPID="/var/run/samba/smbd.pid"
NMBDPID="/var/run/samba/nmbd.pid"
# cursor colors
NORMAL="\\033[0;39m"
RED="\\033[1;31m"
GREEN="\\033[1;32m"
YELLOW="\\033[1;33m"
BLUE="\\033[1;34m"
MAGENTA="\\033[1;35m"
CYAN="\\033[1;36m"
WHITE="\\033[1;37m"
TTY="$(tty)"
test $(id -u) == 0 || (echo "You aren't administrator" && exit 1)
test -x $NMBD -a -x $SMBD || exit 1
# status messages
echo_success()
{
# cursor position
COL=$(stty size -F $TTY)
COL=${COL##* }
SEEK_SET="\\033[A"
SEEK_END="${SEEK_SET}\\033[$((${COL} - 10))G"
# boot messages
MESSAGE_SUCCESS="${SEEK_END}${WHITE}[ ${GREEN}OK ${WHITE}]${NORMAL}"
echo -e "${MESSAGE_SUCCESS}"
}
echo_fail()
{
# cursor position
COL=$(stty size -F $TTY)
COL=${COL##* }
SEEK_SET="\\033[A"
SEEK_END="${SEEK_SET}\\033[$((${COL} - 10))G"
# boot messages
MESSAGE_FAIL="${SEEK_END}${WHITE}[ ${RED}FAIL ${WHITE}]${NORMAL}"
echo -e "${MESSAGE_FAIL}"
}
echo_warn()
{
# cursor position
COL=$(stty size -F $TTY)
COL=${COL##* }
SEEK_SET="\\033[A"
SEEK_END="${SEEK_SET}\\033[$((${COL} - 10))G"
# boot messages
MESSAGE_WARN="${SEEK_END}${WHITE}[ ${YELLOW}WARN ${WHITE}]${NORMAL}"
echo -e "${MESSAGE_WARN}"
}
case "$1" in
start)
echo -n "Starting Samba daemons:"
echo -n " nmbd"
$NMBD -D
if [ $? != 0 ]; then
echo ""
echo_fail
exit 1
fi
echo -n " smbd"
$SMBD -D
if [ $? != 0 ]; then
echo ""
echo_fail
exit 1
fi
echo ""
echo_success
;;
stop)
test -f $NMBDPID -a -f $SMBDPID || exit 1
echo -n "Stopping Samba daemons:"
echo -n " smbd"
kill $(cat $SMBDPID) && rm -f $SMBDPID || (echo_fail && exit 1)
echo -n " nmbd"
kill $(cat $NMBDPID) && rm -f $NMBDPID || (echo_fail && exit 1)
echo ""
echo_success
;;
status)
echo -n "smbd daemon status:"
PID=$(pidof smbd)
test -z "$PID" && (echo " not running" && echo_fail) || (echo " $PID" && echo_success)
echo -n "nmbd daemon status:"
PID=$(pidof nmbd)
test -z "$PID" && (echo " not running" && echo_fail) || (echo " $PID" && echo_success)
;;
reload)
test -f $NMBDPID -a -f $SMBDPID || exit 1
echo -n "Reloading Samba daemons configuration:"
echo -n " smbd"
kill -HUP $(cat $SMBDPID) || (echo_fail && exit 1)
echo -n " nmbd"
kill -HUP $(cat $NMBDPID) || (echo_fail && exit 1)
echo ""
echo_success
;;
*)
echo "Usage: $0 {start|stop|status|reload}"
;;
esac
exit 0
- aggiungiamo i link nei nostri runlevel di avvio e chiusura del sistema.
Esempio di Configurazione
Presentiamo adesso un semplice file di configurazione: "/etc/samba/smb.conf" per configurare samba come PDC.
# Impostazioni globali del server samba [global] # Nome del netbios, identifica la nostra macchina samba sulla rete windows netbios name = theorem # Nome del gruppo di lavoro nel nostro caso rappresenta il Nome Dominio del PDC workgroup = OSWORLD # Commento allegato al nome della macchina server string = [Samba server %v] # Configura il server per accettare connessioni solo dalle reti o dagli host seguenti hosts allow = 10.239.171.109 10.0.0.127 192.168.200.0/24 127.0.0.0/8 # Imposta il livello di protezione per la condivisione file e per l'accesso al PDC, user sfrutta l'autenticazione mediante autenticazione security = user # Imposta la crittografia per le password encrypt passwords = yes # Imposta alcuni parametri di connessione socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 # Imposta le interfacce sulle quali accettare le connessioni interfaces = lo eth0 eth0:1 # Imposta il bind sulle interfacce bind interfaces only = yes # Imposta samba per essere master locale local master = yes # Valore con il quale samba partecipa all'elezione del master di DOMINIO os level = 65 # Imposta samba per essere il master del DOMINIO domain master = yes # Imposta samba per essere il master preferito per il dominio preferred master = yes # Non accetta connessioni senza password null passwords = no # Nasconde i file non leggibili dall'utente hide unreadable = yes # Nasconde i file nascosti (file e directory che iniziano con .[filename]) hide dot files = yes # Imposta l'autenticazione per accedere al dominio domain logons = yes # Imposta gli script che l'host esegue una volta autenticato sul dominio logon script = login.bat OR %U.bat # Directory dove si trovano i dati dell'utente sul PDC logon path = \\%L\profiles\%U # Aggiunge la home dell'utente sulla macchina samba come unita' di rete condivisa H: logon drive = H: # Home del dominio logon home = \\%L\%U\.9xprofile # Imposta samba per diventare anche un wins server wins support = yes # Imposta l'ordine per la ricerca di un host appartenente al dominio name resolve order = wins lmhosts host bcast # Imposta samba per non diventare un dns proxy dns proxy = no # Samba diventa un time server time server = yes # Livello di loging log level = 3 # nome del file di log log file = /var/log/samba/log.%m # dimensione max del file di log max log size = 50 # nome del file contente le pssword per gli utenti samba smb passwd file = /etc/samba/private/smbpasswd # script per l'aggiunta degli utenti add user script = /usr/sbin/useradd -m %u delete user script = /usr/sbin/userdel -r %u add group script = /usr/sbin/groupadd %g delete group script = /usr/sbin/groupdel %g add user to group script = /usr/sbin/usermod -G %g %u add machine script = /usr/sbin/useradd -s /bin/false -d /dev/null %u passwd program = /usr/bin/passwd %u passwd chat = "*New password:*" %n\r "*New password (again):*" %n\r \ "*Password changed*" # Imposta il charset unix charset = ISO8859-1 [netlogon] path = /home/netlogon guest ok = no read only = yes browseable = no [profiles] path = /home/%U/.samba/ browseable = no writeable = yes default case = lower preserve case = no short preserve case = no case sensitive = no hide files = /desktop.ini/ntuser.ini/NTUSER.*/ write list = @smbusers @root create mask = 0600 directory mask = 0700 [homes] path = /home/%U browseable = no valid users = %S read only = no guest ok = no inherit permissions = yes [public] comment = Public Stuff path = /home/space public = yes read only = yes browseable = yes write list = @users
