Команда chmod – изменение прав доступа. Chmod: изменение прав доступа Установка прав для каталогов

Продолжаем подробно рассказывать вам о пользователях и группах в Linux и сегодня поговорим о том как пользоваться командами chown и chmod.

CHOWN

Chown — от английского change own. И так, как вы знаете в Linux есть пользователи и группы. У каждого пользователя есть свои файлы, созданные или загруженные. Каждый пользователь находится в собственной группе и может быть объеден c другими пользователями в другие группы.

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

Если вы хотите поменять или сменить владельца (пользователя) файла тогда вам поможет команда:

Sudo chown userName text.txt

В данном примере мы присвоили файл text.txt пользователю userName.

Если вы хотите поменять только группу, то можно воспользоваться командой chgrp:

Sudo chgrp groupName text.txt

Для того чтобы не вводить 2 разные команды делают так:

Sudo chown userName:groupName text.txt

Вначале указывается владелец файла, а после группа:

sudo chown имя_владельца : имя_группы text.txt

Если вам нужно поменять в директории владельца и группу, а там множество файлов и папок тогда используйте ключ -R:

Sudo chown -R userName:groupName /var/www/site/

CHMOD

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

Права на файл могут обозначаться цифрами и буквами:

Значения прав в цифрах суммируются:

  • полные права (rwx) 7 = 4 + 2 +1
  • чтение и запись (rw-) 6 = 4 + 2 + 0
  • чтение и выполнение (r-x) 5 = 4 + 0 + 1
  • только чтение 4 (r—) = 4 + 0 + 0
  • только запись 2 (-w-) = 0 + 2 + 0
  • права отсутствуют (—) 0 = 0 + 0 + 0

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

Владелец Группа Остальные
u g o
права доступа буквы права доступа цифры
rwxrwxrwx 777 читают, записывают, выполняют все
rwxr-xr-x 755 читает, записывает, выполняет читать и запускать
rw-r—r— 644 чтение и запись только четние
r——— 400 читает только владец

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

Назначение прав доступа цифрами

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

Sudo chmod 755 text.txt

Для директорий необходимо после chmod добавить ключ -R .

Чуть ниже полезная команда, как массово поменять права во всех папках и под папках.

Для папок:

Find /ваш_путь -type d -exec chmod 755 {} \;

Для файлов:

Find /ваш_путь -type f -exec chmod 644 {} \;

Назначение прав доступа буквами

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

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

u user Владелец
g group

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

Синтаксис:

chmod [-fv] [-R [-H | -L | -P]] mode file ... chmod [-fv] [-R [-H | -L | -P]] [-a | +a | =a] ACE file ... chmod [-fhv] [-R [-H | -L | -P]] [ACL_Option ] file ...

Параметры:

-R Рекурсия. Используется для папок. Меняет права не только для указанного объекта, но для всех вложенных в него
-R -H Следовать за символьными ссылками в командной строке. По умолчанию символьные ссылки не обрабатываются
-R -L Все символьные ссылки будут обработаны
-R -P Дерево ссылок обрабатываться не будет. Параметр по умолчанию.
-v Многословный. Показывает все файлы, которые были изменены
-v -v очень многословный режим. Будет выведено старые и новые права в восьмеричном (числовой) и буквенном режиме отображения
-f не отображать диагностические сообщения в случае невозможности изменения прав доступа к файлу
ACL_Option (ACL - списки контроля доступа для групп пользователей) ACL_manipulation_options

Права доступа:

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

Управление с помощью цифрового указания прав доступа:

Для управления правами используется три бита

  • первый - право на чтение
  • второй -право на запись
  • третий -право на выполнение
Побитно Число Буквенный код описание права
000 0 нет прав
001 1 право только на исполнение
010 2 право только на запись
011 3 право на запись и исполнение
100 4 право только на чтение
101 5 право на чтение и исполнение
110 6 право на чтение и запись без исполнения
111 7 все права

Такие права на файл устанавливаются для трех видов доступа:

  • для владельца
  • для группы
  • для остальных

В итоге команда выглядит следующим образом:

