Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
This actually isn't terribly hard at all. All you need to do to disconnect a login session is to kill -9 the user's shell. So you can read the list of prohibited users from a file, do ps aux and grep for shells being run by those users, and pass 'em on to kill -9. Should be a not terribly difficult bash or Perl script to write. Run it from cron at the end of the day, and presto.
Of course, you need a way to prevent them from re-logging on. There are tools that limit user login times, but I've never used them. Alternatively, if you want nobody but root to be able to log on during off hours, you can have your cron file touch /etc/nologin and then have another cron entry remove that file at the start of business the next day.
Well, it's easy enough to simply kill all the processes associated with a particular user (and deny them access to cron and at so they can't be restarted). You could also try a normal kill (SIGTERM not SIGKILL) of the login shell, which should cause all the clean-up to be done. BTW, I just tried kill 9'ing the shell myself, and the utmp/wtmp info does seem to be written out correctly (at least based on the results of w and last). I think this is because the process controlling the session (i.e. telnetd, sshd, or init/getty for local connections) detects the exit and writes out the log info, independent of the user's shell. I'm not 100% sure that this is how it works, though.