Атрибут только чтение linux

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

Understanding Linux File Permissions

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

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

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

  • Владелец файла.
  • Члены группы.
  • Другие (все остальные).

Собственности файла можно изменить с помощью chown и chgrp команды.

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

  • Разрешение на чтение.
  • Разрешение на запись.
  • Разрешение на выполнение.

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

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

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

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

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

Каждый из трех триплетов разрешений может состоять из следующих символов и иметь разные эффекты, в зависимости от того, установлены ли они для файла или для каталога:

Влияние разрешений на файлы

Разрешение Метка Значение в файле
Чтение
Read
Файл не читается. Вы не можете просматривать содержимое файла.
r Файл доступен для чтения.
Запись
Write
Файл не может быть изменен или изменен.
w Файл можно изменить или модифицировать.
Выполнение
Execute
Файл не может быть выполнен.
x Файл можно запустить.
s Если он находится в user триплете, он устанавливает setuid бит. Если он находится в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен.
Когда для исполняемого файла установлены флаги setuid или setgid , файл выполняется с правами владельца и / или группы.
S То же s , но x флаг не установлен. Этот флаг редко используется для файлов.
t Если он находится в others триплете, он устанавливает sticky бит.
Это также означает, что x флаг установлен. Этот флаг бесполезен для файлов.
T То же, t но x флаг не установлен. Этот флаг бесполезен для файлов.

Влияние разрешений на каталоги (папки)

Каталоги — это особые типы файлов, которые могут содержать другие файлы и каталоги.

Разрешение Метка Значение в каталоге
Чтение
Read
Содержимое каталога не может быть отображено.
r Можно показать содержимое каталога.
(например, вы можете перечислить файлы внутри каталога с помощью ls .)
Запись
Write
Содержимое каталога не может быть изменено.
w Содержимое каталога может быть изменено.
(например, вы можете создавать новые файлы , удалять файлы и т. д.)
Выполнение
Execute
Каталог не может быть изменен на.
x По каталогу можно перемещаться с помощью cd .
s Если он находится в user триплете, он устанавливает setuid бит. Если он находится в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен. Когда setgid для каталога установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл.
setuid не влияет на каталоги.
S То же s , но x флаг не установлен. Этот флаг бесполезен для каталогов.
t Если он находится в others триплете, он устанавливает sticky бит.
Это также означает, что x флаг установлен. Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь могут удалять или переименовывать файлы в каталоге.
T То же t , но x флаг не установлен. Этот флаг бесполезен для каталогов.

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

Права доступа к файлу можно изменить с помощью chmod команды. Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.

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

Символьный (текстовый) метод

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

Первый набор flags ( [ugoa…] ), флаги пользователей, определяет классы пользователей, для которых изменяются права доступа к файлу.

  • u — Владелец файла.
  • g — Пользователи, входящие в группу.
  • o — Все остальные пользователи.
  • a — Все пользователи, идентичные ugo .

Когда флаг пользователя опущен, по умолчанию используется a .

Второй набор flags ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:

  • — — Удаляет указанные разрешения.
  • + — Добавляет указанные разрешения.
  • = — Изменяет текущие разрешения на указанные разрешения. Если после = символа не указаны разрешения, все разрешения указанного класса пользователей удаляются.

Разрешения ( perms. ) явно устанавливается с помощью либо ноль , либо один или несколько из следующих букв: r , w , x , X , s , и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.

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

Вот несколько примеров того, как использовать chmod команду в символьном режиме:

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

Удалите разрешение на запись для всех пользователей:

Отвратительно удалите разрешение на выполнение для других пользователей:

Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:

То же самое можно сделать с помощью следующей формы:

Предоставьте права на чтение, запись и выполнение владельцу файла, права на чтение для группы файла и запретите права всем другим пользователям:

Числовой метод

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

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

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

Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:

  • r (читать) = 4
  • w (написать) = 2
  • x (выполнить) = 1
  • нет разрешений = 0

