Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Test « arborescence entièrement accessible »

2 réponses
Avatar
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/

2 réponses

Avatar
Stephane CHAZELAS
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
Avatar
Ph. Ivaldi
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/