Найдите файлы на основе их разрешений в Linux
Искать файлы из командной строки в Linux намного проще и быстрее. Мы уже обсуждали, как находить и сортировать файлы по дате и времени доступа и изменения. Сегодня мы увидим, как находить файлы по их разрешениям в Linux и Unix-подобных операционных системах.
Для целей этого руководства я собираюсь создать три файла, а именно: file1
, file2
и . file3
с разрешениями 777
, 766
, 655
соответственно в папке с именем ostechnix
.
mkdir ostechnix && cd ostechnix/
install -b -m 777 /dev/null file1
install -b -m 766 /dev/null file2
install -b -m 655 /dev/null file3
Создание файлов с определенными разрешениями
Теперь давайте найдем файлы на основе их разрешений.
Найдите файлы на основе их разрешений
Типичный синтаксис для поиска файлов на основе их разрешений:
find -perm mode
MODE
может быть с числовым или восьмеричным разрешением (например, 777
, 666
). , ... и т. д.) или символическое разрешение (например, u=x
, a=r+x
).
Мы можем указать MODE
тремя разными способами, как указано ниже.
- Если мы укажем режим без каких-либо префиксов, он найдет файлы с точными разрешениями.
- Если мы используем префикс
"-"
с режимом, по крайней мере файлы должны иметь заданное разрешение, а не точное разрешение. - Если мы используем префикс
"/"
, разрешение на доступ к файлу должно быть у владельца, группы или другого лица.
Позвольте мне объяснить на нескольких примерах, чтобы вы могли лучше понять.
Сначала мы увидим поиск файлов на основе числовых разрешений.
Найдите файлы на основе их числовых (восьмеричных) разрешений.
Теперь позвольте мне запустить следующую команду:
find -perm 777
Эта команда найдет файлы с разрешением ровно 777 в текущем каталоге.
Поиск файлов на основе числовых разрешений
Как видно из приведенного выше вывода, file1 — единственный, у которого есть точное разрешение 777.
Теперь давайте воспользуемся префиксом "-"
и посмотрим, что произойдет.
find -perm -766
Найти файлы на основе числовых разрешений с префиксом «-».
Как видите, приведенная выше команда отображает два файла. Мы установили разрешение 766
для file2
, но эта команда отображает два файла, почему? Потому что здесь мы использовали префикс "-"
. Это означает, что эта команда найдет все файлы, у владельца файла есть разрешения на чтение/запись/выполнение, у членов группы файлов есть разрешения на чтение/запись, а все остальное также имеет разрешения на чтение/запись. В нашем случае этим критериям соответствуют file1
и file2
. Другими словами, файлы не обязательно должны иметь точное разрешение 766. Он будет отображать любые файлы, подпадающие под это разрешение 766.
Далее мы воспользуемся префиксом "/"
и посмотрим, что произойдет.
find -perm /222
Найти файлы на основе числовых разрешений с префиксом «/».
Приведенная выше команда найдет файлы, которые доступны для записи кому-либо (их владельцу, их группе или кому-либо еще). Вот еще один пример.
find -perm /220
Эта команда найдет файлы, которые доступны для записи их владельцу или их группе. Это означает, что файлы не обязательно должны быть доступны для записи как владельцу, так и группе, чтобы их можно было сопоставить; любой подойдет.
Но если вы запустите ту же команду с префиксом "-"
, вы увидите только те файлы, которые доступны для записи как владельцу, так и группе.
find -perm -220
Следующий снимок экрана покажет вам разницу между этими двумя префиксами.
Найдите файлы на основе их числовых (восьмеричных) разрешений.
Как я уже сказал, мы также можем использовать символическую запись для представления прав доступа к файлу.
Найдите файлы на основе их разрешений, используя символьную запись.
В следующих примерах мы используем символические обозначения, такие как u (для пользователя), g (группа), o (остальные). Мы также можем использовать букву a для обозначения всех трех категорий. Разрешения можно указать с помощью букв r (чтение), w (запись), x (исполняемый файл).
Например, чтобы найти любой файл с групповым разрешением запись, выполните:
find -perm -g=w
Найдите файлы на основе их разрешений, используя символьную запись.
Как вы видите в приведенном выше примере, file1
и file2
имеют групповое разрешение запись. Обратите внимание, что для символьной записи можно использовать операторы "="
" или ""+"
. Например, следующие две команды сделают одно и то же.
find -perm -g=w
find -perm -g+w
Чтобы найти любой файл, доступный для записи владельцу файла, запустите:
find -perm -u=w
Чтобы найти любой файл, доступный для записи всем (владельцу файла, группе и всем остальным), запустите:
find -perm -a=w
Чтобы найти файлы, которые доступны для записи как их владельцу, так и их группе, используйте следующую команду:
find -perm -g+w,u+w
Приведенная выше команда эквивалентна команде "find -perm -220"
.
Чтобы найти файлы, которые доступны для записи либо их владельцу, либо их группе, запустите:
find -perm /u+w,g+w
Или,
find -perm /u=w,g=w
Эти две команды выполняют ту же работу, что и команда "find -perm /220"
.
Более подробную информацию можно найти на страницах руководства.
man find
Кроме того, ознакомьтесь с альтернативными справочными страницами, чтобы узнать более упрощенные примеры любой команды Linux.
Связанное чтение:
- Как найти самые большие и самые маленькие каталоги и файлы в Linux
- Как найти самый старый файл в дереве каталогов в Linux
- Как найти файлы размером больше или меньше X в Linux