Как узнать права доступа к файлу

Обновлено: 21.11.2024

Последнее обновление: 07.03.2019

Автор: Джеред Хишен

В этой статье объясняется, как использовать команду ls для проверки прав доступа к файлам Linux®. Возможность проверить права доступа к файлу полезна, особенно для устранения неполадок. Вы можете гарантировать, например, что пользователь может прочитать определенный файл или изучить структуру каталогов, чтобы убедиться, что пользователи могут следовать иерархии к нужным им файлам.

Для более подробного обсуждения прав доступа к файлам в Linux см. раздел Концепции разрешений для файлов в Linux.

команда ls

Используйте команду ls (первая буква — строчная буква L), чтобы узнать, какие файлы находятся в каталоге. При запуске сама по себе ls возвращает список текущего рабочего каталога. Вы также можете указать каталог для списка. В следующем примере показан список первых нескольких файлов в каталоге /etc в системе Gentoo.

Опция -h изменяет способ отображения размеров файлов. При использовании параметра -h размеры файлов отображаются в удобочитаемом формате килобайтов, мегабайтов и т. д., а не в необработанных байтах. Другие инструменты Linux, такие как df, также поддерживают этот флаг. Команда df -h показывает текущее использование диска в более удобном для чтения формате.

Чтобы отобразить скрытые файлы (файлы, имена которых начинаются с точки), используйте параметр -a. Например, если вы используете только ls для просмотра корневого домашнего каталога в чистой установке Linux, файлы не возвращаются:

Однако, если вы добавите параметр -a, команда ls вернет список файлов:

Файлы, начинающиеся с точки, часто являются системными файлами и файлами настроек приложений, и их обычно не нужно включать в списки каталогов. Но важно знать, что они есть и как их увидеть. Файл .bashrc особенно полезен, так как он содержит настройки пользовательской среды, которые вы можете изменить.

Если вы объедините опцию -a с опцией -l (см. следующий раздел) в -la , вы получите всю информацию о скрытых файлах:

Обратите внимание на одиночную и двойную точки в обоих списках каталогов:

Точка (.) относится к самому каталогу. Это удобно, если вы хотите, чтобы он запускал команду и ссылался на ваш текущий каталог (например, когда вы хотите скопировать туда файл).

Двойная точка (..) указывает на родительский каталог. Если вы наберете cd .., каталог изменится на тот, который находится выше того, в котором вы находитесь, в иерархии файловой системы. Например, если ваш текущий каталог — /root , ввод cd .. приведет вас к / , самой вершине иерархии.

Чтобы получить дополнительную информацию о файлах в каталоге, используйте параметр -l с ls, как показано в следующем примере.

Имена файлов находятся в правой части каждой строки, а сведения о файлах предшествуют именам. Необходимые данные для проверки прав доступа к файлам: (1) последовательность букв и тире в крайнем левом углу каждой строки и (2) два столбца, в которых есть корень (в предыдущем примере). В оставшейся части этой статьи объясняется, как интерпретировать и использовать эти данные.

Сведения о разрешении

В этом разделе объясняется набор букв и тире, определяющих права доступа к файлу.

Первый символ: тип файла

В предыдущих примерах первым символом в каждом списке был тире (-) или буква d .

Дефис (-) означает, что файл является обычным файлом.

Буква d указывает на то, что файл является каталогом, то есть файлом особого типа.

Особый тип файла, который вы можете увидеть, — это символическая ссылка, иногда называемая программной ссылкой. Оно начинается со строчной буквы L , как показано в следующем примере:

Символическая ссылка — это указатель на другое место в файловой системе.

Сокращения разрешений

Разрешения для файлов представлены следующими буквами.

  • r относится к разрешению на чтение.
  • w относится к разрешению на запись.
  • x относится к разрешению на выполнение.

Символы разрешений

Рассмотрите следующий пример:

Первые три буквы после типа файла в списке файлов ( rwx ) показывают разрешения для пользователя или владельца файла.

Следующая тройка символов (также rwx ) показывает разрешения для категории группы.

Последняя тройка символов ( r-x ) показывает разрешения для последней категории, «другие». В этом примере пользователи, которые не являются ни владельцами файла, ни членами группы, имеют разрешения на чтение и выполнение, но не на запись, на что указывает тире (-) в средней позиции.

Обратите внимание на определенный порядок разрешений в трио: чтение, запись, выполнение. Дефис вместо буквы разрешения означает, что у категории нет такого разрешения.

