Physical Address
Metro Manila, Philippines
Physical Address
Metro Manila, Philippines
In Part 2, we built the LTSP server for PXE boot thin clients on Ubuntu 24.04. The server can now provide a basic PXE boot environment for client machines.
In this third part, we will connect the LTSP environment to Univention Corporate Server, also called UCS.
UCS will provide two important services for the thin client setup:
This follows the original lab design, where the thin clients boot through PXE, authenticate against an existing UCS LDAP directory, and mount /home from the same UCS server over NFS.
Univention Corporate Server is useful in this setup because it can act as the central identity and file service platform for the thin client environment.
Instead of managing users locally on the LTSP server, user accounts are created and managed in UCS. The LTSP server checks UCS when a user logs in. The user’s home directory is also stored on UCS and mounted through NFS.
The simplified flow looks like this:
Thin Client
|
| PXE boot
v
LTSP Server on Ubuntu 24.04
|
| User lookup and login
v
UCS LDAP Directory
|
| User home directory
v
UCS NFS Share
|
v
XFCE desktop or kiosk session
UCS supports centralized directory management through LDAP, and its manual includes domain services, LDAP directory, user management, and UCS web interface modules as part of the platform.
For file storage, UCS supports central management of directory shares. UCS shares can be provided through CIFS for Windows and Linux clients, or through NFS for Linux and Unix clients. UCS-managed NFS shares can be mounted by clients through NFSv3 and NFSv4.
LDAP means Lightweight Directory Access Protocol.
In this design, LDAP is used so the LTSP server can read user account information from UCS.
LDAP answers questions like:
Does this user exist?
What is the user's UID?
What is the user's GID?
What groups does the user belong to?
What is the user's home directory?
What shell should the user use?
Is the password correct?
Linux needs this information when a user logs in.
For example, a UCS user may have account data like this:
Username: student01
UID number: 20001
GID number: 5001
Home directory: /home/student01
Login shell: /bin/bash
The username is what the person types. The UID and GID are what Linux uses for file ownership and permissions.
NFS means Network File System.
NFS allows one server to share a directory over the network. Other Linux systems can mount that shared directory and use it like a local folder.
In this design, UCS shares /home through NFS.
That means user home directories are stored on UCS, not separately on every thin client.
Example:
UCS server export: ucs01.pinoylinux.intranet:/home
LTSP mount point: /home
User folder: /home/student01
When student01 logs in from a thin client, the user sees:
/home/student01
But the actual files are stored on the UCS server.
This is important because /home contains user files and user settings, such as:
Documents
Downloads
Desktop files
XFCE settings
Browser profile data
Application settings
.xsession file
Without NFS, users may lose settings when they move from one thin client to another. With NFS, the user gets the same home directory from any client.
LDAP provides the user identity. NFS provides the user files.
LDAP tells Linux:
student01 has UID 20001 and home directory /home/student01
NFS provides:
The actual /home/student01 folder from UCS
The most important rule is this:
The UID and GID in LDAP must match the owner of the home directory on NFS.
If the UID and GID do not match, the user may log in but fail to write files. The user may also see permission errors, broken desktop settings, or login problems.
This article uses the following sample values:
UCS server hostname: ucs01.pinoylinux.intranet
UCS server IP address: 192.168.100.75
LDAP base DN: dc=pinoylinux,dc=intranet
LDAP user container: cn=users,dc=pinoylinux,dc=intranet
LTSP server hostname: ltsp01.pinoylinux.intranet
LTSP server OS: Ubuntu 24.04 LTS
NFS export from UCS: 192.168.100.75:/home
LTSP mount path: /home
Replace these values with your own domain, hostname, IP address, and user structure.
Do not publish real bind passwords in the article.
Install UCS on a server or virtual machine that will act as the central identity and file server.
During installation, choose the correct language, keyboard, storage, network settings, and domain settings. The UCS installer is interactive and asks for the system settings through a graphical interface.
For this design, UCS should have a static IP address.
Example:
Hostname: ucs01
Domain: pinoylinux.intranet
IP address: 192.168.100.75
Role: Primary Directory Node
Illustration 1: UCS installation starts with language, keyboard, storage, network, and domain setup.
Illustration 2: UCS is configured with a static IP address and domain name for centralized user management.
After installation, open the UCS web interface from a browser.
Example:
https://ucs01.pinoylinux.intranet/
or:
https://192.168.100.75/
Log in using the UCS administrator account.
The UCS manual includes the UCS web interface and management modules as part of the administration workflow.

