Table of Contents

Overview

lairstation[1-4].lair.lan are dual-head student workstations for use in the LAIR.

hostname RAM disk swap OS Kernel
lairstation1.lair.lan 1GB 40GB (/) 1GB Ubuntu 11.04 “Natty Narwhal” (i386) 2.6.38-11-generic
lairstation2.lair.lan 1GB 80GB (/) 1GB Ubuntu 11.04 “Natty Narwhal” (i386) 2.6.38-11-generic

Need to update/check the following:

lairstation3.lair.lan 1GB 40GB (/) 1GB Ubuntu 10.10 “Maverick Meerkat” (i386) 2.6.35
lairstation4.lair.lan 1GB 40GB (/) 1GB Ubuntu 10.10 “Maverick Meerkat” (i386) 2.6.35

News

TODO

Network Configuration

Machine Interface IP Address MAC Address
lairstation1.lair.lan eth0 10.80.1.31 00:0d:56:a4:07:ea
lairstation2.lair.lan eth0 10.80.1.32 00:0d:56:a3:03:0d
lairstation3.lair.lan eth0 10.80.1.33 00:0d:56:a4:01:e5
lairstation4.lair.lan eth0 10.80.1.34 00:0d:56:a2:e2:fc

Packages

The following packages have been installed:

xtv xpaint build-essential luakit ldap-auth-client ldap-auth-config
libldap-2.4-2 libnss-ldap libpam-ldap vim autofs5 gimp xautomation
xwit libsdl-ttf2.0-0 libsdl-ttf2.0-dev libsdl-sound1.2 libsdl-sound1.2-dev
libsdl-net1.2 libsdl-net1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl-gfx1.2-4
libsdl-gfx1.2-dev libsdl-image1.2 libsdl-image1.2-dev sun-java6-jdk

sources.list

The following is the working /etc/apt/sources.list file for Ubuntu systems in the LAIR:

# deb http://mirror/ubuntu/ natty main restricted
# deb http://mirror/ubuntu/ natty-updates main restricted
# deb http://security.ubuntu.com/ubuntu natty-security main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://mirror/ubuntu/ natty main restricted
deb-src http://mirror/ubuntu/ natty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://mirror/ubuntu/ natty-updates main restricted
deb-src http://mirror/ubuntu/ natty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://mirror/ubuntu/ natty universe
deb-src http://mirror/ubuntu/ natty universe
deb http://mirror/ubuntu/ natty-updates universe
deb-src http://mirror/ubuntu/ natty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://mirror/ubuntu/ natty multiverse
deb-src http://mirror/ubuntu/ natty multiverse
deb http://mirror/ubuntu/ natty-updates multiverse
deb-src http://mirror/ubuntu/ natty-updates multiverse

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://mirror/ubuntu/ natty-backports main restricted universe multiverse
# deb-src http://mirror/ubuntu/ natty-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
deb http://archive.canonical.com/ubuntu natty partner
deb-src http://archive.canonical.com/ubuntu natty partner

## Uncomment the following two lines to add software from Ubuntu's
## 'extras' repository.
## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
# deb http://extras.ubuntu.com/ubuntu natty main
# deb-src http://extras.ubuntu.com/ubuntu natty main

deb http://security.ubuntu.com/ubuntu natty-security main restricted
deb-src http://security.ubuntu.com/ubuntu natty-security main restricted
deb http://security.ubuntu.com/ubuntu natty-security universe
deb-src http://security.ubuntu.com/ubuntu natty-security universe
deb http://security.ubuntu.com/ubuntu natty-security multiverse
deb-src http://security.ubuntu.com/ubuntu natty-security multiverse

Don't forget to aptitude update after dropping this in place!

LDAP

LDAP config on Ubuntu is different enough from Debian to warrant unique instructions. They follow:

/etc/ldap.conf

This is the equivalent of /etc/libnss-ldap.conf and /etc/pam_ldap.conf on a Debian system… all nicely merged into one file:

base                    dc=lair,dc=bits
uri                     ldap://auth1 ldap://auth2 ldap://auth3
ldap_version            3
bind_policy             soft

pam_password            exop

nss_base_passwd         ou=people,dc=lair,dc=bits?one
nss_base_passwd         ou=people,dc=dslab,dc=bits?one
nss_base_passwd         ou=people,dc=sunyit,dc=bits?one

