ISO27001:2013
Certified Supplier

FIND OUT MORE

We're an ISO27001:2013 Certified Supplier

blog-post-featured-image

A discussion in the office at Tiger HQ recently made us wonder: how would different sorts of administrators tackle an unusual problem?

The problem

Hypothetical problems like this one are often brought out in classroom or interview scenarios:

“Somebody has removed the execute permission (x) from the chmod command [which manages permissions, so catch-22]. How can you restore the permission without resorting to reinstalling?”

The obvious answer is to reinstall the package providing chmod, but that’s not really in the spirit of the game. We collected quite a number of alternatives which would work and give an insight into how different system administrators think about problems like this one.

The file-server admin

If it’s installed (or can be), setfacl from the acl package can usually set things right:

It’s normally used for setting extended ACLs for more complex access rights, but a simple incantation works in this scenario too.

The package maintainer

Package maintainers in distributions are well-used to using the install command to set up trees of files for later release. It can’t change an existing file, but that’s easily sorted:

The default permission set by install is rwxr-xr-x or 0755, which is exactly we want – that can be changed with the -m switch if necessary.

The Perl monk

Perl has a chmod built-in:

This doesn’t call the chmod system binary, but rather the chmod(3) function in libc which in turn calls the chmod(2) system call in the kernel.

The C programmer

A short C program to fix this might look like:

This assumes you have a compiler to hand of course, which you might not on a production system – there are differing views about how wise the ability to compile arbitrary code on a live system may be.

The escape artist

If none of these work, and booting the system into a rescue environment is not an option, there’s always busybox:

 

Photo by Mat Reding on Unsplash

1 thought on “Solving unusual problems”

  1. The busybox option can be shortened to just “busybox chmod …” – if busybox is run as itself rather than under an alias, it looks at the first argument as the utility to provide instead. For another creative option, you could archive the existing chmod utility, fix the archive entry’s permissions then unarchive it again – cpio and sed would do.

Leave a Reply

Your email address will not be published. Required fields are marked *