- Команда Chmod в Linux (права доступа к файлам)
- Разрешения для файлов Linux
- Использование chmod
- Символьный (текстовый) метод
- Числовой метод
- Использование справочного файла
- Рекурсивно изменить права доступа к файлу
- Работа с символическими ссылками
- Массовое изменение прав доступа к файлам
- Выводы
- Как изменить Права Доступа в Linux
- Введение
- Что вам понадобится
- Шаг 1 – Как изменить права доступа в Linux через командную строку
- Шаг 2 – Изменение владельца файла или папки через командную строку
- Шаг 3 – Использование дополнительных опций с командами chmod и chown
- Заключение
Команда Chmod в Linux (права доступа к файлам)
В Linux управление доступом к файлам осуществляется с помощью разрешений, атрибутов и владельцев файлов. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.
В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
Разрешения для файлов Linux
Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Остальные (все остальные).
Владение файлом можно изменить с помощью команд chown и chgrp .
К каждому классу применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью команды ls :
Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие пользователи имеют разрешения только на чтение ( r— ).
Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | символ | Значение в файле |
---|---|---|
Читать | — | Файл не читается. Вы не можете просмотреть содержимое файла. |
r | Файл доступен для чтения. | |
Написать | — | Файл нельзя изменить или модифицировать. |
w | Файл можно изменить или модифицировать. | |
Выполнить | — | Файл не может быть выполнен. |
x | Файл можно запустить. | |
s | Если он найден в user триплете, он устанавливает бит setuid . Если он находится в тройке group , он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для исполняемого файла setgid флаги setuid или setgid , файл выполняется с правами владельца и / или группы. | |
S | То же, что и s но флаг x не установлен. Этот флаг редко используется для файлов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Этот флаг бесполезен для файлов. | |
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.
Разрешение | символ | Значение в каталоге |
---|---|---|
Читать | — | Содержимое каталога не отображается. |
r | Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью ls .) | |
Написать | — | Содержимое каталога нельзя изменить. |
w | Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | |
Выполнить | — | Каталог не может быть изменен на. |
x | По каталогу можно перемещаться с помощью cd . | |
s | Если он находится в тройке user , он устанавливает бит setuid . Если он находится в group триплете, он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для каталога setgid флаг setgid новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuid не влияет на каталоги. | |
S | То же, что и s но флаг x не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге. | |
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для каталогов. |
Использование chmod
Команда chmod имеет следующую общую форму:
Команда chmod позволяет вам изменять права доступа к файлу, используя символьный или числовой режим или справочный файл. Мы объясним режимы более подробно позже в этой статье. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.
Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений.
Символьный (текстовый) метод
Синтаксис команды chmod при использовании символьного режима имеет следующий формат:
Первый набор флагов ( [ugoa…] ), флаги пользователей, определяет, какие классы пользователей изменяют права доступа к файлу.
- u — владелец файла.
- g — Пользователи, входящие в группу.
- o — Все остальные пользователи.
- a — Все пользователи, идентичные ugo .
Если флаг пользователей опущен, по умолчанию используется значение a и разрешения, установленные с помощью umask , не затрагиваются.
Второй набор флагов ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:
- — Удаляет указанные разрешения.
- + Добавляет указанные разрешения.
- = Изменяет текущие разрешения на указанные разрешения. Если после символа = не указаны разрешения, все разрешения из указанного класса пользователей удаляются.
Разрешения ( perms. ) могут быть явно установлены с использованием нуля или одной или нескольких следующих букв: r , w , x , X , s и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.
При настройке разрешений для более чем одного пользовательского класса ( [,…] ) используйте запятые (без пробелов) для разделения символьных режимов.
Ниже приведены несколько примеров использования команды chmod в символьном режиме:
Дайте членам группы разрешение на чтение файла, но не на его запись и выполнение:
Удалите разрешение на выполнение для всех пользователей:
Отвратительно удалите разрешение на запись для других пользователей:
Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:
То же самое можно сделать, используя следующую форму:
Предоставьте права на чтение, запись и выполнение владельцу файла, права на чтение для группы файла и никаких разрешений для всех остальных пользователей:
Добавьте разрешения владельца файла к разрешениям, которые есть у членов группы файла:
Добавьте липкий бит в заданный каталог:
Числовой метод
Синтаксис команды chmod при использовании числового метода имеет следующий формат:
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.
NUMBER может быть 3- или 4-значным числом.
Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
- 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 в числовом режиме:
Предоставьте владельцу файла разрешения на чтение и запись и только на чтение членам группы и всем другим пользователям:
Предоставьте владельцу файла права на чтение, запись и выполнение, права на чтение и выполнение для членов группы и никаких разрешений для всех остальных пользователей:
Предоставьте разрешения на чтение, запись и выполнение, а также закрепите бит для данного каталога:
Рекурсивно установить разрешения на чтение, запись и выполнение для владельца файла и отсутствие разрешений для всех других пользователей в данном каталоге:
Использование справочного файла
Параметр —reference=ref_file позволяет вам установить права доступа к файлу такими же, как у указанного справочного файла ( ref_file ).
Например, следующая команда назначит права доступа file1 к file2
Рекурсивно изменить права доступа к файлу
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):
Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:
Работа с символическими ссылками
Символические ссылки всегда имеют 777 разрешений.
По умолчанию, при изменении разрешений символической ссылки, chmod изменяет права доступа к файлу, на который указывает ссылка.
Скорее всего, вместо смены целевого владельца вы получите ошибку «Нет доступа к ‘символической ссылке’: в разрешении отказано».
Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Рекомендуется не отключать защиту символических ссылок.
Массовое изменение прав доступа к файлам
Иногда возникают ситуации, когда вам нужно массово изменить права доступа к файлам и каталогам.
Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 644 и разрешений каталога на 755 .
Команда find будет искать файлы и каталоги в /var/www/my_website и передавать каждый найденный файл и каталог команде chmod для установки разрешений.
Выводы
Команда chmod изменяет права доступа к файлу. Разрешения можно установить с помощью символьного или числового режима.
Чтобы узнать больше о chmod посетите страницу руководства chmod .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
Как изменить Права Доступа в Linux
Введение
В этом руководстве вы научитесь изменять права доступа в Linux / Unix и устанавливать нового владельца файла/папки через командную строку. Существует 2 базовые команды, которые могут быть использованы для данных целей: chmod и chown.
Прокачайте ваш Linux сервер, воспользовавшись скидками на VPS-хостинг в Hostinger!
Что вам понадобится
Перед тем, как вы начнете это руководство, вам понадобится следующее:
- Доступ к командной строке
Шаг 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 – это значение показывает владельца файла и его группу.
- 0 – это значение показывает размер файла.
- 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
Мы должны написать следующую команду:
Каждый номер в этой команде представляет собой права для одного из типов пользователей (владелец, группа и другие). Первый номер 7. Теперь, используя объяснение числовых значений выше, единственный вариант для получения числа 7 — сложение чисел 4, 2 и 1, получаем 4+2+1=7. Проще говоря, это означает ВСЕ права доступа (чтение, запись, выполнение — rwx). Первый номер устанавливает права доступа для владельца файла. Второй номер 4, который означает права доступа -r (чтение), устанавливает права доступа для группы владельца. Третий номер 6, используя тот же способ, что и с первым номером, 4+2=6, дает группе другие, права на чтение (4) и запись (2) файла. Третья часть в команде (file1.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. Но нашей персональной рекомендацией станет, изучение одной из этих команд и её использование (в этом случае способ с номерами). Если вы хотите узнать больше о других путях изменения прав доступа, вы можете прочитать об этом здесь.
Шаг 2 – Изменение владельца файла или папки через командную строку
chown – команда используется для смены владельца файла или папки. Самый стандартный синтаксис для этой команды:
К примеру, если у нас есть файл “demo.txt” и мы хотим изменить владельца на “jerry” и группу владельца на “clients”, нам необходима эта команда:
Как вы видите, мы отделили владельца и группу владельца символом “:” (двоеточие). Если мы хотим поменять только владельца файла, используем этот код:
Мы просто убрали группу владельца и вписали нового владельца файла, в таком случае группа владельца останется без изменений.
Другой схожий пример, если мы хотим поменять только группу владельца:
В этом случае, группа владельца изменится на clients (владелец останется прежним).
Шаг 3 – Использование дополнительных опций с командами chmod и chown
Одна из основных опций работающая с обеими командами это -R, которая означает рекурсивный. Эта опция позволяет вам менять права доступа и владельца файла, заданной папки и ВСЕХ других файлов внутри нее.
ВАЖНО! Будьте очень осторожны с этой опцией, если вы используете ее неправильно, вы можете изменить права доступа и владельца ВСЕХ файлов в вашей системе, что приведет к ошибкам в работе и трате огромного количества времени на откат изменений.
- “-f” – тихая или силовая опция. При использовании данной опции скроет большинство сообщений об ошибках.
- “-v” – делает диагностику каждого файла затронутого командой.
- “-c” – схожа с опцией -v, но предоставляет информацию только в случае реальных изменений.
Заключение
В этом руководстве вы научились, как изменить права доступа Linux и узнали команды для смены владельца папки или файла. Знание данных команд поможет вам в более удобном управлении вашим сервером. Если вы хотите продолжить изучение по данной теме, проверьте эти руководства:
Источник