Первое число

Число, указанное после разрешений, указывает количество ссылок на файл или количество содержащихся записей каталога для каталога. Этот номер не имеет отношения к разрешениям.

Владелец и группа

После количества ссылок указаны два имени. В предыдущем примере имена root и mail .

Имя указывает владельца файла. Разрешения пользователя применяются к владельцу файла, поэтому в этом случае пользователь root имеет права на чтение, запись и выполнение для этого каталога.

Второе имя — это группа файла. Разрешения группы применяются к любому пользователю в той же группе, что и файл, поэтому в этом случае эти разрешения применяются ко всем в почтовой группе.

Остальное

Остальными сведениями о файле являются размер файла, дата и время создания или последнего изменения файла, а также имя файла.

Поделитесь этой информацией:

© 2020 Rackspace США, Inc.

Если не указано иное, содержимое этого сайта находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Поиск файлов из командной строки в Linux намного проще и быстрее. Мы уже обсуждали, как находить и сортировать файлы по дате и времени доступа и изменения. Сегодня мы увидим, как находить файлы на основе их разрешений в Linux и Unix-подобных операционных системах.

Для целей этого руководства я собираюсь создать три файла, а именно file1 , file2 и file3 с разрешениями 777 , 766 , 655 соответственно в папке с именем ostechnix .

Создавать файлы с определенными разрешениями

Теперь давайте найдем файлы на основе их разрешений.

Поиск файлов по их разрешениям

Типичный синтаксис для поиска файлов на основе их разрешений:

РЕЖИМ может иметь числовое или восьмеричное разрешение (например, 777 , 666 и т. д.) или символическое разрешение (например, u=x , a=r+x ).

Можно указать РЕЖИМ тремя различными способами, перечисленными ниже.

  1. Если мы укажем режим без каких-либо префиксов, он найдет файлы с точными разрешениями.
  2. Если мы используем префикс "-" с режимом, по крайней мере файлы должны иметь данное разрешение, а не точное разрешение.
  3. Если мы используем префикс "/", либо владелец, либо группа, либо кто-то еще должен иметь разрешение на доступ к файлу.

Позвольте мне объяснить на нескольких примерах, чтобы вы могли лучше понять.

Во-первых, мы увидим поиск файлов на основе числовых разрешений.

Поиск файлов по их числовым (восьмеричным) разрешениям

Теперь позвольте мне запустить следующую команду:

Эта команда найдет файлы с разрешением ровно 777 в текущем каталоге.

Поиск файлов по числовым разрешениям

Как видно из приведенного выше вывода, только файл 1 имеет точное разрешение 777.

Теперь давайте воспользуемся префиксом "-" и посмотрим, что получится.

Поиск файлов по числовым разрешениям с префиксом "-"

Как видите, приведенная выше команда отображает два файла. Мы установили разрешение 766 для файла2, но эта команда отображает два файла, почему? Потому что здесь мы использовали префикс «-». Это означает, что эта команда найдет все файлы, для которых владелец файла имеет права на чтение/запись/выполнение, члены файловой группы имеют права на чтение/запись, а все остальные также имеют права на чтение/запись. В нашем случае файл1 и файл2 соответствуют этому критерию. Другими словами, файлы не обязательно должны иметь точное разрешение 766. Он будет отображать все файлы, подпадающие под это разрешение 766.

Дальше мы будем использовать префикс "/" и посмотрим, что произойдет.

Поиск файлов по числовым разрешениям с префиксом "/"

Приведенная выше команда найдет файлы, доступные для записи кому-либо (либо их владельцу, либо их группе, либо кому-либо еще). Вот еще один пример.

Эта команда найдет файлы, которые доступны для записи либо их владельцу, либо их группе. Это означает, что для сопоставления файлы не обязательно должны быть доступны для записи как владельцу, так и группе; любой подойдет.

Но если вы запустите ту же команду с префиксом "-", вы увидите только те файлы, которые доступны для записи как владельцу, так и группе.

На следующем снимке экрана показана разница между этими двумя префиксами.

Поиск файлов по их числовым (восьмеричным) разрешениям

Как я уже сказал, мы также можем использовать символическую запись для представления прав доступа к файлам.

Поиск файлов на основе их разрешений с использованием символьной записи

В следующих примерах мы используем такие символьные обозначения, как u (для пользователя), g (группа), o (другие). Мы также можем использовать букву а для обозначения всех трех категорий. Разрешения можно указать с помощью букв r (чтение), w (запись), x (исполняемый файл).

