Metodo n. 1 - stat
È possibile utilizzare il stat
comando per ottenere i bit delle autorizzazioni. stat
è disponibile sulla maggior parte degli Unix (OSX, BSD, non AIX da quello che posso trovare). Questo dovrebbe funzionare sulla maggior parte degli Unix, tranne OSX e BSD da quello che posso trovare.
$ stat -c "%a" <file>
Esempio
$ ls -l a
-rw-rw-r-- 1 saml saml 155 Oct 6 14:16 afile.txt
Usa questo comando:
$ stat -c "%a" afile.txt
664
E usa un semplice grep
per vedere se la modalità permessi dei gruppi è un 6 o 7.
$ stat -c "%a" afile.txt | grep ".[67]."
Per OSX e BSD avresti bisogno di utilizzare questa forma di stat
, stat -f
(o forse stat -x
), e analizzare di conseguenza. Poiché le opzioni stat
sono diverse, è possibile racchiudere questo comando in un lsb_release -a
comando e chiamare la versione appropriata in base al sistema operativo. Non ideale ma praticabile. Tieni presente che lsb_release
è disponibile solo per le distribuzioni Linux, quindi un'altra alternativa dovrebbe essere ideata per testare altri sistemi operativi Unix.
Metodo n. 2: trova
Penso che questo comando potrebbe servirti meglio però. Uso find
e l' printf
interruttore.
Esempio
$ find a -prune -printf '%m\n'
664
Metodo n. 3 - Perl
Perl potrebbe essere un modo più portatile per farlo a seconda dei sistemi operativi che stai cercando di coprire.
$ perl -le '@pv=stat("afile.txt"); printf "%04o", $pv[2] & 07777;'
0664
NOTA: quanto sopra fa uso della stat()
funzione di Perl per interrogare i bit del filesystem.
Puoi renderlo più compatto rinunciando a un array @pv
e gestendo stat()
direttamente l'output di :
$ perl -le 'printf "%04o", (stat("a"))[2] & 07777;'
0664