Количество разрешений определенного класса пользователей представлено суммой значений разрешений для этой группы.

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

  • Владелец: rwx = 4 + 2 + 1 = 7
  • Группа: rx = 4 + 0 + 1 = 5
  • Другое: rx = 4 + 0 + 0 = 4

Используя описанный выше метод, мы подходим к числу 754 , которое представляет желаемые разрешения.

Для того, чтобы настроить setuid , setgid и sticky bit флаги, используйте номер четыре цифры.

Когда используется четырехзначный номер, первая цифра имеет следующее значение:

  • setuid = 4
  • setgid = 2
  • липкий = 1
  • без изменений = 0

Следующие три цифры имеют то же значение, что и при использовании трехзначного номера.

Если первая цифра равна 0, ее можно не указывать, а режим можно представить тремя цифрами. Числовой режим 0755 такой же, как 755 .

Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знания, как рассчитать числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.

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

Вот несколько примеров того, как использовать chmod команду в числовом режиме:

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

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

Предоставьте разрешения на чтение, запись и выполнение, а также закрепите бит для данного каталога:

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

Заключение

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

Источник

Команда Chattr в Linux (атрибуты файлов)

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

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

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

chattr Синтаксис

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

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

  • + — Оператор «плюс» сообщает chattr о необходимости добавления указанных атрибутов к существующим.
  • — — Оператор минус указывает chattr удалить указанные атрибуты из существующих.
  • = — Оператор равенства сообщает chattr о необходимости установить указанные атрибуты как единственные.

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

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

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

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

chattr Пример

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

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

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

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

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

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

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

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

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

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

Выводы

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Урок 17. Права доступа Linux к файлам и папкам

В 3-м уроке была рассмотрена команда ls -l , а также краткое описание к выводу команды. В выводе команды также присутствует информация о правах доступа к данному файлу:

Права доступа разделены на 3 группы:

  • владелец файла
  • группа владельцев файла
  • другие пользователи

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

  • r (read) — чтение файла разрешено, то есть можно просматривать его содержимое, открывать в текстовом редакторе.
  • w (write) — запись файла разрешена, то есть можно его редактировать, переименовывать, удалять.
  • x (execute) — исполнение файла разрешено. Это касается исполняемых файлов.
  • r (read) — разрешено просматривать содержимое каталога, то есть можно воспользоваться командой ls и посмотреть какие файлы и каталоги содержаться в данном каталоге.
  • w (write) — используется совместно с атрибутом x (execute). Позволяет удалять и переименовывать файлы в каталоге.
  • x (execute) — при использовании совместно атрибутом r (read) позволяет увидеть атрибуты файла, то есть его размер, дату модификации, права доступа. Одним словом позволяет полноценно воспользоваться командой ls -l . При использовании совместно с атрибутом w (write) позволяет перейти в каталог командой cd , удалять и переименовывать файлы.

Рассмотрим вышесказанное на примерах.

У нас в системе имеются 2 пользователя: teacher (учитель) и student (студент). У каждого из них имеется свой домашний каталог, в котором они могут хранить свои файлы.Так как пользователь student не является владельцем каталога /home/teacher и не относится к группе его владельцев, то для него будут действовать права доступа для категории остальных пользователей.

Домашний каталог пользователя teacher имеет следующие права доступа:

Пользователь student хочет посмотреть какие файлы имеются в данном каталоге:

Доступа нет. Попробуем хотя бы перейти в этот каталог:

Снова нет доступа.

Пользователь teacher решил всем разрешить просмотр его файлов в каталоге:

Попробуем узнать что у него хранится:

Мы узнали имена файлов, но абсолютно ничего не знаем какие это файлы и их атрибуты. То есть атрибут r (read) каталога позволяет просматривать имена (только имена) файлов с помощью ls , но не выдает о них дополнительную информацию. Попробуем перейти в этот каталог:

И снова неудача. Попробуем установить права записи, то есть атрибут w (write):

Теперь попробуем выполнить все те же действия, что и до этого:

Как видно атрибут w (write) сам по себе не работает. Удалим этот атрибут и установим x (execute):