Например, чтобы найти любой файл с групповым разрешением на запись, запустите:

Поиск файлов на основе их разрешений с использованием символьной записи

Как вы видите в приведенном выше примере, файл1 и файл2 имеют групповое разрешение на запись. Обратите внимание, что вы можете использовать любой оператор "+" для символьной записи. Например, следующие две команды сделают одно и то же.

Чтобы найти любой файл, доступный для записи владельцу файла, выполните:

Чтобы найти любой файл, доступный для записи всем (владельцу файла, группе и всем остальным), запустите:

Чтобы найти файлы, которые доступны для записи как их владельцу, так и их группе, используйте эту команду:

Приведенная выше команда эквивалентна команде "find -perm -220".

Чтобы найти файлы, доступные для записи их владельцу или группе, выполните:

Эти две команды выполняют ту же работу, что и команда find -perm /220.

Для получения дополнительной информации см. справочные страницы.

Кроме того, просмотрите альтернативные справочные страницы, чтобы узнать более простые примеры любой команды Linux.

Дэнни Мерфи

Пользователи с неограниченным доступом к файлам и папкам являются главной целью киберпреступников. Если такие учетные записи скомпрометированы, то злоумышленник фактически держит ключи от вашего королевства. Непрерывное отслеживание того, кто и к чему имеет доступ на файловом сервере, является важной частью обеспечения того, чтобы ваши разрешения не выходили из-под контроля. В этой статье мы рассмотрим ручные способы идентификации изменений, внесенных в файлы и папки. Мы также покажем вам, как Lepide File Server Auditor (часть Lepide Data Security Platform) справляется с этой задачей.

Шаги по отслеживанию разрешений, применяемых к файлам и папкам

Тщательное наблюдение за конфиденциальными данными помогает поддерживать безопасность вашей сетевой инфраструктуры. Для этого крайне важен анализ событий за событием.

Давайте рассмотрим шаги, которые необходимо предпринять, чтобы определить, кто имеет доступ к каким файлам или папкам на вашем файловом сервере:

  • Шаг 1. Найдите документ, для которого вы хотите просмотреть разрешения.
  • Шаг 2. Щелкните папку или файл правой кнопкой мыши и выберите "Свойства" в контекстном меню.
  • Шаг 3. Перейдите на вкладку "Безопасность" и нажмите "Дополнительно".
  • Шаг 4. На вкладке «Разрешения» вы можете увидеть разрешения, предоставленные пользователям в отношении определенного файла или папки.
    Рисунок 1. Права доступа пользователей к папке
  • Шаг 5. Перейдите на вкладку "Действующий доступ".
  • Шаг 6. Нажмите «Выбрать пользователя», чтобы добавить пользователя или группу, действующие разрешения которых вы хотите просмотреть. Список всех действующих разрешений пользователя будет отображаться на нижней панели окна «Дополнительные параметры безопасности».
    Рисунок 2. Действующие разрешения пользователей на папку
  • Шаг 7. Чтобы просмотреть права доступа, установленные для общего файла или папки, перейдите на вкладку «Общий доступ». Вы можете увидеть список записей разрешений.
    Рис. 3. Разрешения общего доступа применяются к общей папке

Как Lepide File Server Auditor анализирует текущие действующие разрешения

С помощью комплексного решения для аудита, такого как Lepide File Server Auditor (часть Lepide Data Security Platform), вы можете легко анализировать текущие действующие разрешения, которыми обладают пользователи в отношении файлов и папок, а также изменения, внесенные в разрешения.

На следующих снимках экрана показаны наши отчеты «Текущие разрешения», которые позволяют анализировать текущие разрешения, установленные для общих файлов и папок:

Рисунок 4. Отчет о текущих разрешениях

Наше решение позволяет просматривать разрешения, назначенные всем, фильтровать и сортировать отчеты, выявлять устаревшие объекты, а также указывает, нарушено ли наследование разрешений на этом уровне.

На следующем снимке экрана показаны разрешения пользователя на папку «test123»:

Рисунок 5. Отчет о разрешениях пользователей

Действующие разрешения для объекта рассчитываются после тщательного анализа и сравнения примененных к нему разрешений NTFS и общих ресурсов. Приведенный ниже снимок экрана позволяет проанализировать поток разрешений для объекта:

Рисунок 6: Графическое представление действующих разрешений

