parseerror.com / shac


What It Does
shac aims to gather all available permission data on a unix-ish system and report back, in a sane and machine-readable format, whether a certain user has certain permissions on certain files and why or why not. as well as the ubiquitous read, write and execute perms, you can check create and delete. possible uses range from analyzing a permission situation that is confusing by an admin/geek to providing machine-readable output to a calling script for some automated process.
Example
pizza@pizzabox:~/proj/shac$ ./shac -v . VB verbose mode... OK / (o+x) (mnt /dev/hda3) OK /home (o+x) OK /home/pizza (u+x) OK /home/pizza/proj (u+x) (mnt /dev/hdb11) OK /home/pizza/proj/shac (u+r) OK user 'pizza' has perms 'r' on file /home/pizza/proj/shac
Why Would I Want It?
Because UNIX permissions are easy to screw up and hard to get right. Hopefully this gets you to the latter a little quicker and easier.
Getting shac
Here's how to fetch the latest sources.
  1. git clone git://github.com/pizza/shac.git ~/shac
  2. cd ~/shac/src
  3. make
  4. sudo make install
or visit shac's github homepage
Development
shac is written in C. It's just me working on it, any help would be appreciated, even if you just drop me a note letting me know shac compiled and ran on your platform (or didn't, and the error message). Patches of course are appreciated :)
Target Platforms
Any POSIX system: Linux, FreeBSD, OpenBSD, etc.
Inspiration
I got the idea for this program from michael zalewski's page of fallen ideas. the man is full of good ideas, even if he thinks they're stupid.
Status
Beta. It has all the features, even the cool ones, that I originally envisioned. But it needs testing, lots of testing. I need to build a whole test suite, but have not done so.
Resources