доступ к данному каталогу у нас имеется при наличии установленных прав на чтение и исполнение.

Попробуем теперь удалить или переименовать любой файл:

Операция запрещена, так как у нас для каталога teacher/ не установлен атрибут w (write).

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

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

Когда для каталога запрещена запись, то остальным пользователям запрещено следующее:

  • удалять файлы из каталога
  • перемещать/переименовывать файлы
  • создавать жесткие ссылки
  • создавать новые файлы и каталоги в данном каталоге

Однако данная политика не накладывает ограничения на редактирование и копирование файлов. Можно с легкостью отредактировать и сохранить файл. Кроме того, мы можем скопировать файл в свой каталог. Причем файл будет иметь совершенно иные атрибуты. Например, скопируем файл Worknotes.txt в каталог /home/student/:

Теперь у скопированного файла новый владелец и другие права доступа. Здесь данные операции регламентируется уже правами доступа самого файла.

А что можно делать с файлами, когда установлен атрибут x (execute)?

Можно делать следующее:

  • просматривать атрибуты файлов (совместно с атрибутом r ) с помощью команды ls -l
  • переходить в каталог командой cd
  • запуск исполняемых файлов
  • совместно с атрибутом w (write) можно удалять и перемещать файлы

Теперь установим атрибут w (write) для каталога /home/teacher/ и посмотрим, что произойдет:

Теперь можно делать абсолютно что угодно с файлами и каталогами.

То есть атрибут w (write) работает всегда в паре с x (execute)?

Все верно, но это в отношении каталогов. У файлов данные атрибуты независимы друг от друга.

А как быть, если пользователь student хочет предоставить доступ к своим файлам определенным пользователям и запретить остальным?

Для этого существует группа владельцев файла. Пользователю student достаточно поменять группу владельцев файла на teache r и предоставить соответствующие права, а всем остальным — запретить:

А как поменять группу?

С помощью команды chgrp [опции] группа файл .

Например, чтобы поменять группу владельцев файла Linux.txt на teacher введем chgrp teacher Linux.txt.

А если имеется много файлов, то как это сделать быстрее и проще?

Есть специальная опция -R ( —recursive ). Например, имеется каталог Homework/ с файлами:

Применим команду chgrp -R teacher Homework/ :

А можно поменять и самого владельца?

Конечно, существует команда chown [опции] владелец файл .

Однако в тех случаях, когда нам необходимо поменять сразу и группу и владельца, то приходится выполнять 2 команды и это не очень удобно. Поэтому команда chown позволяет менять одновременно и владельца и группу chown [опции] владелец:группа файл. Опция -R ( —recursive ) действительна и для данной команды.

А как можно менять сами права для группы владельцев и остальных пользователей?

Существуют 2 способа:

Используются следующие обозначения объектов, которым предоставляем права доступа:

Права меняются с помощью команды chmod [опции] права_доступа файл. Например, файл notes.txt имеет следующие права доступа:

Запретим остальным пользователям редактирование данного файла:

chmod o-w notes.txt

Теперь разрешим группе владельцев исполнение данного файла:

chmod g+x notes.txt

То есть мы указываем объект ( u , g или о ), а затем с помощью символов управления назначаем или удаляем соответствующие права.

А можно одновременно выполнить вышеуказанные действия в одной команде?

Конечно, достаточно выполнить chmod o-w,g+x notes.txt и результат будет тот же.

А можно одновременно в одной команде выполнить следующее:

  • владельцу назначить rw-
  • группе назначить r-x
  • остальным назначить r— ?

Конечно можно. Для этого существует символ ” = ” : chmod u=rw,g=rx,o=r notes.txt.

А если нужно всем назначить одинаковые права, например r-x , то воспользуемся chmod a=rx notes.txt :

Существует и другой способ указать права доступа — с помощью восьмеричного представления. Не будем вдаваться в подробности булевы алгебры и двоично-восьмеричного преобразования. Просто запомним таблицу:

Источник

Читайте также:  Windows installer service перевод
Оцените статью