\documentclass{beamer}
\usepackage[italian]{babel}
\usepackage{lmodern,textcomp,fontspec,xunicode,xltxtra}
\setsansfont[Mapping=tex-text,Ligatures=Common]{Myriad Pro}
\setmonofont[Mapping=tex-text,Scale=.9]{Consolas}
%\setmonofont[Mapping=tex-text,Scale=.9]{Prestige Elite Std}

\usetheme{Warsaw}
\setbeamercovered{transparent}

% Definisco shell
\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}}

% Definisco un po' di modifiche sulla bibliografia
\setbeamertemplate{bibliography item}[triangle]
%\setbeamercolor*{bibliography entry author}{fg=black}

% Un po' di altri settaggi
\beamerdefaultoverlayspecification{<+->}
\setbeamercolor{alerted text}{fg=structure}

\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%
}
%%% 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}

% \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
% \logo{\pgfuseimage{university-logo}}

\begin{document}

\begin{frame}\transboxin
  \titlepage
\end{frame}

\begin{frame}\transboxin
  \centering
  \frametitle{Premessa}
  Tutto il materiale qui riportato è disponibile a questo indirizzo:

  \bigskip\Large
  \alert{\url{http://tinyurl.com/ld10-samba}}

\end{frame}

\begin{frame}\transboxin
  \frametitle{\textit{Lightning Talk}?}
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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
  \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}
