=====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===== * Reinstalled LAIRstation 1 & 2 * Installed Ubuntu 11.04 (20111004) * Inferred a working LDAP/autofs config from LAIRstation3 (20111004) =====TODO==== * Test USB graphics adapter for third head? * Unified gnome desktop defaults for all users (LAIRified) =====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