Slashdot Mirror


Ask Slashdot: Linux Login and Resource Management In a Computer Lab?

New submitter rongten (756490) writes I am managing a computer lab composed of various kinds of Linux workstations, from small desktops to powerful workstations with plenty of RAM and cores. The users' $HOME is NFS mounted, and they either access via console (no user switch allowed), ssh or x2go. In the past, the powerful workstations were reserved to certain power users, but now even "regular" students may need to have access to high memory machines for some tasks. Is there a sort of resource management that would allow the following tasks? To forbid a same user to log graphically more than once (like UserLock); to limit the amount of ssh sessions (i.e. no user using distcc and spamming the rest of the machines, or even worse, running in parallel); to give priority to the console user (i.e. automatically renicing remote users jobs and restricting their memory usage); and to avoid swapping and waiting (i.e. all the users trying to log into the latest and greatest machine, so have a limited amount of logins proportional to the capacity of the machine). The system being put in place uses Fedora 20, and LDAP PAM authentication; it is Puppet-managed, and NFS based. In the past I tried to achieve similar functionality via cron jobs, login scripts, ssh and nx management, and queuing system — but it is not an elegant solution, and it is hacked a lot. Since I think these requirements should be pretty standard for a computer lab, I am surprised to see that I cannot find something already written for it. Do you know of a similar system, preferably open source? A commercial solution could be acceptable as well.

20 of 98 comments (clear)

  1. aversion therapy by lyapunov · · Score: 2

    I would do it up A Clockwork Orange style.

    The original BOFH stories are a good guide: http://bofh.ntk.net/BOFH/

    --

    Either give it away or get top dollar, but never sell yourself cheap.
  2. Trust your users by Anonymous Coward · · Score: 5, Funny

    Trust your users.

  3. Platform LSF by solarium_rider · · Score: 2

    Maybe they have an EDU license? http://www-03.ibm.com/systems/...

    --
    -- How many sigs are as useless as this one?
  4. Is this all necessary? by Sycraft-fu · · Score: 5, Insightful

    Seems like you are trying to work out a solution to a problem you don't have yet. Maybe first see if users are just willing to play nice. Get a powerful system and let them have at it. That's what we do. I work for an engineering college and we have a fairly large Linux server that is for instructional use. Students can log in and run the provided programs. Our resource management? None, unless the system is getting hit hard, in which case we will see what is happening and maybe manually nice something or talk to a user. We basically never have to. People use it to do their assignments and go about their business.

    Hardware is fairly cheap, so you can throw a lot of power at the problem. Get a system with a decent amount of cores and RAM and you'll probably find out that it is fine.

    Now, if things become a repeated problem then sure, look at a technical solution. However don't go getting all draconian without a reason. You may just be wasting your time and resources.

    1. Re:Is this all necessary? by Charliemopps · · Score: 3, Informative

      We did it like you describe. We had some problems with people doing dumb stuff and we just stuck post-its on the monitors describing how to use the "top" command.

      [you@server1 ~]$ top
      PID USER %CPU COMMAND
      1960 you 2.3 top
      2457 Bob 97.0 bitcoin

      [you@server1 ~]$ write Bob DUDE! wtf?!?!

      etc...

    2. Re:Is this all necessary? by MerlynEmrys67 · · Score: 4, Interesting

      This is hilarious. So was in College several decades ago. Large computer labs and lots of SSH/X forwarding to do work. The only time I remember getting in "trouble" was when we were on a LISP module as a freshman. Their resource management only allowed a few LISP interpreters on the machine - otherwise it would deny them for resource reasons. I quickly got sick of typing $lisp and waiting for my session to actually start - so I created a shell script that ran an infinite loop asking for a lisp interpreter...
      15 minutes later, someone tapped on my shoulder and asked me what I was doing - I had taken the full processing capabilities for a while. I showed my script - gasp horror, and a 1 second pause was added to the script and I was good to go. Learned a lesson too.
      The year before I got there - enough people were learning how to hack the system to crash it that they were having trouble keeping the system up. Their solution - install a button next to each keyboard that when pushed would crash the system. No work was accomplished for a week - then it didn't go down again. We were told about the button, it was rough for a couple days - and then the systems were rock solid.
      Kids will be kids - good kids will create a nightmare for you - work to focus that energy in a positive way and good things will result.

      --
      I have mod points and I am not afraid to use them
    3. Re:Is this all necessary? by antifoidulus · · Score: 2

      -bash: !?!: event not found

  5. Did you look at the PAM modules on your system? by Anonymous Coward · · Score: 4, Informative

    Some of what you're asking for are ulimit settings - total number of processes, for example. That's pam_limits. Some could also be handled with pam_tally2. Or, since you're already using LDAP, you could use a simple web-based reservation system which specifies allowed login hosts in the LDAP server for however long someone wants to "check out" a machine; that's how I've done it when I've needed to control access to cluster resources.

    When you talk about controlling other resources beyond logins, it's generally better to handle it at the application level rather than the OS level if you can. But using ulimits (and again, this can be integrated into LDAP pretty easily), you can restrict resources and apply process priority (ionice and nice are your friend) based on membership in a specific group or another LDAP attribute.

    You could, for example, create a "highpower" group per set of machines / per machine (highpower_serverA) and add users to that group based on a checkout system, then define limits on the number of processes they can use, amount of memory they can use, total CPU time they can use, etc in limits.conf based on being in that group or not being in that group.

    I'll send you my bill tomorrow.

  6. Just deal with problem users individually. by ZorinLynx · · Score: 3, Insightful

    Have these problems actually been happening a lot?

    When I first started to help manage a computer lab, I was concerned users would behave really badly and do horrible things. The truth is, very few users did, and we just talked to those users and told them how to behave.

    If you get the occasional repeatedly defiant user, locking out their account can be the final solution. But most people (at least at our site) aren't jerks and listen. Most "bad things" are due more to incompetence than malice, and educating students is easy.

    Also, as someone with experience in these matters, allow me to recommend AGAINST Fedora for production systems. I like to call Fedora the self-breaking distro; updates break things CONSTANTLY. You're much better off running Ubuntu (even non-LTS is more stable than Fedora) or the RHEL clones like CentOS or Scientific Linux.

  7. A lot of this seems superflurious ... by dougmc · · Score: 4, Interesting

    If you're giving your users access to the machines, they should be able to use them. And if you can't trust them to use them responsibly, don't give them access.

    If it were me, I'd secure the boxes normally, set up some resource usage rules (guidelines?) and see what happens. If problems happen often, then maybe look into something automated to enforce the rules, but if not, then you're done.

    As for renicing stuff done by remote users, I'm not sure this is a good idea, but if you want to do it you can renice sshd itself, and to be thorough you can also renice crond (if you give them access to cron/at.) But do keep in mind that nice (and ionice) can't do magic with an overloaded system -- they help, but they don't do magic.

    As for commercial systems, I haven't really seen this as being a big problem outside academia. Multiuser *nix systems where different people are competing for resources is kind of rare in the commercial sector, as it seems like the trends lately are to have enough hardware, often dedicated, and to enforce limits through voluntary compliance (and have their boss talk to them if it's still a problem.)

    That "have their boss talk to them" bit may not work so well for students, but still, I would wait for a problem to appear before I put too much effort into solving it.

    Instead, put your efforts into proper sysadmin stuff -- stay up to date on patches, look for problems (especially security ones), make sure backups work, help users with problems, etc. If there's any troublemakers, talk to them, and if they don't shape up after a few warnings, kick them out. (And make sure the policies permit that!)

    You can enforce limits on specific users through pam and sshd_config and some other mechanisms, but I'd suggest leaving that for later. Anything you do that will limit what people can do will eventually keep them from doing what they legitimately need to be doing.

  8. A lot of complexity, a little gain? by xeos · · Score: 2

    That sounds like a lot of overhead for a problem that seems unlikely. I've used lots of multi-user linux boxes over the years and never noticed that a few bad users ruined the experience for everybody else. If it's really an issue, think of it instead as a learning opportunity - post concise instructions on proper lab utilization and how to use top, etc to check if somebody else is the reason why the machine you are using is slow. Then let users police each other.

  9. Re:Good grief by cdrudge · · Score: 2

    Even if all the machines were identical top of the line machines, many of the things that was listed as requirements would still apply.

    "Spend[ing] a couple bucks" isn't always fiscally possible in a education or non-profit environment which the computing lab is likely a part of.

    Finally, given likely limited resources, it likely made a lot more sense to buy more lower end less expensive machines if they could adequately meet the needs of the majority of users while having just a couple of high end machines for those that need them. But they need mechanisms in place to prevent abuse between users and sessions.

  10. Technical solution to a social problem. by Vellmont · · Score: 4, Insightful

    If your users can't play nice together, the solution isn't to treat the place like a prison with automated systems enforcing a hard and fast set of rules.

    The solution is for users to create their own enforcement. If some guy tries to take all the resources across your network with distcc, then the people affected should be able to notice that and tell the guy to knock that the fuck off.

    In other words, give the users the freedom to break stuff, but also the knowledge to find out who'd breaking their stuff. It'll serve them far better than creating a walled garden where someone else has the responsibility to enforce social rules.

    Slashdot and reddit work this way. Neither go around trying to enforce how people behave, they give the users the power to do that themself.

    --
    AccountKiller
    1. Re:Technical solution to a social problem. by ray-auch · · Score: 2

      Seconded. Except >20yrs and HPUX rather than SunOS.

      Police ourselves - yeah sure we did. Act like adults ? er, nope. I figured out several ways to crash machines from console, if someone logged in remote and started using all the resource, I'd crash the machine and move to another. X was completely unsecured in those days but they installed a graphical login. Fake login windows, key loggers, fake error windows (make the guy on the better workstation think it's crashed so he moves off it), check.

      Best X trick back then was obviously the ability to put up a window on someone else's screen when the tutor was standing behind them, topless or nude pictures were good (bitmap - time before jpeg existed)... I guess the only thing that's changed now is that the available selection and quality of such images has increased a little. Happy days.

  11. Re:I would write my own with LDAP by mrvis · · Score: 4, Insightful

    I would be terrified if you were my co-worker.

  12. NFS homedirs by phorm · · Score: 2

    Back when I worked in schools, one of our techs setup LTSP with NFS-mounted homedirs.
    I mentioned that perhaps IP-based host authorization wasn't exactly a secure way of doing things, especially when it applied to both students and teachers/admin-staff.
    I was told that it wouldn't be an issue, and that files were perfectly safe.

    So some time goes by and a demo is scheduled for the system. My compatriot logs in and... he gets a hot-pink desktop with My Little Pony wallpaper theme. Unfortunately that didn't dissuade him from going with NFS, and they rolled it out anyways: "kids will never figure that out"

    One thing that shouldn't be underestimated is the ability of a user (especially a young user) with *lots* of free time on his/her hands to figure out ways to game the system...

  13. Server Cluster by SampleFish · · Score: 2

    Easy solution:

    Put all of your systems in to one big active/active server cluster. Then everyone is sharing all the resources evenly by default.

    Here is a Fedora resource:
    http://clusterlabs.org/doc/en-...

    If you really want to have some fun you should try to create a Plan9 cluster. This is a transparent cluster OS that was designed for the purpose of resource sharing.
    http://plan9.bell-labs.com/pla...

  14. Re:Good grief by aitikin · · Score: 2

    The acronyms are fairly common and the terms make perfect sense if you've ever admined (and even if not for many purposes) a Linux system.

    --
    "Don't meddle in the affairs of a patent dragon, for thou art tasty and good with ketchup." ~ohcrapitssteve
  15. Virtualization may be your answer by Jailbrekr · · Score: 2

    We had a similar issue with our engineers. We had login servers which worked great as they were poorly advertised and woefully underused, but once we had a system in place for them to make efficient use of them, they started to randomly crash. Most times it was due to them trying to submit a job to our compute farm and end up running it on the login servers, but sometimes it was malicious and a deliberate attempt to get a few extra CPU cycles at the expense of others. For us, the solution was rolling our own virtual desktop farm. We used KVM for the hypervisor, python for the back end control, and php for the front end web interface. We used Active Directory for authentication and rights management. That way we could control precisely how much resources each engineer had rights to.

    As you are working at a school, it is not without reason to believe that you can use the students to help develop a system to manage the virtual instances. With a bit of forethought and a limit to the specifications, you can have a simple VDI broker developed and tested in a month. And if you avoid my mistake and use the libvirt API, you will even have the ability to easily expand the system to using linux containers.

    --
    Feed the need: Digitaladdiction.net
  16. Social problem, social solution by Minwee · · Score: 2

    Post a short, general list of rules in several obvious places. Make them reasonable enough to cover most possible user needs but flexible enough to cover things that you haven't thought of yet. Any user who is stupid enough to break the rules by running fork bombs, torrents, mining, hiding stashes of lemur porn or anything else which a child of six could tell you was a bad idea, will have their accounts disabled as soon as they are discovered.

    If they have a good excuse for abusing the systems then discuss it with them, suggest alternatives to running rendering jobs on the lab servers and keeping passwords on sticky notes or whatever else it is that they are doing wrong and then restore their access, trusting that they will know better. If you do it right, they may even decide that it is better to ask for permission than forgiveness next time.

    If they don't, send a memo to their department head briefly outlining what they did, how it was detected, what action you have taken, and that you won't be reversing this decision until you see a presidential pardon come down from an appropriately high authority. It doesn't matter if they have Really Important Work which needs to be done by the end of the week or not, just cut them off until the proper User Apology and Restoration procedure has been completed.

    There you go. This solution is licensed under the WTFPL which is compatible with the Open Source Definition and the Debian Free Software Guidelines so you can use it any way you want. You can even supply your own LART and display it prominently by the door of your office if that helps get the message across.