| [1648] | 1 | \section{Services} | 
|---|
|  | 2 |  | 
|---|
|  | 3 | \subsection{Web} | 
|---|
|  | 4 | \begin{frame} | 
|---|
|  | 5 | \frametitle{Apache} | 
|---|
|  | 6 | \begin{itemize} | 
|---|
|  | 7 | \item Everyone wants Apache | 
|---|
|  | 8 | \item Apache's default configuration isn't safe for scripting | 
|---|
|  | 9 | \item Scripting \emph{requires} code execution---mod\_php, mod\_perl, mod\_python | 
|---|
|  | 10 | \item Apache normally runs everything as apache/nobody | 
|---|
|  | 11 | \item How to secure? | 
|---|
|  | 12 | \pause | 
|---|
|  | 13 | \item suEXEC---allows Apache to spawn a process as the user\ldots | 
|---|
|  | 14 | \item {\ldots}even for static content! | 
|---|
|  | 15 | \end{itemize} | 
|---|
|  | 16 | \end{frame} | 
|---|
|  | 17 |  | 
|---|
|  | 18 | \begin{frame} | 
|---|
|  | 19 | \frametitle{suEXEC} | 
|---|
|  | 20 | \begin{itemize} | 
|---|
|  | 21 | \item setuid program | 
|---|
|  | 22 | \item Passed the request by Apache | 
|---|
|  | 23 | \item Verifies that the script is in the {\tt web\_scripts} directory | 
|---|
|  | 24 | \item Switches to the uid of the file and executes | 
|---|
|  | 25 | \item Even for static files! | 
|---|
|  | 26 | \end{itemize} | 
|---|
|  | 27 | \end{frame} | 
|---|
|  | 28 |  | 
|---|
|  | 29 | \subsection{Mail} | 
|---|
|  | 30 |  | 
|---|
|  | 31 | \begin{frame}[fragile] | 
|---|
|  | 32 | \frametitle{Postfix} | 
|---|
|  | 33 | \begin{itemize} | 
|---|
|  | 34 | \item Standard Postfix server | 
|---|
|  | 35 | \item No local mailboxes | 
|---|
|  | 36 | \item All mail is passed to procmail | 
|---|
|  | 37 | \end{itemize} | 
|---|
|  | 38 | \begin{verbatim}mailbox_command = /usr/bin/procmail -t \ | 
|---|
|  | 39 | -a "${EXTENSION}" ~/mail_scripts/procmailrc\end{verbatim} | 
|---|
|  | 40 | \end{frame} | 
|---|
|  | 41 |  | 
|---|
|  | 42 | \begin{frame}[fragile] | 
|---|
|  | 43 | \frametitle{procmail} | 
|---|
|  | 44 | \begin{itemize} | 
|---|
|  | 45 | \item Reads \verb|~/mail_scripts/procmailrc| from user's home directory | 
|---|
|  | 46 | \item Users can do whatever they want with messages | 
|---|
|  | 47 | \item AFS causes problems---No way to know if failure is temporary (file server is down) or permanent (user isn't signed up for mail scripts) | 
|---|
|  | 48 | \item All procmail failures are treated as temporary, so mail is queued | 
|---|
|  | 49 | \end{itemize} | 
|---|
|  | 50 | \end{frame} | 
|---|
|  | 51 |  | 
|---|
|  | 52 | \subsection{Cron (``Shortjobs'')} | 
|---|
|  | 53 |  | 
|---|
|  | 54 | \begin{frame}[fragile] | 
|---|
|  | 55 | \frametitle{Cron (cronie)} | 
|---|
|  | 56 | \begin{itemize} | 
|---|
|  | 57 | \item Crontabs are currently stored locally on scripts servers | 
|---|
|  | 58 | \item {\tt cronload} command loads the crontabs from | 
|---|
|  | 59 | \verb|~/cron_scripts/crontab| \pause | 
|---|
|  | 60 | \item Needs improvement | 
|---|
|  | 61 | \item Cron does not fail over with Web and Mail | 
|---|
|  | 62 | \item Plan to move crontabs into AFS and do hot failover | 
|---|
|  | 63 | \end{itemize} | 
|---|
|  | 64 | \end{frame} | 
|---|
|  | 65 |  | 
|---|
|  | 66 | \subsection{SQL} | 
|---|
|  | 67 |  | 
|---|
|  | 68 | \begin{frame} | 
|---|
|  | 69 | \frametitle{sql.mit.edu} | 
|---|
|  | 70 | Though scripts.mit.edu makes use of sql.mit.edu, it's a separate SIPB service with different maintainers. | 
|---|
|  | 71 | \begin{itemize} | 
|---|
|  | 72 | \item sql.mit.edu provides MySQL databases to scripts users and anyone else | 
|---|
|  | 73 | \item SQL data is stored locally, replicated across multiple servers | 
|---|
|  | 74 | \item Nightly backups go into AFS | 
|---|
|  | 75 | \end{itemize} | 
|---|
|  | 76 | \end{frame} | 
|---|
|  | 77 |  | 
|---|
|  | 78 | \subsection{Version control} | 
|---|
|  | 79 |  | 
|---|
|  | 80 | \begin{frame} | 
|---|
|  | 81 | \frametitle{SVN and Git hosting} | 
|---|
|  | 82 | \begin{itemize} | 
|---|
|  | 83 | \item New service (September 2008), not well documented | 
|---|
|  | 84 | \item svn://\textit{username}.scripts.mit.edu/ and git://\textit{username}.scripts.mit.edu/ | 
|---|
|  | 85 | \item Uses suEXEC to run a svnserve / git-daemon as the user | 
|---|
|  | 86 | \item /mit/\textit{username}/Scripts/\{svn,git\} | 
|---|
|  | 87 | \item git:// is read-only, so future plans for svn+ssh:// and git+ssh:// | 
|---|
|  | 88 | \end{itemize} | 
|---|
|  | 89 | \end{frame} | 
|---|