$ chmod 444 file -право только на чтение для всех

$ chmod 755 file -владелец имеет все права (7), остальные пользователи только чтение и запуск (5)

$ chmod 066 file -владелец не имеет никаких прав на файл (0), все остальные право на чтение и запись без выполнения

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

Формат указания прав символьным кодом

[кто...][[+-=][права...]...][,...]

кто - это комбинация символов "ugoa" указывающая на пользователей чьи права на доступ к файлу или папке будут изменены

  • u пользователь собственник
  • g группа пользователей
  • o остальные пользователи
  • a (all) для всех, аналогично ugo

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

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

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

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

3.10.6.1. Как определить права

Вы можете определить права доступа к файлу или справочнику, воспользовавшись командой ls -l. Например, если вы находитесь в справочнике startship/bin, и введете команду ls -l, то получите следующую информацию:

$ ls -l total 35 -rwxr-xr-x 1 startship project 9346 Nov 1 08:06 display -rw-r--r-- 1 startship project 6428 Dec 2 10:26 list drwxr-x--x 2 startship project 32 Nov 8 15:32 tools $

В левой части экрана отображены права доступа для файлов display и list и справочника tools:

Rwxr-xr-x для файла display -rw-r--r-- для файла list drwxr-x--x для справочника tools

Первый символ описывает тип файла (например, символ "-" говорит, что это обыкновенный файл, символ "d" - справочник). Дальнейшие девять символов описывают права доступа. Первые три символа из девяти устанавливают права доступа для владельца, вторые три - для группы, третьи - для всех пользователей. Каждый набор символов r,w,x показывает текущие установленные права доступа для каждой категории пользователей. Если вместо символа стоит "-", то соответствующее право отсутствует.

Существует два ограничения. Случайно могут появиться буквы l или s в строке вместо r, w или x. Буква s представляет специальное право на выполнение файла. Она появляется на том месте, где обычно стоит буква r в наборах для владельца или для группы пользователей и это означает специальное право на выполнение файла. Она имеет значение только для программистов и системных программистов. Буква l указывает, что блокировка будет появляться при обращении к файлу. Это не означает, что файл защищен.

3.10.6.2. Как изменить существующие права

Изменить существующие права можно с помощью команды chmod.

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

Chmod кто+права файл(ы) или chmod кто-права файл(ы) где

chmod - имя программы;
кто - одна их трех групп пользователей:
u - владелец;
g - группа;
o - все пользователи;
"+" или "-" - наличие или отсутствие права;
право - одно из трех прав:
r - право на чтение;
w - право на запись;
x - право на выполнение;
файл(ы) - имя файла(ов) (справочника); предполагается, что файл находится в текущем справочнике или вы должны указать полное имя пути.

Примечание. Команда chmod не будет выполняться, если вы поставите пробел между "кто", символами "+", "-" и "право".

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

Chmod u-w display После того как получите подсказку, введите команду: ls -l чтобы проверить, как изменились права. Экран будет выглядеть следующим образом: $ chmod u-w display $ ls -l total 35 -r-xr-xr-x 1 startship project 9346 Nov 1 08:06 display -rw-r--r-- 1 startship project 6428 Dec 2 10:26 list drwxr-x--x 2 startship project 32 Nov 8 15:32 tools $

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

Теперь обратимся к другому примеру. Право на запись в файл display не разрешено вашей группе и всем пользователям системы. Однако им предоставлено право на чтение. Это означает, что они могут копировать файл в свой собственный справочник и затем вносить в него изменения. Чтобы предотвратить эти действия, вы должны отменить право на чтение. Для этого введите команду:

Chmod go-r display где g и o обозначают права для группы и для всех пользователей системы;
-r - запрещает читать или копировать файл.

Проверьте результат и введите команду ls -l. Экран будет выглядеть следующим образом:

$ chmod go-r display $ ls -l total 35 -rwx--x--x 1 startship project 9346 Nov 1 08:06 display -rw-r--r-- 1 startship project 6428 Dec 2 10:26 list drwxr-x--x 2 startship project 32 Nov 8 15:32 tools $

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