Все 13 разрешений по умолчанию представлены в наших отчетах разными цветами и значками.

На следующем снимке экрана показаны действующие разрешения, которыми обладают члены группы.

Рисунок 7. Действующие разрешения, которыми обладают участники группы

Помимо показанных здесь отчетов, Lepide File Server Auditor создает отчеты для унаследованных разрешений, прямых разрешений и косвенных разрешений. Вы также можете отслеживать все изменения прав доступа к файлам и папкам.

Вы можете проверить разрешения в своей системе Linux, используя команду find с параметром -perm. Плюс четыре дополнительных метода аудита разрешений.

Опубликовано: 4 декабря 2020 г. | Дэймон Гарн (Red Hat)

Скажем прямо: файловая система Linux может быть сложной. Добавьте смонтированные удаленные файловые системы, съемные носители и любые созданные вами каталоги для конкретного сервера, и вам или вашим пользователям может быть трудно вспомнить, где именно хранится данный файл. Вот где появляется команда find. Она позволяет вам искать файлы или каталоги на основе различных критериев. Я сделаю базовый обзор поиска ниже, но в этой статье основное внимание уделяется немного другому: поиску ресурсов по разрешениям.

Зачем мне искать по разрешениям?

  • Аудит безопасности
  • Устранение неполадок с жалобами пользователей на доступ
  • Устранение неполадок с доступом к приложениям

Быстрый пример поиска по имени

Есть и другие статьи о включении системного администратора, в которых подробно рассказывается о команде find. Однако я кратко изложу здесь команду.

Безопасность Linux

Однако в этой статье основное внимание уделяется использованию параметра -perm, который выполняет поиск на основе настроек разрешений.

Абсолютный режим против символьного режима

Напоминаем, что разрешения задаются с помощью команды chmod. Команда chmod распознает как абсолютный, так и символьный режим. См. мою недавнюю статью «Как управлять разрешениями Linux для пользователей, групп и других лиц» для обзора управления доступом к ресурсам, включая два режима. Команда find также распознает любой из режимов, поэтому вы можете использовать любой из них, наиболее подходящий для вас. Для меня это абсолютный режим. Чтобы эффективно использовать команду find -perms, вам нужно вспомнить кое-что об абсолютном и символьном режимах.

Абсолютный режим

Абсолютный режим использует восьмеричные значения для представления разрешений. Значения перечислены в том порядке, в котором разрешения должны быть назначены пользователю, группе и всем остальным.

Назначает пользователю 7 (rwx), группе 6 (rw) и другим пользователям 4 (r) для файла1 .

Символический режим

В символьном режиме символы используются для представления уровней доступа, а математические операторы используются для предоставления (+) или удаления (-) разрешений.

Предоставляет другим удостоверения для чтения и записи в файл1 .

Поиск прав доступа к ресурсам в абсолютном режиме

В наиболее фундаментальном поиске разрешений не используются дополнительные параметры. Заявление читается как «найти ресурс с этими разрешениями».

Команда: Найдите в каталоге /etc ресурсы с уровнем доступа 777 (rwx для всех идентификаторов).

Приведенный выше пример находит только ресурсы с точно указанным разрешением — не больше и не меньше. Что, если вам нужно немного больше гибкости? Есть два дополнительных параметра, которые могут быть очень полезными. Первый - это символ (тире), а второй - символ / (косая черта). Давайте посмотрим на оба.

Найти по -

Использование параметра - означает, что установлен как минимум этот уровень разрешений и любые более высокие разрешения.

В этом примере отображаются все ресурсы в текущем каталоге с разрешениями не менее 644.

Найти по /

Использование параметра / означает, что "любое из перечисленных разрешений установлено".

В этом примере отображаются ресурсы с разрешениями 644 или выше.

Поиск прав доступа к ресурсам в символьном режиме

В символьном режиме для определения разрешений используются символы ugo (пользователь, группа, другие), символы rwx (чтение, запись, выполнение) и математические операторы (например, + или -).

Найти по -

Опция - работает так же в символьном режиме, как и выше в абсолютном режиме.Он отображает ресурсы с «по крайней мере этим уровнем доступа».

Найти по /

Кнопка / также работает в символьном режиме. Он отображает ресурсы с «любыми перечисленными разрешениями».

Стандартные разрешения Linux очень распространены, и теперь вы знаете, как искать ресурсы с заданным уровнем доступа. Однако Linux также использует преимущества специальных разрешений. Команда find также может отображать эти разрешения.

