Команда chmod

Ошибки команды Attrib

Как и в большинстве команд командной строки, используйте двойные кавычки вокруг имени папки или файла с пробелами. Если вы забудете сделать это с помощью команды attrib, вы получите ошибку «Неправильный формат параметра -» .

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

Ошибки команды Attrib, такие как Access Denied, означают, что у вас недостаточно доступа к файлам, в которые вы пытаетесь внести изменения атрибутов. Получите право собственности на эти файлы в Windows и попробуйте снова.

Какие бывают права доступа в Linux?

  1. Чтение (read, “r”, 100 (4)) – для файлов это означает, что можно ознакомиться с его содержимым. Для каталога – показать его содержимое.
  2. Запись (write, “w” 010 (2)) – для файлов это – изменить содержимое. Для каталога – манипуляции с файлами внутри каталога (есть нюансы).
  3. Выполнение (execute, “x” 001 (1)) – для файлов – запустить файл на выполнение. Для каталога – перейти в него и получить атрибуты файлов (не имена). Нюанс, о котором говорил про “w” на каталоге – работает вместе с “x”.

Обратите внимание на числовые коды – их можно использовать вместо буквенных. Например, если нужно назначить право на выполнение – можно установить код 1

Если – на чтение и выполнение – то 5 (4+1). Если на всё – то 7 (4+2+1).

Зачем использовать Chmod

В UNIX-системах — FreeBSD, Ubuntu, Debian, Centos — у каждого файла и папки (каталога) есть свои владелец и группа, к которым они относятся. Сделано это с целью разграничения прав доступа на чтение (r, read), запись (w, write) и исполнение (x, execute) для разных пользователей: владельцев (u), пользователей, входящих в группу владельца (g) и остальных (o).
Например, если вы пользуетесь хостингом, то должны знать, что ваш сайт физически находится на одном сервере рядом со множеством других сайтов таких же, как вы, пользователей со своими сайтами. Чтобы вы не смогли помешать друг другу, у каждой директории с сайтами свой владелец и группа пользователей, к которым они относятся.
На shared хостинге о вас позаботятся профессиональные системные администраторы. А если вы имеете свой сервер VDS/VPS, то просто обязаны следить за прописанными правами на доступ к файлам. Например, если вдруг с помощью уязвимости на сайте злоумышленник сможет записать backdoor в директорию для загрузки файлов, то с правильно прописанными правами доступа он не сможет причинить большого вреда файловой системе. Конечно, в директории для загрузки файлов должно быть принудительно отключено исполнение скриптов, но это тема уже для другого разговора.

Команда chmod

Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа).

Синтаксис команды прост:

chmod <опции> <права> <объект или регулярное выражение>

Опции

Из самых полезных и часто используемых опций можно выделить одну:

-R — рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.

Например:

  • chmod -R 755 * — Назначение прав всем объектам текущего каталога, включая подкаталоги.
  • chmod -R 700 z* — Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.

Права

Права можно записывать как в восьмеричном представлении так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры (1-я для владельца, 2-я для группы, 3-я для всех остальных. См. таблицу выше).

Например:

  • chmod 744 koshka.txt — установит права для файла koshka.txt — (r w x r — — r — -);
  • chmod -R 775 sobaki — установит права на каталог sobaki и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (r w x r w x r — x);
  • chmod 700 * — установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их объекты (rwx — — — — — -).

Другой способ назначения прав — это использование маски режима доступа (символьное представление). Помимо прав задается еще кому мы собираемся эти права выставлять:

  • u — владельцу объекта;
  • g — группе объекта;
  • o — пользователю «все остальные»;
  • a — все вышеперечисленное.

Для назначения прав используются три знака: минус, плюс или равно:

  • — — убрать указанные права с объекта;
  • + — добавить указанные права к существующим правам объекта;
  • = — заменить права объекта на указанные.

Пример:

chmod g+w koshki.txt — Добавить пользователям группы файла koshki.txt права на запись в этот файл;

chmod a=rwx sobaki.doc — Заменит существующие права на файле sobaki.doc на полные права всем;

chmod o-w test.cgi — Уберет права на запись для пользователя «Все остальные».