Например, вы предоставили право на чтение справочника себе (u), членам вашей группы (g) и всем пользователям системы. Каждый пользователь, имеющий доступ к системе, будет иметь право читать имена файлов, содержащихся в этом справочнике, задав команду ls -l. Аналогично, предоставление права на запись позволяет пользователям создавать новые файлы в справочнике и удалять в нем существующие файлы. Предоставленное право на выполнение в справочнике позволяет обозначенным пользователям перемещаться в этот справочник (и делать его своим текущим справочником) с помощью команды cd.

3.10.6.3. Альтернативный метод

Существует два метода, с помощью которых может быть выполнена команда chmod. Способ, описанный выше, в котором символы r, w и x используются для указания права, называется символическим методом.

Альтернативным методом является восьмиричный метод. Его формат требует от вас указать права с использованием трех восьмиричных цифр (от 0 до 7).

Команда chmod , команда chown и команда chgrp.

Команда chmod предназначена для изменения прав доступа файлов и директорий в Linux. Название команды произошло от словосочетания «ch ange mod e».

Синтаксис команды chmod следующий:

Chmod разрешения имя_файла

Разрешения можно задавать двумя способами:

  • Числом
  • Символами

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

Запись прав доступа числом

Chmod 764 myfile

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

  • Первая цифра используется для указания прав доступа для пользователя.
  • Вторая цифра для группы.
  • Третья для всех остальных.

В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):

Число Разрешения Символьное обозначение
0 разрешения отсутствуют ---
1 x — запуск --x
2 w — изменение -w-
3 x+w — запуск+изменение -wx
4 r — чтение r--
5 r+x — чтение+запуск r-x
6 r+w — чтение+изменение rw-
7 r+w+x — чтение+изменение+запуск rwx

Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:

Chmod 764 myfile

Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 7 6 4 , которые означают:

  • 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
  • 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
  • 4 — права для всех остальных. Все остальные могут только читать файл (r).

Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r- ».

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

Числовое
обозначение
"rwx"-обозначение Описание
400 -r-------- Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены.
644 -rw-r--r-- Все пользователи могут читать файл. Владелец может изменять файл.
660 -rw-rw---- Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены.
664 -rw-rw-r-- Все могут читать файл. Владелец и группа могут изменять.
666 -rw-rw-rw- Все могут читать и изменять файл.
700 -rwx------ Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены.
744 -rwxr--r-- Все могут читать файл. Владелец может также изменять и запускать файл.
755 -rwxr-xr-x Все могут читать и запускать файл. Владелец может также изменять файл.
777 -rwxrwxrwx Все пользователи могут читать, изменять и редактировать файл.

Запись прав доступа символами

Chmod +x myfile1 chmod g=rw myfile2 chmod u-w myfile3

Как вы можете видеть, в данном формате права доступа задаются символами rwx , но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+ » и «- » и такие символы как, например, «g » или «u ».

Общий синтаксис можно записать примерно так:

Chmod (владелец)(математическая операция)(разрешения) имя_файла

Обозначения для владельцев файла следующие:

Математические операции означают следующее:

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

Рассмотрим примеры:

  • chmod +x myfile1

    В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x » означает — установить разрешение на запуск (x ) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1 .

  • chmod g=rw myfile2

    Здесь используется обозначение g и символ равенства «= ». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw ).

  • chmod u-w myfile3

    Для владельца файла (u ) мы удаляем разрешение на изменение (w ) файла.

  • chmod ug+x myfile2

    Разрешаем владельцу (u ) и группе (g ) запускать файл (x ).

  • chmod u+x,g-w,o-r myfile3

    Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u ) мы разрешаем запуск файла, для группы (g ) мы запрещаем изменять файл, для всех остальных (o ) мы запрещаем читать файл.

Рекурсивное изменение прав доступа

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

Chmod -R 644 Mydir

И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo , например:

Sudo chmod 644 file

Видео-обзор команды chmod

Команда chown — изменение владельца и группы

Для изменения владельца и группы файла используется команда chown .

Для изменения владельца файла используется следующий синтаксис:

Chown новый_владелец имя_файла