Поиск ресурсов с настроенными специальными разрешениями

Специальные разрешения Linux устанавливают дополнительные элементы управления доступом к ресурсам. Существует три специальных разрешения: Установить идентификатор пользователя (SUID), Установить идентификатор группы (SGID) и Sticky Bit. Детали каждого из них выходят за рамки этой статьи, но позвольте мне кратко подытожить:

Специальное разрешение Описание
SUID Файл выполняется пользователем с идентификатором владельца, даже если этот пользователь не является владельцем
SGID Содержимое каталога автоматически наследует групповую ассоциацию родительской папки (отлично подходит для каталогов, совместно используемых проектными группами)
Sticky Bit Файл загружается в память автоматически и не может быть удален или изменен кем-либо, кроме владельца

Дополнительную информацию об особых разрешениях см. в этой статье.

Особые разрешения настраиваются с помощью четвертого бита (самого левого):

Совет: вывод команды ls -l будет отображать s в исполняемом поле для пользователя, если настроен SUID, s в исполняемом поле для группы, если настроен SGID, и T или t, если Установлен Sticky Bit (в зависимости от того, установлено ли также выполнение).

Следующее содержание охватывает поиск файлов с определенными настроенными специальными разрешениями.

Найти файлы с настроенным SUID

Чтобы найти файлы, для которых определен уровень доступа SUID, используйте параметр -perm, но включите четвертую цифру. SUID имеет восьмеричное значение 4.

Например, для поиска ресурсов с настроенным SUID:

Найти файлы с настроенным SGID

Тот же синтаксис можно использовать для отображения ресурсов с разрешением SGID, определенным с помощью восьмеричного значения SGID, равного 2.

Например, для поиска ресурсов с настроенным SGID:

Поиск файлов с настроенным Sticky Bit

Наконец, вы можете использовать восьмеричное значение 1 для отображения ресурсов с настроенным Sticky Bit.

Вот пример Sticky Bit:

Примечание. Параметры - и / работают со специальными разрешениями так же, как и со стандартными разрешениями.

Дополнительные примеры

Вот несколько дополнительных команд, которые могут быть полезны для отображения разрешений. Когда я писал статью, я продолжал думать: Подождите, а как насчет этого?, а затем добавлял бонусные примеры. Итак, вот несколько дополнительных команд для аудита разрешений.

Бонус 1: используйте -not для отрицания результатов

Вы можете использовать параметр -not с поиском, чтобы указать все, что не соответствует заданным критериям.

В первом примере показана обычная попытка поиска, а во втором – поиск с параметром -not .

В приведенном выше примере показаны ресурсы внутри /etc/network, для которых действительно настроены разрешения 777.

В этом примере отображаются ресурсы внутри /etc/network, для которых настроены любые разрешения, кроме 777.

Дополнительный бонус 2: установка разрешений с помощью find и chmod

Одним из преимуществ find является то, что он включает функцию выполнения. Вы можете комбинировать это с последующими командами, такими как xargs , rm или chmod .

В этом примере символы <> представляют результаты команды find, а символы \; символы представляют завершение команды chmod.

Предупреждение: Будьте внимательны, чтобы точно понять, каков будет эффект от вашего комбинированного выполнения "найти + другие команды". Опечатка может легко найти все файлы в /etc, а затем попытаться удалить их или настроить разрешения, которые заблокируют законным пользователям доступ к их домашним каталогам.

Дополнительный бонус 3: отображение разрешений с помощью ls и grep

Иногда вам не нужны расширенные функции команды find. Вместо этого вам просто нужно быстрое и простое отображение конкретных разрешений. В этом случае используйте команды ls и grep.

Эта команда отображает все содержимое каталога с указанными разрешениями.

Дополнительный бонус 4: отображение разрешений ACL

Команде find нелегко отобразить файлы с примененными разрешениями списка управления доступом (ACL). В этом случае используйте вместо этого команду getfacl.

Подведение итогов

Команда find — это удобная утилита для отображения каталогов или файлов, которые вам нужно найти. Однако find также может быть отличным инструментом безопасности, поскольку он показывает каталоги и файлы с указанными разрешениями.Как системный администратор вы можете использовать эту информацию, чтобы убедиться, что ресурсы сервера настроены в соответствии с политиками безопасности вашей компании. Не забывайте, что вы можете использовать перенаправитель >> для документирования этих разрешений. Такой документ можно использовать в качестве основы разрешений для будущих проверок.

Читайте также: