\documentclass{beamer} %%% Pacchetti di uso comune per lingua, encoding di input e di font \usepackage[italian]{babel} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage{textcomp} %%% Uso MyriadPro - Incluso in Acrobat Reader > 8.0 \usepackage{Myriad} \renewcommand{\sfdefault}{Myriad-OsF} %%% Uso Bitstream Vera Mono per il codice \usepackage[scaled]{beramono} %%% Se volessi utilizzare Biolinum (da Libertine) %\usepackage[scaled]{libertine} % Erano per XeLaTeX... % Sfortunatamente XeLaTeX non è compatibile con pdfcube: manca il supporto % poppler %\usepackage{lmodern,textcomp,fontspec,xunicode,xltxtra} %\setsansfont[Mapping=tex-text,Ligatures=Common]{Myriad Pro} %\setmonofont[Mapping=tex-text,Scale=.9]{Consolas} %%% Tema, stile di uncover, default overlay e colore di struttura \usetheme{Warsaw} \setbeamercovered{transparent} \beamerdefaultoverlayspecification{<+->} \setbeamercolor{alerted text}{fg=structure} %%% Definisco un po' di modifiche sulla bibliografia \setbeamertemplate{bibliography item}[triangle] %\setbeamercolor*{bibliography entry author}{fg=black} %%% Sovrascrive la definizione della footline per ottenerne una a due colonne \setbeamertemplate{footline}{% \leavevmode% \hbox{% \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex,right]{author in head/foot}% \usebeamerfont{author in head/foot}\insertshortauthor~~(\insertshortinstitute)\hspace*{2ex} \end{beamercolorbox}% \begin{beamercolorbox}[wd=.5\paperwidth,ht=2.25ex,dp=1ex]{title in head/foot}% \hspace*{2ex}\usebeamerfont{title in head/foot}\insertshorttitle\hfill% \insertframenumber{} / \inserttotalframenumber\hspace*{2ex} \end{beamercolorbox}} \vskip0pt% } %%% Definisco shell (mostra console utente) e shell* (console di root) \setbeamercolor{shell snippet}{fg=lightgray,bg=black} \newenvironment{shell}{\par\vspace*{.7em}\begin{beamercolorbox}[sep=.5em]{shell snippet}\ttfamily {\color{blue}\$}}{\end{beamercolorbox}} \newenvironment{shell*}{\par\vspace*{.7em}\begin{beamercolorbox}[sep=.5em]{shell snippet}\ttfamily {\color{red}\#}}{\end{beamercolorbox}} \newcommand{\urlify}[1]{{\color{blue}\url{#1}}} %%% Definisco snippet \newenvironment{snippet}[1]{\begin{block}{Estratto: \texttt{#1}}\ttfamily}{\end{block}} %%%% Struttura principale della presentazione %%%% %%% Global structure %%% \title[Linux, Samba e AD]{Fileserver con SAMBA e Windows} \subtitle{Integrazione con \textit{Microsoft Active Directory}} \author[E.~Vavassori (BGlug) --- LD10]{Emiliano Vavassori} \institute[BGlug]{BGlug --- Bergamo Linux User Group\\ Circoscrizione n° 2, Largo Röntgen n° 3\\ 24128 Bergamo} \date[LD10]{23 ottobre 2010 --- LinuxDay 2010} \subject{Fileserver con SAMBA e Windows --- Integrazione con Active Directory} %%% Dovrò specificare un logo... % \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename} % \logo{\pgfuseimage{university-logo}} \begin{document} \begin{frame} \titlepage \end{frame} \begin{frame} \frametitle{Premessa}\transboxin<1>\centering Tutto il materiale qui riportato è disponibile a questo indirizzo: \bigskip\Large \alert{\url{http://tinyurl.com/ld10-samba}} \end{frame} \begin{frame} \frametitle{\textit{Lightning Talk}?}\transboxin<1> \begin{itemize}[<+->] \item Richiesta «passiva» sul sito del BGlug \item Limitazione nell'obiettivo \item Livello tecnico abbastanza alto \item Procedura di setup di meno di mezz'ora (compresi test) \item Poco tempo per la preparazione del talk \texttt{O:-)} \end{itemize} \bigskip \begin{block}{Un piccolo dubbio mi assale\ldots\ \textbf{Esaustivo}?} Non si può fare un \textit{lightning talk} su \textit{Active Directory} in senso stretto. Ci vorrebbe una giornata intera. \end{block} \end{frame} \begin{frame}\transboxin<1> \frametitle{Obiettivo} \begin{block}{} Creare un \emph{file server} integrato con una struttura \textit{Active Directory} preesistente. \end{block} \bigskip \visible<2>{% \begin{block}{Integrato con \emph{Active Directory}} Gli utenti saranno in grado di accedere ai documenti condivisi senza ulteriori autenticazioni da macchine di dominio con utenze di dominio. \end{block}} \end{frame} \begin{frame}\transboxin<1> \frametitle{0.0 --- Struttura della rete} \begin{block}{Domain Controller --- \itshape Windows 2003 Server}\ttfamily 10.0.0.1\hspace*{4ex}testdc.domain.local \end{block} \bigskip \begin{block}<1->{File Server --- \itshape Debian 5.0 «Lenny»}\ttfamily 10.0.0.100\hspace*{2ex}linuxfs.domain.local \end{block} \end{frame} \begin{frame}\transboxin<1> \frametitle{0.1 --- Indirizzi del fileserver} Prima di partire, conviene verificare l'indirizzo di rete: \begin{shell*} ip address show eth0 \end{shell*} \bigskip \onslide<2->% Verificare il \textit{Fully Qualified Domain Name} (FQDN):\\ \begin{snippet}{/etc/hosts} 10.0.0.100 linuxfs.domain.local linuxfs \textbackslash\\ \hspace*{2ex}localhost.localdomain localhost \end{snippet} \end{frame} \begin{frame}\transboxin<1> \frametitle{0.2 --- Indirizzi del domain controller} Verificare DNS primario e dominio: \begin{snippet}{/etc/resolv.conf} nameserver 10.0.0.1\\ search domain.local\\ domain domain.local \end{snippet} \bigskip \onslide<2->% Verificare comunicazione e risoluzione nomi: \begin{shell} ping 10.0.0.1 \end{shell} \begin{shell} ping testdc.domain.local \end{shell} \begin{shell} ping testdc \end{shell} \end{frame} \begin{frame}\transboxin<1> \frametitle{1 --- Installazione pacchetti necessari} \begin{shell*} aptitude install openntpd ntpdate krb5-user samba winbind smbclient \end{shell*} \bigskip \onslide<2->% Opzionalmente: \begin{shell*} aptitude install smbfs \end{shell*} \end{frame} \begin{frame}\transboxin<1> \frametitle{2 --- Configurazione NTP} Fermiamo il servizio: \begin{shell*} /etc/init.d/openntpd stop \end{shell*} \bigskip \onslide<2->% \begin{snippet}{/etc/openntpd/ntpd.conf} server testdc.domain.local \end{snippet} \bigskip \onslide<3->% Impostiamo l'ora\ldots \begin{shell*} ntpdate testdc.domain.local \end{shell*} \bigskip \onslide<4>% \ldots e riavviamo il servizio: \begin{shell*} /etc/init.d/openntpd start \end{shell*} \end{frame} \begin{frame}\transboxin<1> \frametitle{3 --- Configurazione Kerberos} \begin{snippet}{/etc/krb5.conf} [libdefaults]\\ default\_realm = DOMAIN.LOCAL\\ \ldots\newline [realms]\\ DOMAIN.LOCAL = \{\\ \hspace{2ex}kdc = testdc.domain.local\\ \hspace{2ex}admin\_server = testdc.domain.local\\ \}\\ \ldots\newline [domain\_realm]\\ .domain.local = DOMAIN.LOCAL\\ domain.local = DOMAIN.LOCAL \end{snippet} \end{frame} \begin{frame}\transboxin<1> \frametitle{4.0 --- Configurazione SAMBA: generale} \begin{snippet}{/etc/samba/smb.conf} [global]\\ workgroup = DOMAIN\\ \alert<2>{\textbf<2>{realm = DOMAIN.LOCAL}}\\ wins server = 10.0.0.1\\ \alert<2>{\textbf<2>{security = ads}}\\ \alert<2>{\textbf<2>{password server = testdc.domain.local}}\\ obey pam restrictions = yes\\ unix password sync = yes\\ \alert<2>{\textbf<2>{winbind separator = +}}\\ \alert<2>{\textbf<2>{winbind use default domain = yes}} \end{snippet} \end{frame} \begin{frame}\transboxin<1> \frametitle{4.1 --- Configurazione SAMBA: condivisioni} \begin{snippet}{/etc/samba/smb.conf} [shared]\\ comment = \ldots\\ path = /var/local/shared\\ \alert<2>{\textbf<2>{valid users = \%U}}\\ browseable = yes\\ writable = yes\\ guest ok = no\\ read only = no\\ \alert<3>{\textbf<3>{create mask = 0664}}\\ \alert<3>{\textbf<3>{directory mask = 0775}} \end{snippet} \bigskip \onslide<4-> Infine testiamo il file: \begin{shell*} testparm \end{shell*} \end{frame} \begin{frame}\transboxin<1> \frametitle{5 --- Messa in dominio} Riavviamo i servizi: \begin{shell*} /etc/init.d/samba restart \end{shell*} \begin{shell*} /etc/init.d/winbind restart \end{shell*} \medskip \onslide<2-> Verifichiamo che Kerberos funzioni: \begin{shell*} kinit -a administrator \end{shell*} \medskip \onslide<3-> Messa in dominio: \begin{shell*} net ads join -U Administrator \end{shell*} \medskip \onslide<4-> Verifichiamo che si riesca ad accedere alle informazioni di dominio: \begin{shell*} wbinfo -u \end{shell*} \end{frame} \begin{frame}\transboxin<1> \frametitle{Un \textit{cadeau}} Possiamo «importare» magicamente gruppi e utenze all'interno della macchina Linux aggiungendo: \begin{snippet}{/etc/nsswitch.conf} passwd: compat \alert{\bfseries winbind}\\ \alert{\bfseries passwd\_compat: winbind}\\ group: compat \alert{\bfseries winbind}\\ \alert{\bfseries group\_compat: winbind}\\ shadow: compat \alert{\bfseries winbind} \end{snippet} \bigskip \visible<2->{% Sarà ora possibile attribuire i permessi a intere cartelle come: \begin{shell*} chown -R root:'domain users' /var/local/shared \end{shell*}} \end{frame} \begin{frame}\transboxin<1> \frametitle{Difetti d'implementazione} \begin{itemize} \item Non utilizza Heimdal Kerberos (se necessario LDAP, da preferire) \item Incompatibilità con sistemi \textit{Microsoft} più moderni: Windows 7, Windows 2008 Server.\\ \visible<3->{\alert{Soluzione} --- Samba 3.4 da \textit{Lenny Backports}} \item<4-> L'implementazione attuale non permette il login sul file server di utenze di dominio (necessario configurare PAM) \end{itemize} \end{frame} \begin{frame}\transboxin<1> \frametitle{Cosa possiamo fare ora?} A partire da quanto messo a punto ora possiamo implementare: \begin{itemize}[<+->] \item un proxy autenticato (Squid + \texttt{auth\_ntlm}) \item un \textit{domain controller} Linux-based (LDAP) \end{itemize} \end{frame} \begin{frame}\transboxin<1> \frametitle{Sitografia} \begin{thebibliography}{The Samba HOWTO and Reference Guide} \bibitem<1>[SAMBA]{SAMBA} The SAMBA Team \newblock\textit{The Official Samba 3.5.x HOWTO and Reference Guide} \newblock\urlify{http://tinyurl.com/samba-howto} \bibitem<1>[SurlyJake]{Surlyjake} Blog di Jake Surly \newblock Post: \textit{Join Debian Lenny to Active Directory using Samba} \newblock\urlify{http://tinyurl.com/samba-adjoin} \bibitem<1>[Deb-DC]{Deb-DC} Guide Debianizzati \newblock\textit{Samba e OpenLDAP: creare un controller di dominio con Debian Lenny} \newblock\urlify{http://tinyurl.com/deb-dc} \bibitem<1>[Deb-SDC]{Deb-SDC} Guide Debianizzati \newblock\textit{Samba, OpenLDAP, Kerberos: creare un controller di dominio sicuro con Debian Lenny} \newblock\urlify{http://tinyurl.com/deb-secure-dc} \end{thebibliography} \end{frame} % End slide \end{document}