chmod ug=rw spisok.doc — Выставить права на чтение и запись файлу spisok.doc для владельца и группы

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

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

  • chmod u+x,g+w-x koshki.txt — Добавить владельцу файла koshki.txt права на его выполнение, пользователям группы разрешить запись и запретить выполнение и оставить права остальных пользователей без изменений;
  • chmod u=rwx,g+w,go-x sobaki.doc — Установить полные права для владельца файла, разрешить пользователям группы запись и запретить выполнение всем пользователям, кроме владельца файла.

Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.

Массовое назначение прав

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

Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще, их очень много):

chmod -R 770 $(find . -type d)

где -type d — каталоги, -type f — файлы. В данном примере chmod установит, начиная от текущего каталога, права на все каталоги (включая подкаталоги) разрешения 770 (rwx rwx- — -) при этом не трогая права на другие объекты.

Более длинный вариант аналогичной операции:

find ./ -type f -exec sudo chmod 775 {} \;

где -type d — каталоги, -type f — файлы. В данном варианте chmod установит разрешения 775 на все файлы включая файлы в подкаталогах начиная от текущего.

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

Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.

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

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

Владение файлом можно изменить с помощью команд и .

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

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

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

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

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

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

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

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

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

Разрешение символ Значение в файле
Читать Файл не читается. Вы не можете просмотреть содержимое файла.
Файл доступен для чтения.
Написать Файл нельзя изменить или модифицировать.
Файл можно изменить или модифицировать.
Выполнить Файл не может быть выполнен.
Файл можно запустить.
Если он найден в триплете, он устанавливает бит . Если он находится в тройке , он устанавливает бит . Это также означает, что установлен флаг . Когда для исполняемого файла флаги или , файл выполняется с правами владельца и / или группы.
То же, что и но флаг не установлен. Этот флаг редко используется для файлов.
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Этот флаг бесполезен для файлов.
То же, что и но флаг не установлен. Этот флаг бесполезен для файлов.

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

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

Разрешение символ Значение в каталоге
Читать Содержимое каталога не отображается.
Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью .)
Написать Содержимое каталога нельзя изменить.
Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.)
Выполнить Каталог не может быть изменен на.
По каталогу можно перемещаться с помощью .
Если он находится в тройке , он устанавливает бит . Если он находится в триплете, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога флаг новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. не влияет на каталоги.
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов.
Если он обнаружен в триплетах, он устанавливает бит . Это также означает, что установлен флаг . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге.
То же, что и но флаг не установлен. Этот флаг бесполезен для каталогов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Разрешение Метка Значение в файле
ЧтениеRead Файл не читается. Вы не можете просматривать содержимое файла.
  Файл доступен для чтения.
ЗаписьWrite Файл не может быть изменен или изменен.
  Файл можно изменить или модифицировать.
ВыполнениеExecute Файл не может быть выполнен.
  Файл можно запустить.
  Если он находится в триплете, он устанавливает бит. Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен.
Когда для исполняемого файла установлены флаги или , файл выполняется с правами владельца и / или группы.
  То же , но флаг не установлен. Этот флаг редко используется для файлов.
  Если он находится в триплете, он устанавливает бит.
Это также означает, что флаг установлен. Этот флаг бесполезен для файлов.
  То же, но флаг не установлен. Этот флаг бесполезен для файлов.

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

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

Разрешение Метка Значение в каталоге
ЧтениеRead Содержимое каталога не может быть отображено.
  Можно показать содержимое каталога.
(например, вы можете перечислить файлы внутри каталога с помощью .)
ЗаписьWrite Содержимое каталога не может быть изменено.
  Содержимое каталога может быть изменено.
(например, вы можете создавать новые файлы , удалять файлы и т. д.)
ВыполнениеExecute Каталог не может быть изменен на.
  По каталогу можно перемещаться с помощью .
  Если он находится в триплете, он устанавливает бит. Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен. Когда для каталога установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. не влияет на каталоги.
  То же , но флаг не установлен. Этот флаг бесполезен для каталогов.
  Если он находится в триплете, он устанавливает бит.
Это также означает, что флаг установлен. Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь могут удалять или переименовывать файлы в каталоге.
  То же , но флаг не установлен. Этот флаг бесполезен для каталогов.

Синтаксис команды chmod

$ chmod права файл

