Méthode n ° 1 - stat
Vous pouvez utiliser la stat
commande pour obtenir les bits d'autorisation. stat
est 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 grep
pour 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 stat
sont différentes, vous pouvez encapsuler cette commande dans une lsb_release -a
commande et appeler la version appropriée en fonction du système d'exploitation. Pas idéal mais réalisable. Sachez que cela lsb_release
n'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 find
et le printf
commutateur.
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