myfile нового владельца vasya :

Chown vasya myfile

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

Chown новый_владелец:новая_группа имя_файла

Например, установим для файла myfile нового владельца vasya и группу sambashare :

Chown vasya:sambashare myfile

Команда chgrp — изменение группы

Есть еще одна команда — chgrp . Она позволяет изменить только группу. Например:

Chgrp sambashare myfile

Резюме

В Linux у каждого файла есть права доступа — это разрешения, владелец и группа.

Разрешения задаются для владельца, группы и для всех остальных.

Есть три вида разрешений — r — чтение, w — изменение, x — запуск.

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

Чтобы изменить владельца или группу используется команда chown .

Чтобы изменить группу используется chgrp .

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

Для начала следует разобраться с основными понятиями такими как: кто такой владелец файла в Linux, каким образом к файлу получают доступ другие пользователи, а не только сам владелец и т.д.
В Unix-подобных системах приложение запускается с правами пользователя, вызвавшего указанное приложение. Это обеспечивает дополнительную безопасность, так как процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например / etc/ passwd , который принадлежит суперпользователю root . Звучит просто, но существует некоторые особенности, которые нужно обязательно знать и учитывать.

Владелец, Группа и Все остальные

Владелец

Владелец файла или директории в Linux – это пользователь, который их создал. Командой chown можно поменять владельца для файла или директории.

Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0400, 0200 и 0100 соответственно. Их можно комбинировать. Например, код 0700 позволяет читать, записывать и изменять файлы владельцем.

Группа

Группа — это несколько пользователей Linux, которые могут использовать (при достаточных правах доступа) файлы и папке на уровне с их владельцем. Изменить группу пользователей ассоциированных с файлом или директорией можно командой chgrp .

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

Все остальные

Это собирательное название для тех, кто не является владельцем файла или не относится к группе пользователей, которая может работать с этим файлом или директорией. Хорошая аналогия – это «весь мир», «каждый» или «любой».

Права на чтение, запись и исполнение устанавливаются с помощью числовых кодов 0004, 0002 и 0001 соответственно. Их можно комбинировать. Например, код 0007 позволяет читать, записывать и изменять файлы любому желающему.

Права на чтение, запись и выполнение

Чтение

Позволяет файлу быть прочитанным определенной группой пользователей.
Определяется как «r» в выводе команды ls

Запись

Позволяет изменять файлы или директории.
Определяется как «w» в выводе команды ls

Выполнение

Позволяет запускать бинарные файлы. Кроме этого, проверяет является ли папка доступной для поиска. Например, если у директории выставлены права 0600, то Вы не сможете воспользоваться командой cd , чтобы войти в эту папку или просмотреть ее содержимое командой ls
Определяется как «x» в выводе команды ls

Ну а теперь можно переходить к практике.

Определение и контроль прав доступа в Linux командой ls

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

gruyere@ meltingpot / test_perms $ ls -l
total 0
-rw-r--r-- 1 gruyere staff 0 27 Feb 19 :43 bar
drwxr-xr-x 2 gruyere staff 68 27 Feb 19 :45 baz
-rw-r--r-- 1 gruyere staff 0 27 Feb 19 :43 foo

Как видно из примера выше, команда ls показывает символьный код прав доступа на файлы и директории. В 3 и 4-ой колонке также указывается, кто является владельцем этих файлов или директорий и к какой группе пользователей они принадлежат.

chmod

chmod (ch ange mod e) – это широко используемая команда для изменения прав доступа к файлам и папкам в Linux. Она позволяет устанавливать права на доступ как пользователю, так и группе пользователей и для всех остальных.

Кроме этого, серверные язык программирования (вроде php или Python) предоставляют некую копию этой команды в том смысле, что у них схожа нотация установки прав.

Абсолютная и символьная нотация

chmod поддерживает 2 типа синтаксиса для изменения прав доступа:

  • Абсолютная нотация – восьмеричное число, указывающее на то, какие биты доступа активировать(ны), например 0777
  • Символьная нотация – сочетание букв и цифр устанавливающих бит доступа.

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

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