: это сработало:
find /path/ -type f -exec sh -c "grep -l \"\$(basename {})\" {}" \;
Explanation:
-тип f
: найти только файлыsh -c
: выполнить оболочку для каждого файлаgrep -l
: показать только имена файлов\$(basename {})
: выполнить оболочку для каждого файлаgrep -l
: показать только имена файлов\$(basename {})
: grep для basenameВ файловой системе POSIX каждый файл имеет пользователя (владельца файла), группу и права доступа для пользователя, группы и всех остальных.
Для каждого пользователя доступ к данному файлу определяется следующим образом:
Порядок здесь значителен; таким образом, вы можете иметь принадлежащий вам файл с разрешениями 0077
(все для группы и других, ничего для владельца), и вы не будете иметь к нему доступа! Но поскольку вы владелец, вы можете изменить это с помощью chmod
. Это может быть полезно в некоторых случаях, когда вы хотите запретить доступ к определенной группе и разрешить доступ кому-либо еще (подумайте о группе students
в академическом контексте).
Строго говоря, разрешения не соответствуют конечному пользователю, а действительному пользователю процесса, который может отличаться (, например, для двоичных систем set-uid). Могут также существовать и другие факторы, влияющие на группы, , например, на монтировках NFS.
Разрешения могут быть установлены с помощью chmod
(подробнее см. Понимание разрешений UNIX и их атрибутов ), и одним из вариантов является использование упомянутого вами письма: u
для разрешений пользователей, g
для групповых разрешений и o
для других разрешений. Использование a
с chmod
применяет разрешения ко всем трем категориям.
В современных системах другие разрешения доступа могут применяться поверх или вместо этих разрешений; посмотрите ACL (setfacl
), SELinux и т.д.