Create a set of groups for your users. It could be as simple as two groups or as complex as each user in his/her own group. If studen01 is in group01 all members of that group can access the directorys. If linsig01 is in group linsig01, and student01 is not in that group, then student01 cannot access that group's directories.
to set permissions on files or directories use.
Here you see I have each student in a student group, and each linsig in a linsig group.
Code:
#ls -l /home
drwxr-xr-x 2 linsig01 linsig 4096 2010-11-01 11:11 linsig01
drwxr-xr-x 2 linsig02 linsig 4096 2010-11-01 11:11 linsig02
drwxr-xr-x 2 linsig03 linsig 4096 2010-11-01 11:11 linsig03
drwxr-xr-x 2 student01 student 4096 2010-11-01 11:11 student01
drwxr-xr-x 2 student02 student 4096 2010-11-01 11:11 student02
drwxr-xr-x 2 student03 student 4096 2010-11-01 11:11 student03
For more info on sudo, I suggest reading the man page for sudoers. You can control permissions to users or groups that way, and fine tune what can or cannot be done.
I used ACLs on a university file system, AFS, but that was particular to that file system. It can get as complex as you make it, but it doesn't need to be too complex.
A tutorial:
http://www.tuxfiles.org/linuxhelp/filepermissions.html