Изменить атрибуты файла Linux

Обновлено: 21.11.2024

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

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

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

Просмотр прав доступа к файлам

Чтобы просмотреть разрешения для всех файлов в каталоге, используйте команду ls с параметрами -la. Добавьте другие параметры по желанию; справку см. в разделе Список файлов в каталоге в Unix.

Например, если вы введете:

Вы должны увидеть вывод, аналогичный следующему:

В приведенном выше примере вывода первый символ в каждой строке указывает, является ли указанный объект файлом или каталогом. Каталоги обозначаются ( d ); отсутствие буквы d в начале первой строки указывает на то, что myfile.txt является обычным файлом.

Буквы rwx обозначают разные уровни разрешений:

Обратите внимание на несколько экземпляров r , w и x . Они сгруппированы в три набора, которые представляют разные уровни владения:

    Разрешения владельца или пользователя: после слота каталога ( d ) первый набор из трех символов указывает настройки разрешений для владельца (также известного как пользователь).

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

В примере drwxr-xr-x права владельца — rwx , что указывает на то, что владелец может просматривать, изменять и входить в каталог.

В примере -rw-r--r-- члены группы могут только читать файл.

В примере drwxr-xr-x члены группы могут просматривать каталог и входить в него.

Изменить права доступа к файлу

Чтобы изменить права доступа к файлам и каталогам, используйте команду chmod (изменить режим). Владелец файла может изменить разрешения для пользователя ( u ), группы ( g ) или других ( o ), добавив ( + ) или вычитая ( - ) разрешения на чтение, запись и выполнение.

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

Символический метод

Первый и, возможно, самый простой способ – это относительный (или символический) метод, который позволяет указывать разрешения с помощью однобуквенных сокращений. Команда chmod, использующая этот метод, состоит как минимум из трех частей из следующих списков:

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

A означает "все", + – "добавить", а r – "прочитать".

Это предполагает, что у всех уже есть доступ к каталогу, в котором находится myfile, и к его родительским каталогам; то есть вы должны установить права доступа к каталогу отдельно.

Если вы опустите класс доступа, предполагается, что это все, поэтому вы также можете ввести предыдущий пример как:

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

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

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

Команда chmod также работает с каталогами. Например, чтобы удалить разрешение на запись для других пользователей в подкаталоге с именем mydir, введите:

Чтобы сделать то же самое для текущего каталога, введите:

Чтобы рекурсивно изменить разрешения во всех подкаталогах ниже указанного каталога, добавьте параметр -R; например, чтобы предоставить другим пользователям права на выполнение для каталога ( mydir ) и всех содержащихся в нем подкаталогов, введите:

Будьте осторожны при настройке разрешений для каталогов, особенно для вашего домашнего каталога; вы не хотите заблокировать себя, удалив собственный доступ. Кроме того, у вас должно быть разрешение на выполнение для каталога, чтобы переключиться на него ( cd ).

Абсолютная форма

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

Три номера указаны в порядке: пользователь (или владелец), группа и прочее. Каждое число представляет собой сумму значений, определяющих доступ для чтения, записи и выполнения:

Добавьте номера разрешений, которые вы хотите предоставить; например:

  • Для файла myfile , чтобы предоставить разрешения на чтение, запись и выполнение себе (4+2+1=7), разрешения на чтение и выполнение пользователям в вашей группе (4+0+1=5) и только выполнение разрешение другим (0+0+1=1), вы должны использовать:
  • Чтобы предоставить права на чтение, запись и выполнение в текущем каталоге только себе, вы должны использовать:

Трехзначную последовательность можно представить как сумму атрибутов, выбранных из следующей таблицы:

Класс доступа Оператор Тип доступа
u (пользователь) + (добавить доступ) r (чтение)
g (группа) - (удалить доступ) w (записать)
o (другое)< /td> = (установить точный доступ) x (выполнить)
a (все: u, g и o)
Прочитано владельцем 400
Запись владельцем 200
Выполнение владельцем 100
Чтение по группе 040
Запись по группе 020
Выполнить группой 010
Читать другими 004
Написание другими 002
Выполнение другими 001

Суммируйте все доступы, которые вы хотите разрешить. Например, чтобы предоставить права на запись и выполнение владельцу myfile (200+100=300) и предоставить права на чтение всем (400+040+004=444), вы должны ввести:

777 каждый может делать что угодно (читать, писать или выполнять)
755 вы можете делать что угодно; другие могут только читать и выполнять
711 вы можете делать что угодно; другие могут только выполнять
644 вы можете читать и писать; другие могут только читать

Распространенные проблемы при обмене данными с другими пользователями

