Você está certo sobre as permissões: cada componente do diretório deve ser mundialmente executável, e o item em si deve ser legível por todos (e provavelmente também por ser executável em todo o mundo, se for um diretório).
Um enrugamento adicional é que, se o caminho envolver links simbólicos, você precisará criar todos os diretórios intermediários necessários para resolver também o mundo simbólico do link simbólico.
Se você tem um caminho livre de links simbólicos, um simples loop pode fazer o trabalho:
make_directory_world_accessible () {
dir=$1
case $dir in /*) :;; *) dir=$PWD/$dir;; esac
while [ -n "$dir" ]; do
chmod a+x "$dir"
slashes=${dir##*[!/]}; dir=${dir%$slashes}; dir=${dir%/*}
done
}
Com links simbólicos, você precisa procurar todos os links simbólicos manualmente e recorrer a cada componente do diretório. O kernel faz isso internamente, mas não expõe o processo. Por exemplo, dado um link simbólico /foo/bar -> one/two/three
, não apenas você precisa tornar /foo/one
e /foo/two
public, mas também precisa verificar se one
e two
são links simbólicos e recorrer adequadamente.