Illustration 3: The UCS web interface is used to manage users, groups, shares, and domain settings.
UCS stores directory information in LDAP. Before configuring the LTSP server, confirm that the UCS LDAP service is reachable from the LTSP server.
From the LTSP server:
getent hosts ucs01.pinoylinux.intranet
ping -c 4 ucs01.pinoylinux.intranet
If DNS is not configured yet, add a temporary entry on the LTSP server:
sudo nano /etc/hosts
Example:
192.168.100.75 ucs01.pinoylinux.intranet ucs01
Test again:
getent hosts ucs01.pinoylinux.intranet
In the UCS web interface, open:
Users
Create a test user.
Example:
Username: student01
First name: Student
Last name: One
Password: Set a test password
The UCS manual includes user management through the Univention Management Console module.
Illustration 4: Users are created centrally in UCS instead of locally on each LTSP client.
For Linux login, the user must have Unix or POSIX account attributes.
Confirm that the UCS user has:
Username
UID number
Primary group or GID
Home directory
Login shell
Example:
Username: student01
Home directory: /home/student01
Login shell: /bin/bash
Illustration 5: The UCS user must have Linux account attributes so the LTSP server can map the login to a UID, GID, shell, and home directory.
If the user has no Linux attributes, the LTSP server may not be able to resolve the user correctly through LDAP.
The user’s home directory must exist on the UCS server.
Example:
/home/student01
If UCS creates the home directory automatically based on user settings, confirm that it exists.
On the UCS server:
ls -ld /home/student01
Check numeric ownership:
ls -ldn /home/student01
Example result:
drwx------ 10 20001 5001 4096 Jul 10 10:00 /home/student01
The numeric UID and GID should match the user data from UCS LDAP.
/home as an NFS Share in UCSIn the UCS web interface, open:
Shares
Create or confirm a share for /home.
Example settings:
Share name: home
Server: ucs01
Path: /home
NFS: Enabled
Samba/CIFS: Optional, depending on your environment
UCS supports central file share management through the UMC module. A share registered in the UMC Shares module is created on a UCS server as part of UCS domain replication. UCS shares can be made available through CIFS or NFS, and NFS shares managed by UCS can be mounted by NFSv3 or NFSv4 clients.
Illustration 6: The /home directory is shared from UCS so LTSP users can access the same home directory from any thin client.
Illustration 7: NFS access is enabled for Linux clients that need to mount the centralized /home directory.
From the LTSP server, install NFS client tools if they are not installed yet:
sudo apt update
sudo apt install -y nfs-common
Check the NFS exports from UCS:
showmount -e 192.168.100.75
Expected result:
Export list for 192.168.100.75:
/home 192.168.100.0/24
If the export does not appear, check the UCS share settings and firewall rules.
In the older lab notes, LDAP was configured through /etc/ldap.conf. For Ubuntu 24.04, a cleaner approach is to use SSSD.
SSSD can use LDAP for authentication, authorization, and user and group information. Ubuntu’s documentation shows SSSD with LDAP using packages such as sssd-ldap and ldap-utils.
Install the required packages:
sudo apt update
sudo apt install -y \
sssd-ldap sssd-tools ldap-utils \
libnss-sss libpam-sss \
nfs-common
Test LDAP lookup from the LTSP server.
If using plain LDAP in a closed lab:
ldapsearch -x \
-H ldap://192.168.100.75 \
-b "dc=pinoylinux,dc=intranet" \
"(uid=student01)"
If using a bind account:
ldapsearch -x \
-H ldap://192.168.100.75 \
-D "uid=ldapbind,cn=users,dc=pinoylinux,dc=intranet" \
-W \
-b "dc=pinoylinux,dc=intranet" \
"(uid=student01)"
For a real deployment, prefer StartTLS or LDAPS. Ubuntu’s SSSD with LDAP documentation notes that clients must trust the CA that signed the LDAP server certificate when using StartTLS with full certificate checking.
Do not hardcode real passwords in the public article.
Create the SSSD configuration file:
sudo nano /etc/sssd/sssd.conf
Example configuration:
[sssd]
services = nss, pam
config_file_version = 2
domains = pinoylinux.intranet
[domain/pinoylinux.intranet]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://192.168.100.75
ldap_search_base = dc=pinoylinux,dc=intranet
ldap_schema = rfc2307
cache_credentials = true
enumerate = false
fallback_homedir = /home/%u
default_shell = /bin/bash
If your UCS LDAP server requires a bind account, add:
ldap_default_bind_dn = uid=ldapbind,cn=users,dc=pinoylinux,dc=intranet
ldap_default_authtok_type = password
ldap_default_authtok = CHANGE_THIS_PASSWORD
For production, use StartTLS or LDAPS. Example StartTLS settings:
ldap_id_use_start_tls = true
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt
Set the correct permissions:
sudo chown root:root /etc/sssd/sssd.conf
sudo chmod 600 /etc/sssd/sssd.conf
Ubuntu’s SSSD documentation also states that /etc/sssd/sssd.conf should be owned by root and have 0600 permissions.
Start SSSD:
sudo systemctl enable --now sssd
Check status:
systemctl status sssd --no-pager
Edit NSS configuration:
sudo nano /etc/nsswitch.conf
Make sure these lines include sss:
passwd: files systemd sss
group: files systemd sss
shadow: files sss
Run PAM configuration:
sudo pam-auth-update
Enable SSS authentication if prompted.
For this design, do not depend on local automatic home directory creation. The home directory should come from UCS through NFS.
Clear SSSD cache:
sudo sss_cache -E
Test user lookup:
getent passwd student01
Expected result:
student01:*:20001:5001:Student One:/home/student01:/bin/bash
Test group lookup:
id student01
Expected result:
uid=20001(student01) gid=5001(students) groups=5001(students)
/home Through NFSBefore mounting /home, remember this:
Mounting UCS /home over the local /home path hides the local /home folders while the NFS mount is active.
Keep a local admin account available for recovery.
Create a temporary test mount point:
sudo mkdir -p /mnt/ucs-home-test
Mount the UCS home directory:
sudo mount -t nfs4 192.168.100.75:/home /mnt/ucs-home-test
Check the mounted folder:
ls -lah /mnt/ucs-home-test
ls -lah /mnt/ucs-home-test/student01
Check numeric ownership:
ls -ldn /mnt/ucs-home-test/student01
Compare it with:
id student01
The UID and GID must match.
Unmount the test mount:
sudo umount /mnt/ucs-home-test
/home to /etc/fstabBack up the current fstab:
sudo cp /etc/fstab /etc/fstab.bak.$(date +%F)
Edit fstab:
sudo nano /etc/fstab
Add this line:
192.168.100.75:/home /home nfs4 rw,_netdev,hard,noatime,x-systemd.automount,x-systemd.requires=network-online.target 0 0
Ubuntu’s NFS documentation covers installing and mounting NFS shares on Ubuntu systems. It also lists the NFS client package nfs-common for client-side NFS use.
Reload systemd:
sudo systemctl daemon-reload
Mount the entries:
sudo mount -a
Check the mount:
findmnt /home
df -h /home
Suggested screenshot:
[Screenshot: LTSP terminal showing findmnt /home]
Caption: The LTSP server now mounts /home from UCS through NFS.
Test from the LTSP server first:
su - student01
Check the home directory:
pwd
touch ~/ucs-nfs-test.txt
ls -lah ~/ucs-nfs-test.txt
Expected result:
/home/student01
Exit:
exit
If the file can be created, the UCS LDAP identity and UCS NFS home directory are working together.
Check the LightDM configuration from Part 2:
cat /etc/lightdm/lightdm.conf.d/50-xfce.conf
Expected configuration:
[Seat:*]
greeter-session=lightdm-gtk-greeter
greeter-hide-users=true
greeter-show-manual-login=true
user-session=xfce
allow-guest=false
Restart LightDM:
sudo systemctl restart lightdm
Illustration 8: Users log in manually using their UCS username and password.
The LTSP clients need the SSSD, LDAP, PAM, NSS, and NFS configuration.
Rebuild the LTSP image:
sudo ltsp image /
Regenerate the LTSP initrd:
sudo ltsp initrd
If needed, regenerate the iPXE boot files:
sudo ltsp ipxe
Reboot a thin client through PXE and test login with the UCS user account.
From the PXE-booted thin client:
Run:
whoami
pwd
id
touch ~/thin-client-ucs-test.txt
ls -lah ~/thin-client-ucs-test.txt
Expected:
whoami -> student01
pwd -> /home/student01
If the file is created successfully, the thin client is using centralized authentication and centralized home storage.
ldapsearch failsCheck:
ping -c 4 192.168.100.75
getent hosts ucs01.pinoylinux.intranet
Check firewall and LDAP service on UCS.
ldapsearch works, but getent passwd student01 failsCheck SSSD:
systemctl status sssd --no-pager
journalctl -u sssd -n 100 --no-pager
Check file permissions:
ls -l /etc/sssd/sssd.conf
Expected:
-rw------- 1 root root /etc/sssd/sssd.conf
Clear cache:
sudo sss_cache -E
getent passwd student01
Run:
sudo pam-auth-update
Make sure SSS authentication is enabled.
Check that the UCS user has a valid shell and home directory.
getent passwd student01
Run:
showmount -e 192.168.100.75
If /home does not appear, review the UCS Shares module and confirm NFS is enabled.
/home/student01Check numeric ownership:
id student01
ls -ldn /home/student01
The UID and GID must match.
Use systemd automount in /etc/fstab:
x-systemd.automount
This allows /home to mount when first accessed instead of blocking the boot process too early.
For lab use, plain LDAP and basic NFS may work.
For production-style deployments, review these controls:
Use StartTLS or LDAPS for LDAP.
Use a low-privilege LDAP bind account.
Do not publish LDAP passwords.
Restrict NFS exports to trusted networks.
Prefer NFSv4 where possible.
Keep local admin access for recovery.
Back up UCS LDAP and /home data.
Use firewall rules to limit LDAP and NFS access.
LDAP protects identity. NFS protects user files. Both must be configured carefully.
In this part, we updated the thin client design to use UCS as the central backend.
We completed the following:
Explained what LDAP does
Explained what NFS does
Explained why UCS fits the LTSP design
Prepared UCS as the LDAP and NFS backend
Created a UCS user
Confirmed Linux account attributes
Configured a UCS /home NFS share
Installed SSSD and NFS tools on Ubuntu 24.04
Connected the LTSP server to UCS LDAP
Mounted UCS /home through NFS
Tested UCS user login
Rebuilt the LTSP image
Tested the setup from a PXE-booted thin client
At this point, the LTSP thin client environment has centralized login and centralized user files through UCS.
In Part 4, we will configure the managed desktop experience.
We will focus on XFCE, LightDM behavior, and Google Chrome Stable kiosk mode. The goal is to control what users see after login and launch a full-screen browser session when needed.
Univention Corporate Server 5.2 Manual
https://docs.software-univention.de/manual/5.2/en/contents.html
Univention Corporate Server Installation
https://docs.software-univention.de/manual/5.2/en/installation.html
Univention Corporate Server File Share Management
https://docs.software-univention.de/manual/5.2/en/shares/index.html
Ubuntu Server Documentation, SSSD with LDAP
https://ubuntu.com/server/docs/how-to/sssd/with-ldap/
Ubuntu Server Documentation, Network File System
https://ubuntu.com/server/docs/how-to/networking/install-nfs/
LTSP Documentation
https://ltsp.org/docs/
LTSP Installation Guide
https://ltsp.org/docs/installation/
LTSP Manual
https://ltsp.org/man/ltsp/