Убедитесь, что вы понимаете свои обязанности при обработке, хранении и передаче данных, содержащих защищенную медицинскую информацию (PHI). Дополнительную информацию см. в разделе Ваши юридические обязанности по защите данных, содержащих защищенную медицинскую информацию (PHI), при использовании систем и услуг UITS Research Technologies.

Чтобы поделиться файлом или каталогом, которым вы владеете, с кем-либо, вы можете предоставить этому пользователю права на чтение и выполнение. Однако вы также должны установить те же привилегии для любых родительских каталогов над элементом, которым вы делитесь; если вы этого не сделаете, пользователь не сможет просмотреть и перейти ( cd ) во все родительские каталоги над вашим файлом или каталогом.

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

  • Разрешение на чтение ( r ) позволяет пользователям просматривать ( ls ) каталоги.
  • Разрешение на выполнение ( x ) позволяет пользователям перемещаться ( cd ) в каталоги.
  • Разрешение на запись ( w ) позволяет пользователям добавлять и удалять файлы.

Например, вы хотите предоставить кому-либо доступ к /N/u/username/Carbonate/scripts . Представьте путь как физическое пространство:

  • /N – закрытый поселок, в котором вы живете.
  • /u — единица измерения.
  • /username – это ваша квартира.
  • /Карбонат — это комната в вашей квартире.
  • /scripts — это чулан в вашей комнате.

Если кто-то захочет запустить ваши скрипты, вам нужно будет предоставить этому человеку доступ ко всем частям /N/u/username/Carbonate/scripts . Вы можете попробовать сделать это следующим образом:

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

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

Это позволит другим перемещаться ( cd ) в каталог сценариев. Поскольку у родительских каталогов нет разрешений r, пользователи смогут просматривать ( ls ) только каталог scripts, сохраняя приватность остальной части вашей файловой системы.

Получить помощь

Чтобы узнать больше о chmod , обратитесь к странице руководства.В командной строке Unix введите:

В Университете Индианы для личной или ведомственной поддержки систем Linux или Unix см. раздел Получение справки по Linux или Unix в IU.

chattr (Change Attribute) — это утилита командной строки Linux, которая используется для установки/отмены определенных атрибутов файла в системе Linux для защиты от случайного удаления или изменения важных файлов и папок, даже если вы вошли в систему как пользователь root. пользователь.

В родных файловых системах Linux, т. е. ext2, ext3, ext4, btrfs и т. д., поддерживаются все флаги, хотя не все флаги поддерживаются всеми неродными файловыми системами. Нельзя удалить или изменить файл/папку после того, как атрибуты установлены с помощью команды chattr, даже если у вас есть полные права доступа к ней.

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

Синтаксис chattr
Атрибуты и флаги

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

  1. Если доступ к файлу осуществляется с установленным атрибутом «A», его запись времени не обновляется.
  2. Если файл изменен с установленным атрибутом «S», изменения синхронно обновляются на диске.
  3. Файл имеет атрибут «a», его можно открыть только в режиме добавления для записи.
  4. Файл имеет атрибут «i», не может быть изменен (неизменяемый). Означает, что нельзя переименовывать, создавать символические ссылки, выполнять, запрещать запись, только суперпользователь может отменить установку атрибута.
  5. Файл с атрибутом «j» установлен, вся его информация обновляется в журнале ext3 перед обновлением в самом файле.
  6. Файл устанавливается с атрибутом t, без слияния хвостов.
  7. Файл с атрибутом «d» больше не будет кандидатом на резервное копирование при запуске процесса создания дампа.
  8. При удалении файла с атрибутом «u» его данные сохраняются. Это позволяет пользователю запросить его восстановление.
Оператор
  1. + : добавляет атрибут к существующему атрибуту файлов.
  2. – : удаляет атрибут существующего атрибута файлов.
  3. = : сохранить существующие атрибуты файлов.

Здесь мы собираемся продемонстрировать некоторые примеры команд chattr для установки/отмены атрибутов файла и папки.

1. Как добавить атрибуты к файлам для защиты от удаления

Для демонстрационных целей мы использовали папку demo и файл Important_file.conf соответственно. Перед настройкой атрибутов убедитесь, что существующие файлы имеют какие-либо атрибуты, установленные с помощью команды «ls -l». Вы видели результаты? В настоящее время атрибуты не установлены.

Чтобы установить атрибут, мы используем знак +, а для отмены — знак – с командой chattr. Итак, давайте установим неизменяемый бит для файлов с флагами +i, чтобы никто не мог удалить файл, даже если у пользователя root нет прав на его удаление.

