Test « arborescence entièrement accessible »

Le
Ph. Ivaldi
Bonjour,

je cherche à vérifier que l'arborescence courante est entièrement
accessible (en lecture) à l'utilisateur qui lance un script.
Le but est d'arrêter dès qu'un fichier/répertoire n'est pas accessible.
Pour le moment je procède ainsi:
8<8<8<8<8<8<8<8<8<
find -type f >/dev/null || {
echo "Vous n'avez pas les droits suffisants etc."
exit 1
}
8<8<8<8<8<8<8<8<8<

mais ce n'est pas optimum car find parcourt toute l'arborescence alors
qu'il suffit de s'arrêter au premier « Permission denied ».

Comment optimiser le code ? Merci !
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stephane CHAZELAS
Le #19655491
2009-06-28, 16:39(+02), Ph Ivaldi:
je cherche à vérifier que l'arborescence courante est entièrement
accessible (en lecture) à l'utilisateur qui lance un script.
Le but est d'arrêter dès qu'un fichier/répertoire n'est pas accessible.
Pour le moment je procède ainsi:
8<------8<------8<------8<------8<------8<------8<------8<------8<------
find -type f >/dev/null || {
echo "Vous n'avez pas les droits suffisants etc...."
exit 1
}
8<------8<------8<------8<------8<------8<------8<------8<------8<------

mais ce n'est pas optimum car find parcourt toute l'arborescence alors
qu'il suffit de s'arrêter au premier « Permission denied ».

Comment optimiser le code ? Merci !



Avec GNU find:

firstwrong=$(find . -type d ( -readable -executable -o -print -quit ))

if [ -n "$firstwrong" ]; then
printf 'there are non-readable or non-executable directories such as %sn' "$firstwrong"
fi

Note que c'est censé faire la meme chose que ton test d'erreur
de find -type f. Mais find retournant une erreur ne veut pas
dire qu'on ne peut pas acceder certains fichiers.

Par exemple, on peut acceder aux fichiers dans un repertoire
executable et non-lisible, on ne peut pas lire le contenu de ce
repertoire, c'est tout.

--
Stéphane
Ph. Ivaldi
Le #19655631
Le 28 juin 2009, Stephane CHAZELAS écrivit :

Avec GNU find:
[code]
on peut acceder aux fichiers dans un repertoire
executable et non-lisible, on ne peut pas lire le contenu de ce
repertoire, c'est tout.



Merci pour le code (-readable m'avait échappé) et pour cette précision.
--
Philippe Ivaldi.
http://piprim.tuxfamily.org/
Publicité
Poster une réponse
Anonyme