An operating system is supposed to manage your computers resources: to open files, close files, load programs, setting loaded programs into execution, cleaning up after programs finish. That sort of thing.
Multi-tasking operating systems are more complicated than single tasking operating systems like MS-DOS. They have to keep one program from writing (damaging) the memory being used by other programs. They should even keep programs from reading memory outside of their allocated block(s) of memory.
Multi-user operating systems are more complicated yet. They must embody the idea of protection and permissions. One user might not want other users to read a file of theirs, to write (change) a file of theirs, run a program of theirs, or even to be able to find the name of a file of theirs. Permissions decide this. Multi-user operating systems often invoke the idea of "groups" of people, so permissions relate to the file's owner, what group(s) the owner belongs to, and everyone else.
Probably next up the ladder in terms of complication is the ability to be a "real-time" operating system. Linux has some rudimentary abilities with regard to this, but (IMHO) this type of task is often better handled by operating systems or executives designed for this. QNX is an example of a real-time OS.