Примечание. Неизменяемый бит +i может быть установлен только пользователем с правами суперпользователя (т. е. root) или пользователем с привилегиями sudo.

После установки неизменяемого бита давайте проверим атрибут с помощью команды «lsattr».

Теперь попытался принудительно удалить, переименовать или изменить разрешения, но это не разрешено, пишет «Операция не разрешена».

2. Как отключить атрибут в файлах

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

После сброса разрешений проверьте неизменность файлов с помощью команды lsattr.

В приведенных выше результатах вы видите, что флаг «-i» удален, что означает, что вы можете безопасно удалить все файлы и папки, находящиеся в папке tecmint.

3. Как защитить файлы /etc/passwd и /etc/shadow

Установка неизменяемого атрибута для файлов /etc/passwd или /etc/shadow защищает их от случайного удаления или изменения, а также отключает создание учетной записи пользователя.

Теперь попробуйте создать нового системного пользователя, вы получите сообщение об ошибке «невозможно открыть /etc/passwd».

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

4. Добавить данные без изменения существующих данных в файле

Предположим, вы хотите только разрешить всем добавлять данные в файл без изменения или изменения уже введенных данных, вы можете использовать атрибут «a» следующим образом.

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

Теперь попробуйте заменить уже существующий контент в файле example.txt, вы получите сообщение об ошибке «Операция не разрешена».

Теперь попробуйте добавить новый контент в существующий файл example.txt и проверить его.

5. Как защитить каталоги

Чтобы защитить весь каталог и его файлы, мы используем переключатель ‘-R’ (рекурсивно) с флагом ‘+i‘ вместе с полным путем к папке.

После установки рекурсивного атрибута попробуйте удалить папку и ее файлы.

Чтобы отменить разрешение, мы используем тот же переключатель ‘-R’ (рекурсивно) с флагом ‘-i’ вместе с полным путем к папке.

Вот оно! Чтобы узнать больше об атрибутах, флагах и параметрах команды chattr, используйте справочные страницы.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

В Linux атрибуты файла — это свойства метаданных, описывающие поведение файла. Например, атрибут может указывать, сжат ли файл, или указать, можно ли удалить файл.

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

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

Команда chattr имеет следующую общую форму:

Значение части [OPERATOR] может быть одним из следующих символов:

  • + — оператор "плюс" указывает чату добавить указанные атрибуты к существующим.
  • - - Оператор "минус" указывает чату удалить указанные атрибуты из существующих.
  • = – оператор равенства сообщает chattr, что указанные атрибуты должны быть единственными атрибутами.

За оператором следует один или несколько флагов [ATTRIBUTES], которые вы хотите добавить или удалить из атрибутов файла. Ниже приведен список нескольких общих атрибутов и связанных с ними флагов:

  • a — если этот атрибут установлен, файл можно открыть только в режиме добавления для записи.
  • A. Когда файл с этим установленным атрибутом открыт, его запись времени не изменяется. atime (время доступа) – время последнего доступа/открытия файла какой-либо командой или приложением.
  • e — этот атрибут указывает, что файл использует экстенты для сопоставления блоков на диске. Атрибут e нельзя изменить с помощью chattr .
  • i – этот атрибут указывает на то, что файл является неизменяемым, что означает, что файл нельзя удалить или переименовать.

Чтобы получить полный список всех атрибутов и флагов файла, введите man chattr в своем терминале.

По умолчанию атрибуты файла не сохраняются при копировании файла с помощью таких команд, как cp или rsync .

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

Вы можете просмотреть атрибуты файла с помощью команды lsattr:

Выходные данные ниже показывают, что установлен только флаг e:

Чтобы сделать файл неизменяемым, добавьте флаг i с оператором + к существующим атрибутам:

Мы используем sudo, потому что только root может изменить неизменяемый флаг.

Подтвердите добавление атрибута:

Чтобы отменить изменения и снять неизменяемый флаг, используйте оператор -:

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

Последний оператор, который вы можете использовать, — это оператор =. Например, чтобы установить атрибут e в качестве единственного атрибута, вы должны запустить:

Обратите внимание, что оператор и флаг заключены в кавычки, чтобы символ + не интерпретировался оболочкой.

chattr — это инструмент командной строки для изменения атрибутов файла в файловой системе Linux.

Linux — это клон UNIX, многопользовательской операционной системы, доступ к которой может осуществляться одновременно многими пользователями. Linux также можно использовать на мейнфреймах и серверах без каких-либо модификаций. Но это вызывает проблемы с безопасностью, поскольку нежелательный или злонамеренный пользователь может повредить, изменить или удалить важные данные. Для эффективной безопасности Linux разделяет авторизацию на 2 уровня.

