Одна из моих любимых утилит является nameiчастью util-linuxи, следовательно, обычно присутствует только в Linux:
$ namei /usr/share/foo/bar
f: /usr/share/foo/bar
d /
d usr
d share
foo - No such file or directory
Но его вывод не очень разбирается. Так что, если вы просто хотите указать, что чего-то не хватает, это nameiможет быть полезно.
Это полезно для устранения общих проблем с доступом к пути, поскольку вы можете указать, является ли компонент ссылкой или точкой монтирования, а также его разрешениями:
$ ln -sf /usr/foo/bar /tmp/
$ namei -lx /tmp/bar
f: /tmp/bar
Drwxr-xr-x root root /
Drwxrwxrwt root root tmp
lrwxrwxrwx muru muru bar -> /usr/foo/bar
Drwxr-xr-x root root /
drwxr-xr-x root root usr
foo - No such file or directory
Столица Dуказывает точку монтирования.
access(2)не очень детализирован, поэтому решение обычно включает в себя написание чего-то для итерации и проверки каждого элемента пути по очереди ...