Language Selection

English French German Italian Portuguese Spanish

Custom scripting gives users a safe-du

Filed under
HowTos

My company has a Linux cluster with a terabyte of attached storage. Over time we noticed the head node was becoming more overloaded. Inspection of the system showed that users were starting dozens of copies of the du utility to determine disk space usage. This was a natural thing for them to do, because they had a need to know how much disk space was available. A lack of disk space would cause their software builds and tests to fail. The problem was that it takes five to seven hours for a du of the entire shared filesystem. Thus, when the filesystem was nearly full (as it of course usually was), the number of du processes would increase almost exponentially.

To address this problem, we first set up automated nightly disk space reports, so that users could check the status without running du. This still did not solve the problem, as the amount of used space could fluctuate dramatically over the course of 24 hours. Users still wanted and needed to run their own du processes throughout the workday.

While adding more disk space would have solved the problem, we are using a large disk array that is already filled to maximum capacity. In general, users tend to fill up all available disk space anyway, no matter how much you give them.

We then developed a policy: users could run du on any directory they owned. In addition, user du processes would be allowed to run for a maximum of one hour of wall time. Users in the wheel group would be exempt from these restrictions.

I was given the task of developing a tool to implement this policy. Some sort of wrapper around the existing du seemed like an obvious choice: the script could validate the input, abort if an invalid path was given, and terminate the du process if it ran too long.

I wrote a basic bash script in perhaps an hour's time. Then I thought about how to run it, and that is where I ran into trouble. I had thought that I would make the script set user id (setuid) or set group id (setgid) root, i.e. when run by any user it would actually run in the root group. Then, I could change the permissions on the real du so that only root could run it. The result would be that normal users could only access the real du through the wrapper script.

Of course that would make a pretty boring article, and in reality it didn't turn out to be that simple:

Full Story.

More in Tux Machines

Android vs iPhone: 15 Reasons Android is Better

We’ll explain 15 reasons why Android is better than the iPhone with a new for 2016 Android vs iPhone comparison. Google is kicking up the competition with Android Marshmallow that is thankfully rolling out to more devices and showing off Android N and a handful of interesting apps that will come later this year. Apple continues to work on iOS 9 updates and is close to showing off iOS 10 this summer, which we hope will fix a number of issues and bring the iPhone on par with Android in key areas. The iPhone 6s and iPhone 6s Plus along with iOS 9 helped Apple users catch up in a number of ways, but there are still a lot of areas where Android is hands down better than the iPhone. Read more

3 open source alternatives to AutoCAD

The trick for deciding whether a replacement piece of software, whether open or closed, is a good choice for you is to tease out exactly what your needs are. The situation is no different than discovering that the person who insists that they "need" Photoshop is just using it to draw a few geometric shapes and remove red eye from photos; what they really need is a graphics editing tool that can replace those specific functions. Whether it has all of the bells and whistles of the original is irrelevant if those features sit paid for but unused. My personal journey through open source CAD programs was no different. I had worked with AutoCAD briefly in grad school, and so when I wanted to play with drawing three-dimensional plans for something, it was pretty much all I knew. But that alone didn't make AutoCAD the best choice. Read more

Manjaro Linux Budgie 16.06 Edition Promises a Clean Budgie Desktop Experience

As part of the upcoming Manjaro Linux 16.06 "Daniella" release, many of the community editions get Release Candidate (RC) builds to showcase what's coming later this year. Read more

DisplayLink USB 3.0 Driver Now Available for Ubuntu 16.04 LTS, Fedora Linux

DisplayLink has recently updated their DisplayLink USB 3.0 driver for the latest Ubuntu Linux operating system launched by Canonical in the last week of April 2016, Ubuntu 16.04 LTS. Read more