В этом руководстве по файловым командам Linux вы узнаете-

Концепция прав доступа и владения файлами в Linux имеет решающее значение в Linux. Здесь мы объясним разрешения и права собственности в Linux и обсудим их оба. Начнем с права собственности.




Нажмите здесь, если видео недоступно

Владение файлами Linux

Каждому файлу и каталогу в вашей системе Unix/Linux назначается 3 типа владельцев, указанных ниже.

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

Группа

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

Другое

Любой другой пользователь, имеющий доступ к файлу. Этот человек не создал файл и не принадлежит к группе пользователей, которая может владеть файлом. Практически, это означает всех остальных. Следовательно, когда вы устанавливаете разрешение для других, это также называется установкой разрешений для всего мира.

Теперь возникает большой вопрос, как Linux различает эти три типа пользователей, чтобы пользователь «А» не мог повлиять на файл, содержащий важную информацию/данные другого пользователя «Б». Это похоже на то, что вы не хотите, чтобы ваш коллега, работающий на вашем компьютере с Linux, просматривал ваши изображения. Именно здесь устанавливаются разрешения, и они определяют поведение пользователя.

Давайте разберемся с системой разрешений в Linux.

Разрешения для файлов Linux

Каждый файл и каталог в вашей системе UNIX/Linux имеет следующие 3 разрешения, определенные для всех 3 владельцев, описанных выше.

  • Чтение. Это разрешение дает вам право открывать и читать файл. Разрешение на чтение каталога дает вам возможность просматривать его содержимое.
  • Запись. Разрешение на запись дает вам право изменять содержимое файла. Разрешение на запись в каталог дает вам право добавлять, удалять и переименовывать файлы, хранящиеся в каталоге. Рассмотрим сценарий, в котором вам нужно разрешение на запись в файл, но у вас нет разрешения на запись в каталоге, в котором хранится файл. Вы сможете изменить содержимое файла. Но вы не сможете переименовать, переместить или удалить файл из каталога.
  • Выполнить. В Windows исполняемая программа обычно имеет расширение «.exe», и ее можно легко запустить. В Unix/Linux вы не можете запустить программу, если не установлено разрешение на выполнение. Если разрешение на выполнение не установлено, вы все равно сможете просматривать/изменять программный код (при условии, что установлены разрешения на чтение и запись), но не запускать его.

Давайте рассмотрим права доступа к файлам в Linux на примерах:

ls – l на терминале дает

Здесь мы выделили ‘-rw-rw-r–’, и этот странно выглядящий код говорит нам о разрешениях Unix, предоставленных владельцу, группе пользователей и всему миру.

Здесь первый «–» означает, что мы выбрали файл.p>

В противном случае, если бы это был каталог, был бы показан d.

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

r = разрешение на чтение
w = разрешение на запись
x = разрешение на выполнение
– = нет разрешения

Давайте посмотрим на это с другой стороны.

Первая часть кода — «rw-». Это говорит о том, что владелец «Дома» может:

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

По умолчанию многие дистрибутивы Linux, такие как Fedora, CentOS, Ubuntu и т. д., добавляют пользователей в группу с тем же именем, что и у пользователя. Таким образом, пользователь «том» добавляется в группу с именем «том».

Вторая часть — «rw-». Это для группы пользователей «Дом» и участников группы может:

  • Читать файл
  • Напишите или отредактируйте файл

Третья часть предназначена для всего мира, то есть для любого пользователя. Там написано «р-». Это означает, что пользователь может только:

Изменение прав доступа к файлам/каталогам в Linux с помощью команды «chmod»

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

Мы можем использовать команду «chmod», что означает «изменить режим». Используя команду, мы можем установить разрешения (чтение, запись, выполнение) для файла/каталога для владельца, группы и всего мира.

Синтаксис:

Есть 2 способа использования команды –

Абсолютный (числовой) режим в Linux

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

В таблице ниже приведены числа для всех типов разрешений.

Давайте посмотрим на команду прав доступа chmod в действии.

В указанном выше окне терминала мы изменили права доступа к файлу «sample» на «764».

Абсолютный код «764» говорит следующее:

  • Владелец может читать, писать и выполнять
  • Группа пользователей может читать и писать
  • Мир может только читать

Это отображается как ‘-rwxrw-r–

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

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

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

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

Число Тип разрешения Символ

0

Нет разрешения


1

Выполнить

–x

2

Напишите

-w-

3

Выполнить + Запись

-wx

4

Чтение

r–

5

Чтение + выполнение

rx

6

Чтение+Запись

rw -

7

Чтение + Запись + Выполнение

rwx