Из опций единственная, которой я когда-либо пользовался – -R – рекурсивная обработка каталога. Т.е. если повесить права на каталог, то эти же права будут назначены и для всех объектов, вложенных в него (включая другие каталоги).

Символьная нотация

Определимся, что мы хотим сделать. Если нужно установить права – используем знак “=”. Если убрать какие-то права – то знак “-“. Если добавить – знак “+”.

Установит на файл file1.txt права rx для владельца, группы и остальных.

Было-Стало

Уберёт у остальных право на чтение файла.

Добавит всем право на выполнение файла.

Числовая нотация

Здесь всё аналогично, но придётся немного поскладывать в уме числа. Если подразобраться, то этот способ куда более компактный и быстрый. Его основное отличие – он эквивалентен присваиванию прав, а не добавлению или убавлению какого-либо права.

Например вместо можно было написать .

Чтобы было легче запомнить – вот список:

  • 0 – никаких прав
  • 1 – только выполнение
  • 2 – только запись
  • 3 – запись и выполнение
  • 4 – только чтение
  • 5 – чтение и выполнение
  • 6 – чтение и запись
  • 7 – чтение запись и выполнение

How to Recursively Change the File’s Permissions in Linux

21 Января 2020
&vert;

Терминал

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

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

Для получения дополнительной информации о правах доступа к файлам см. «Команда Umask в Linux» .

Рекурсивный  Chmod

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

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

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

Режим также можно указать с помощью символического метода:

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

С использованием команды

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

Наиболее распространенный сценарий — рекурсивное изменение разрешений для файла веб-сайта и разрешений для каталога на  .

Используя числовой метод:

Используя символический метод:

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

При использовании с , команда запускается для каждой найденной записи. Используйте команду, чтобы ускорить операцию, передавая несколько записей одновременно:

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

С использованием find команды

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

Наиболее распространенный сценарий — рекурсивное изменение разрешений для файла веб-сайта и разрешений для каталога на  .

Используя числовой метод:

Используя символический метод:

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

При использовании с , команда запускается для каждой найденной записи. Используйте команду, чтобы ускорить операцию, передавая несколько записей одновременно:

Синтаксис и опции chattr

Утилиты chattr и lsattr входят в пакет e2fsprogs и предустановлены во всех современных дистрибутивах. Базовый синтаксис chattr выглядит следующим образом:

$ chattr опции файлы

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

  • -R — рекурсивная обработка каталога;
  • -V — максимально подробный вывод;
  • -f — игнорировать сообщения об ошибках;
  • -v — вывести версию.

Оператор может принимать значения:

  • + — включить выбранные атрибуты;
  • — — отключить выбранные атрибуты;
  • = — оставить значение атрибута таким, каким оно было у файла.

Вот некоторые доступные атрибуты:

  • a — файл может быть открыт только в режиме добавления;
  • A — не обновлять время перезаписи;
  • c — автоматически сжимать при записи на диск;
  • C — отключить копирование при записи;
  • D — работает только для папки, когда установлен, все изменения синхронно записываются на диск сразу же;
  • e — использовать extent’ы блоков для хранения файла;
  • i — сделать неизменяемым;
  • j — все данные перед записью в файл будут записаны в журнал;
  • s — безопасное удаление с последующей перезаписью нулями;
  • S — синхронное обновление, изменения файлов с этим атрибутом будут сразу же записаны на диск;
  • t — файлы с этим атрибутом не будут хранится в отдельных блоках;
  • u — содержимое файлов с этим атрибутом не будет удалено при удалении самого файла и потом может быть восстановлено.

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

Шаг 1 – Как изменить права доступа в Linux через командную строку

chmod – эта команда используется для изменения прав доступа к файлу или папке. Каждый файл имеет типы пользователей, которые могут с ним взаимодействовать:

Тип Объяснение
Владелец (owner) Пользователь, создавший и владеющий данным файлом или папкой.
Группа (group) Все пользователи, члены одной группы.
Другие (other) Все другие пользователи в системе, не являющиеся ни владельцами, ни членами группы.

Команда ls -l, может быть использована для отображения прав доступа и владельца. К примеру, команда ls -l file1.txt отобразит:

-rwxr–rw- 1 user user 0 Jan 19 12:59 file1.txt