nss_base_shadow         ou=people,dc=lair,dc=bits?one
nss_base_shadow         ou=people,dc=dslab,dc=bits?one
nss_base_shadow         ou=people,dc=sunyit,dc=bits?one

nss_base_group          ou=groups,dc=lair,dc=bits?one
nss_base_group          ou=groups,dc=dslab,dc=bits?one
nss_base_group          ou=groups,dc=sunyit,dc=bits?one
nss_initgroups_ignoreusers avahi,avahi-autoipd,backup,bin,couchdb,daemon,games,gdm,gnats,haldaemon,hplip,irc,kernoops,klog,libuuid,list,lp,mail,man,messagebus,news,polkituser,proxy,pulse,root,rtkit,saned,speech-dispatcher,sshd,statd,sync,sys,syslog,usbmux,uucp,www-data

/etc/ldap/ldap.conf

Basically the same on any machine, Debian or Ubuntu:

BASE    dc=lair,dc=bits
URI     ldap://auth1 ldap://auth2 ldap://auth3

/etc/pam.d/common-account

This is basically the stock common-account (well, from 10.10, I should check to see if there are any differences in 11.04):

#
# /etc/pam.d/common-account - authorization settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system.  The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
#

# here are the per-package modules (the "Primary" block)
account [success=3 new_authtok_reqd=done default=ignore]        pam_unix.so
account [success=2 new_authtok_reqd=done default=ignore]        pam_winbind.so
account [success=1 default=ignore]      pam_ldap.so
# here's the fallback if no module succeeds
account requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
account required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

/etc/pam.d/common-auth

#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.).  The default is to use the
# traditional Unix authentication mechanisms.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
auth    [success=3 default=ignore]      pam_unix.so nullok_secure
auth    [success=2 default=ignore]      pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_cap.so
# end of pam-auth-update config

/etc/pam.d/common-password

#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.

# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.

# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
password        [success=3 default=ignore]      pam_unix.so obscure sha512
password        [success=2 default=ignore]      pam_winbind.so use_authtok try_first_pass
password        [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass
# here's the fallback if no module succeeds
password        requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password        required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

/etc/pam.d/common-session

#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session [default=1]                     pam_permit.so
# here's the fallback if no module succeeds
session requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required        pam_unix.so
session optional                        pam_winbind.so
session optional                        pam_ldap.so
session optional                        pam_ck_connector.so nox11
# end of pam-auth-update config

/etc/pam.d/common-session-noninteractive

#
# /etc/pam.d/common-session-noninteractive - session-related modules
# common to all non-interactive services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of all non-interactive sessions.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

# here are the per-package modules (the "Primary" block)
session [default=1]                     pam_permit.so
# here's the fallback if no module succeeds
session requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required        pam_unix.so
session optional                        pam_winbind.so
session optional                        pam_ldap.so
# end of pam-auth-update config

/etc/nsswitch.conf

An easily overlooked but critical file:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files [SUCCESS=return] ldap
group:          files [SUCCESS=return] ldap
shadow:         files [SUCCESS=return] ldap

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      files
services:       files
ethers:         files
rpc:            files

netgroup:       nis

AutoFS

Getting home directories to auto mount is the same process as on Debian, but described here for completeness:

/etc/auto.master

#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#
#/misc  /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
#       "nosuid" and "nodev" options unless the "suid" and "dev"
#       options are explicitly given.
#
#/net   -hosts
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
#+auto.master
/home   /etc/auto.home --timeout=60

/etc/auto.home

*       nfs:/home/&

NFS bits

Since autofs uses NFS, we need to perform some NFS configuration to ensure everything is as it should be. Namely, indicating that we're using idmapd, and dropping in the idmapd config.

/etc/default/nfs-common

# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".

# Do you want to start the statd daemon? It is not needed for NFSv4.
NEED_STATD=

# Options for rpc.statd.
#   Should rpc.statd listen on a specific port? This is especially useful
#   when you have a port-based firewall. To use a fixed port, set this
#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
#   For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS
STATDOPTS=

# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=yes

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=

/etc/idmapd.conf

Very important, otherwise the UIDs and GIDs of the auto mounted files will not match up, and although users will be able to log in (from the correct LDAP config), they won't be able to modify their files, and their experience will be sub-standard.

[General]
Domain = lair
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Verbosity = 0

[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

[Translation]
Method = nsswitch