- Понимание прав доступа к файлам в Linux
- Understanding Linux File Permissions
- В Linux права доступа к файлам, атрибуты и владение управляют уровнем доступа, который система обрабатывает, а пользователи имеют к файлам. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к определенным файлам и каталогам.
- Права доступа к файлам в Linux
- Изменение прав доступа к файлу
- Символьный (текстовый) метод
- Числовой метод
- Заключение
- Смена прав доступа пользователю в Linux
- Содержание
- Общая информация о правах доступа в Linux
- Примеры мнемонических спецификаций команды chmod:
- Смена прав доступа
- ISPmanager
- DirectAdmin
- cPanel
Понимание прав доступа к файлам в 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 команду.
Источник
Смена прав доступа пользователю в Linux
Содержание
Общая информация о правах доступа в Linux
Режим доступа к файлу можно изменить с помощью команды chmod. Изменять права доступа к файлу позволено только его владельцу либо пользователю root. В UNIX-системах код задается в виде восьмеричного числа. Также поддерживается система мнемонических (буквенных) обозначений. Первый способ удобнее для системного администратора, но при этом можно задать только абсолютное значение режима доступа. А используя мнемонический синтаксис, вы можете сбрасывать и устанавливать отдельные параметры, к примеру, добавить право на чтение либо убрать право на запись.
Первым аргументом команды chmod является спецификация прав доступа, то есть восьмеричное число (774, 777 и т.д.) либо мнемоническое обозначение (r+o, w-u и т.д.). Второй и последующий аргументы — имена файлов, права доступа к которым подлежат изменению. При использовании восьмеричной нотации первая цифра относится к владельцу, вторая — к группе, а третья — к остальным пользователям.
Права доступа к файлам подразделяются на следующие:
r — право на чтение данных.
w — право на изменение содержимого (запись – только изменение содержимого, но не удаление).
x — право на исполнение файла.
Теперь о правах доступа к папке (директории):
r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
w — право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
x — право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь)
В таблице указано восемь возможных комбинаций:
Восьмеричное число | Двоичное число | Режим доступа |
---|---|---|
0 | 000 | — |
1 | 001 | —x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r— |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
предоставляет владельцу все права, а всем остальным пользователям — только право выполнения, а команда:
предоставляет владельцу и группе все права, а остальным пользователям запрещает изменение файла. Для смены прав доступа необходимо находиться в директории, где расположен файл, либо указывать полный путь:
Для применения прав доступа ко всем вложенным в директорию файлам и папкам (рекурсивно) необходимо в команду добавить ключ -R. То есть команда будет выглядеть как:
Примеры мнемонических спецификаций команды chmod:
Спецификация | Значение |
---|---|
u+w | Владельцу файла дополнительно дается право выполнения. |
ug=rw,o=r | Владельцу и группе предоставляется право чтения/записи, остальным пользователям — право чтения. |
a-x | Все пользователи лишаются права выполнения. |
ug=srx,o= | Владельцу и группе дается право чтения/выполнения, устанавливается также бит SUID; остальным пользователям запрещен доступ к файлу. |
g=u | Группе назначаются такие же права, что и владельцу |
Символ u («user») обозначает владельца файла, символ g («group») — группу, символ о («others») — других пользователей, символ a («all») — всех пользователей сразу.
То есть, если необходимо убрать право на редактирование всех вложенных файлов и папок у других пользователей, то с помощью мнемонических обозначений команда будет выглядеть следующим образом:
В качестве примера мы будем устанавливать права доступа 777 для папки /var/www/mysite и всех вложенных в нее файлов и каталогов.
ВНИМАНИЕ! Установка прав доступа 777 используется исключительно в качестве примера, их использование может привести к уязвимости сервера!
Смена прав доступа
- Входим по протоколу SSH на ВПС с root привилегиями.
- Переходим с помощью команды cd в директорию, где расположена необходимая нам папка. В данном случае это /var/www:
- С помощью chmod устанавливаем рекурсивно права доступа для mysite:
Для подключения к серверу по протоколу SFTP мы будем использовать программу FileZilla. Данная программа бесплатна, поддерживает русский язык и кросплатформенна. Вы можете скачать ее с официального сайта: https://filezilla-project.org/. Обратите внимание, что в левой колонке отображает дерево каталогов Вашего компьютера, а в правой удаленной машины, в данном случае ВПС.
- Подключаемся к ВПС с root привилегиями по SFTP.
- Переходим в каталог /var/www
- Нажимаем правой кнопкой мышки на папке mysite и выбираем «Права доступа к файлу»
Во всплывающем окне устанавливаем необходимые права 777 и нажимаем «Перенаправить во вложенные каталоги» и выбираем «Применить ко всем каталогам и файлам» и нажимаем ОК.
ISPmanager
- Войти в КП от имени root пользователя.
- Зайти в «Система → Менеджер файлов»
- Перейти в директорию /var/www
- Выбрать папку mysite и в верхнем меню нажать кнопку «Атрибуты»
DirectAdmin
К сожалению, в КП DirectAdmin не предоставляется доступ к корневой файловой системе с помощью встроенного менеджера файлов. В связи с этим, в качестве примера, мы изменим права доступа для директории /domains/domain.com/public_html/mysite
- Входим в КП DirectAdmin
- Нажимаем кнопку Files в панели сверху
cPanel
В cPanel также не предоставляется доступ к корневой директории, в связи с чем мы сменим, в качестве примера, права доступа для папки /public_html/mysite. Обратите внимание, что менеджер файлов доступен только на уровне пользователя.
- Войти в cPanel на уровне пользователя.
- Перейти в Файлы → Диспетчер файлов.
В всплывающем окне установить необходимые права доступа и нажать «Change Permissions». Обратите внимание, что файловый менеджер cPanel не умеет изменять права для всех вложенных файлов и папок. Рекурсивно сменить права доступа Вы всегда сможете с помощью SSH либо SFTP протоколов.
Источник