Eu não vou te dar o código exato, mas posso dar-lhe os passos para conseguir isso:
-
Encontre o proprietário do diretório. Se isso corresponder ao
user
para o qual você está pesquisando, verifique as permissões do proprietário nesse diretório. Se forr+x(5)
our+w+x(7)
, o usuário poderá pesquisar dentro desse diretório, caso contrário, não. -
Se o proprietário do diretório não corresponder ao usuário, verifique o grupo do diretório e descubra se o
user
inserido pertence a esse grupo ou não. Se o usuário pertencer. Verifique as permissões do grupo nesse diretório. Se forr+x(5)
our+w+x(7)
, o usuário poderá pesquisar dentro desse diretório, caso contrário, não. -
Se o
user
inserido não pertencer ao grupo do diretório, verifique as outras permissões nesse diretório. Se forr+x(5)
our+w+x(7)
, o usuário poderá pesquisar dentro desse diretório, caso contrário, não.
Acho que o algoritmo acima executará a tarefa desejada.
Editar:
Método 1:
Você pode usar o comando find para isso:
$ find / -maxdepth 1 -type d -perm -u=rx
Isto irá encontrar todos os diretórios dentro / até um nível com permissão do usuário como pelo menos (leia + executar).
Método 2:
$ stat <filename/directoryname> | grep Access | head -1 | awk 'BEGIN{FS="[/)]"} {print $2}'
Isso lhe dará as permissões na notação rwx (por exemplo, drwxr-xr-x)
$ stat <filename/directoryname> | grep Access | head -1 | awk 'BEGIN{FS="[(/]"} {print $2}'
Isso lhe dará as permissões na notação 755 (por exemplo, 0755)