OPS335 NIS Lab
NIS (Network Information Services)
- An NIS server is used to synchronize system files between machines in an NIS domain.
- In this lab you will set up your Fedora PC as both an NFS and NIS server. You will then use your VM's to serve as your NFS and NIS clients.
PART A: Setting up your NIS Server
- Install the NIS server and client onto your f17 host PC
yum install ypserv ypbind
- Add the following line to the bottom of the file /etc/sysconfig/network
NISDOMAIN="<learn-id>.org" YPSERV_ARGS="-p 783"
- Edit the file /etc/yp.conf and set up your domain:
domain <learn-id>.org server 127.0.0.1
- Edit the file /etc/nsswitch.conf and add "nis" to three lines:
passwd: files nis shadow: files nis group: files nis
- Create the file /var/yp/securenets:
host 127.0.0.1 255.255.255.0 192.168.x.0
- Enable and start the NIS (ypserv) service.
systemctl start ypserv.service systemctl enable ypserv.service
- Backup the configuration file for NIS databases
cp /var/yp/Makefile /var/yp/Makefile.orig
- Modify the following two lines in /var/yp/Makefile from
MINUID=500 MINGID=500
to
MINUID=1000 MINGID=1000
- Verify that your servers (NFS, ypserv) are running correctly with the following command:
rpcinfo -p
- At this step you should edit your firewalls to allow the NIS traffic through your firewall (Hint: check the output of rpcinfo -p or iptables rules related to the "lo" interface)
- Your host will essentially be communicating with its own NIS server when using the Makefile
- Now change to directory /var/yp and run this command
make
- Enable and start the NIS binding (ypbind) service.
systemctl start ypbind.service
- You may need to enable another boolean relating to NIS.
getsebool -a | grep yp
- Use the following command to verify your NIS server is working - you should see your learnid password record.
ypcat passwd
- Add a new user named nis-user, with password "ops335".
- Run 'ypcat passwd' again.
- In order for the new user to show up you will need to recreate the map files- change directory to /var/yp and run the "make" command again.
- Now modify your firewall so that the VM's (client vm03 initially) will be able to access your NIS server. You will need to adjust your firewall - use netstat to determine what ports will be needed.
PART B: Adding VM03 to your NIS domain
- Ensure your VM03 is still mounting your home directory from the host machine using autofs. If not revisit last weeks lab.
- Many of you had an issue last week when using NFS as you had differing GID & UID's between systems - when attempting to mount the home directory from the host you received various permission issues. In case you did not experience it, we will intentionally create this issue and then correct it with NIS.
- Run the following command
cat /etc/passwd | grep home
- Look at the existing users and compare them with the same users on the host machine. Find one whose credentials differ (if none do, create two).
- For example on vm03:
[root@vm03 ~]# cat /etc/passwd | grep home nis-user:x:1000:1000::/home/nis-user:/bin/bash paul:x:1001:1001::/home/paul:/bin/bash
- And on the host:
[root@f17 ~]# cat /etc/passwd | grep home paul:x:1000:1000:paul:/home/paul:/bin/bash nis-user:x:1001:1001::/home/nis-user:/bin/bash
- While the two hosts share the same users, their UID and GID are different. This will cause a problem when mounting the home directory using NFS.
- Back on vm03 try to switch to your learnid (or other account where UID/GID differs between systems)
su <learnid> cd ~
- You should recieve a permission denied error as the UID on the local system differs from the UID of the file owner on the remote server.
- Obtain a listing of the directories in /home:
[paul@vm03 /]# ls -l /home drwx------. 3 nis-user nis-user 4096 Mar 11 19:13 paul
- Notice that one user's home directory shows up as being owned by a different user.
- Try to access the other user's home directory (it should show up as owned by this user):
[paul@vm03 /]# cd /home/nis-user
- You should now be successful. Obtain a directory listing. Below is some example output:
[paul@vm03 /home/nis-user]$ ll drwxr-xr-x. 2 paul paul 4096 Mar 14 09:09 Desktop drwxr-xr-x. 2 paul paul 4096 Feb 17 05:24 Documents drwxr-xr-x. 2 paul paul 4096 Feb 17 05:45 Downloads drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Music drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Pictures drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Public drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Templates drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Videos
- Create an empty file and do a listing again
[paul@vm03 ~]$ touch empty_from_vm03 [paul@vm03 ~]$ ll -rw-rw-r--. 1 paul paul 0 Mar 18 14:58 empty_from_vm03 drwxr-xr-x. 2 paul paul 4096 Mar 14 09:09 Desktop drwxr-xr-x. 2 paul paul 4096 Feb 17 05:24 Documents drwxr-xr-x. 2 paul paul 4096 Feb 17 05:45 Downloads drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Music drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Pictures drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Public drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Templates drwxr-xr-x. 2 paul paul 4096 Jan 4 10:12 Videos
- Now we will fix this problem by making this machine use NIS for user information
- Change users back to root
- Install ypbind on your vm03.
- You may wish to follow the logs on vm03. In addition to your normal log in, ssh from the host to vm03 and get a continuous feed from the logs with:
tail -f /var/log/messages
- Edit /etc/yp.conf adding the following line:
domain <learnid>.org server 192.168.x.1
- Add the following line to the bottom of the file /etc/sysconfig/network
NISDOMAIN="<learn-id>.org"
- Start the ypbind server with the command.
systemctl start ypbind.service
- Looking at your logs ensure that ypbind is registered with rpcbind, if it is unable your firewall may need to be adjusted.
- Now when you run the following command:
ypcat passwd
- You should be able to see the 'nis-user' entry from the host machine, matching its credentials.
- Edit the /etc/nsswitch file change the following lines as they appear below:
passwd: nis files shadow: nis files group: nis files initgroups: files
- Save and exit the file.
- Ensure ypbind will start at boot and restart the vm.
- Again SSH to the machine, this time using your learnid account. You should now be able to see the files in your home directory with the correct mapping.
Part C: Obtaining autofs maps through NIS:
- Make sure autofs service is installed on your vm. If not then install from yum.
- Copy the autofs files from vm03 to your host machine
scp /etc/auto.{home,master} root@f17:/etc/
- Edit /etc/auto.master on the host and remove the 'etc' prefix from auto.home's path:
/home auto.home --timeout=60
- Regenerate your NIS maps and run:
ypcat auto.home
- You should receive the following:
No such map auto.home. Reason: No such map in server's domain
- You will need to look into the Makefile to determine how to add auto.home and auto.master to the list of files shared by NIS.
- After making changes to your Makefile, regenerate your maps again and run the same command as above. You should now see the file and its contents when you run ypcat auto.home.
[root@f16 yp]# ypcat auto.home -fstype=nfs4,rw,nosuid,soft 192.168.70.1:/home/&
- On vm03 delete the autofs files, and edit the /etc/nsswitch.conf file so that autofs consults NIS. Reboot the machine.
- When the VM comes back up, SSH and ensure auto mounting of home occurred.
Part D: Adding the other VM's
- When you have successfully made this change on vm03, repeat these steps so that vm01 and vm02 use NIS for user identification, and mount home directories using autofs.
Completing the Lab
Answer the following questions in your log book.
- What is the purpose of the rpcinfo command?
- Explain the purpose of the make command in the lab - what does it do?
- Explain the purpose of the /var/yp/securenets file.
- What is the function of the portmapper service?
- What ports did you need to open on your firewall?