Méthode n ° 1 - stat
Vous pouvez utiliser la statcommande pour obtenir les bits d'autorisation. statest disponible sur la plupart des Unix (OSX, BSD, pas AIX d'après ce que je peux trouver). Cela devrait fonctionner sur la plupart des Unix, sauf OSX et BSD d'après ce que je peux trouver.
$ stat -c "%a" <file>
Exemple
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Utilisez cette commande:
$ stat -c "%a" afile.txt
664
Et utilisez un simple greppour voir si le mode d'autorisation des groupes est 6 ou 7.
$ stat -c "%a" afile.txt | grep ".[67]."
Pour Mac OS X et BSD vous auriez besoin d'utiliser cette forme de stat, stat -f(ou peut - être stat -x), et d' analyser en conséquence. Étant donné que les options de statsont différentes, vous pouvez encapsuler cette commande dans une lsb_release -acommande et appeler la version appropriée en fonction du système d'exploitation. Pas idéal mais réalisable. Sachez que cela lsb_releasen'est disponible que pour les distributions Linux, donc une autre alternative devrait être conçue pour tester d'autres systèmes d'exploitation Unix.
Méthode n ° 2 - trouver
Je pense que cette commande pourrait vous servir mieux. J'utilise findet le printfcommutateur.
Exemple
$ find a -prune -printf '%m\n'
664
Méthode n ° 3 - Perl
Perl pourrait être un moyen plus portable de le faire en fonction des systèmes d'exploitation que vous essayez de couvrir.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
REMARQUE: ce qui précède utilise la stat()fonction de Perl pour interroger les bits du système de fichiers.
Vous pouvez rendre cela plus compact en renonçant à utiliser un tableau @pv, et en traitant stat()directement la sortie de :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664