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