“-rwxr–rw-“ –  эта часть строки показывает права доступа

Здесь 4 главные буквы на которые вам надо обратить внимание: r,w,x,d. d означает, что тип файла — это каталог

В нашем примере, такой буквы нет (она стояла бы первой в строке), здесь вместо нее стоит символ “-“ (который в основном означает “нет”). Буква x означает разрешение на выполнение файла или папки (это разрешение необходимо для входа в папку). Буква w означает разрешение на запись файла или папки (редактирование, удаление и т.д.) И наконец последняя буква r, которая означает чтение. Если у вас есть права на чтение файла, вы можете прочесть содержимое файла, но не сможете предпринять другие действия (к примеру, вы можете прочитать код скрипта, но не сможете выполнить его).

1 – число хард связи. Проще говоря, хард связь это дополнительное имя для существующего файла.

user user – это значение показывает владельца файла и его группу.

 – это значение показывает размер файла.

Jan 19 12:59 – отображает дату последнего изменения.

file1.txt – предоставляет имя файла или папки.

Хорошо, теперь давайте вернемся к команде chmod. Это команда позволяет нам изменить права доступа к файлу или папке. Мы научим вас, как это сделать просто складывая номера. Каждое из прав доступа имеет свой собственный номер:

  • r (чтение) – 4
  • w (запись) – 2
  • x (выполнение) – 1

К примеру, если мы хотим изменить права доступа к файлу file1.txt на эти:

-rwxr–rw- 1 user user 0 Jan 19 12:59 file1.txt

Мы должны написать следующую команду

chmod 746 file1.txt

Каждый номер в этой команде представляет собой права для одного из типов пользователей (владелец, группа и другие). Первый номер 7. Теперь, используя объяснение числовых значений выше, единственный вариант для получения числа 7 — сложение чисел 4, 2 и 1, получаем 4+2+1=7. Проще говоря, это означает ВСЕ права доступа (чтение, запись, выполнение — rwx). Первый номер устанавливает права доступа для владельца файла. Второй номер 4, который означает права доступа -r (чтение), устанавливает права доступа для группы владельца. Третий номер 6, используя тот же способ, что и с первым номером, 4+2=6, дает группе другие, права на чтение (4) и запись (2) файла. Третья часть в команде (file1.txt) – это имя файла для которого мы изменяем права доступа.

Еще один пример:

chmod 777 file2.txt

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

Вот список самых наиболее распространённых прав доступа для файлов:

Значение Цифровое значение Объяснение
-rw——- 600 Владелец может читать и записывать файл.
-rw-r–r– 644 Владелец может читать и записывать файл, группа и другие могут только читать.
-rw-rw-rw- 666 Владелец, группа и другие могут читать и записывать.
-rwx—— 700 Владелец может читать, записывать и выполнять, группа и другие не имеют никаких прав доступа.
-rwx–x–x 711 Владелец может читать, записывать и выполнять, группа и другие могут только выполнять.
-rwxr-xr-x 755 Владелец может читать, записывать и выполнять, группа и другие могут читать и выполнять.
-rwxrwxrwx 777 Все типы пользователей могут читать, записывать и выполнять.

Наиболее распространенные права доступа для каталогов:

Значение Цифровое значение Объяснение
drwx—— 700 Только владелец может читать и записывать в этом каталоге.
drwxr-xr-x 755 Владелец, группа и другие могут читать каталог, но только владелец может изменять содержимое.

Существуют и другие способы изменения прав доступа в Linux, используя команду chmod. Но нашей персональной рекомендацией станет, изучение одной из этих команд и её использование (в этом случае способ с номерами). Если вы хотите узнать больше о других путях изменения прав доступа, вы можете прочитать об этом здесь.

Метаданные WSL в файлах Windows

Если метаданные включены в качестве параметра подключения в WSL, вы можете добавить и интерпретировать расширенные атрибуты в файлах Windows NT, чтобы предоставить разрешения файловой системы Linux.

WSL может добавлять четыре расширенных атрибута NTFS:

Имя атрибута Описание
$LXUID Идентификатор пользователя владельца
$LXGID Идентификатор владельца группы
$LXMOD Файловый режим (восьмеричная система и типы разрешений файловой системы, например: 0777)
$LXDEV Устройство (если это файл устройства)

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: