Method #1 - stat
You could use the
stat command to get the permissions bits.
stat is available on most Unixes (OSX, BSD, not AIX from what I can find). This should work on most Unixes, except OSX & BSD from what I can find.
$ stat -c "%a" <file>
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Use this command:
$ stat -c "%a" afile.txt
And use a simple
grep to see if the groups permissions mode is a 6 or 7.
$ stat -c "%a" afile.txt | grep ".."
For OSX and BSD you'd need to use this form of
stat -f (or perhaps
stat -x), and parse accordingly. Since the options to
stat are different you could wrap this command in an
lsb_release -a command and call the appropriate version based on the OS. Not ideal but workable. Realize that
lsb_release is only available for Linux distros so another alternative would need to be devised for testing other Unix OSes.
Method #2 - find
I think this command might serve you better though. I makes use of
find and the
$ find a -prune -printf '%m\n'
Method #3 - Perl
Perl might be a more portable way to do this depending on the OSes you're trying to cover.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv & 07777;'
NOTE: The above makes use of Perl's
stat() function to query the filesystem bits.
You can make this more compact by forgoing using an array,
@pv, and dealing with the output of
$ perl -le 'printf "%04o", (stat("a")) & 07777;'