Команда chmod: как поменять права доступа к файлам и директориям
Для всех файлов и директорий Linux устанавливаются следующие права доступа:
- разрешение чтение содержимого файла
- разрешение на изменение содержимого файла
- разрешение на исполнение файла
Эти три разрешения устанавливаются отдельно для следующих групп:
- владелец файла
- группа владельцев файла, к которой он принадлежит
- все остальные
Подробности о владельце файла и о том, как его поменять, смотрите в статье «Как пользоваться командой chown для смены владельца и группы файла в Linux».
Условные обозначения прав доступа и пользователей в chmod
Чтобы изменить режим (права доступа) файла или каталога, используется команда chmod. Имейте в виду, что только владелец файла или суперпользователь может изменить режим файла или каталога. chmod поддерживает два различных способа задания изменений режима: представление в восьмеричных числах или символьное представление. Сначала мы рассмотрим представление восьмеричных чисел.
Каждую восьмеричную цифру можно представить как три двоичные цифры. Три цифры соответствуют трём параметрам режима доступа: чтение, запись, выполнение. Поэтому права доступа можно представить в виде трёх двоичных цифр, которые можно записать как одну восьмеричную цифру.
Следующая таблица поможет вам понять, что имеется ввиду.
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r-- |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
Используя три восьмеричных цифры, мы можем установить режим файла для владельца, группы владельцев и всех остальных:
> foo.txt
ls -l foo.txt
-rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt
chmod 600 foo.txt
ls -l foo.txt
-rw------- 1 me me 0 2008-03-06 14:52 foo.txt
Передав аргумент «600», мы смогли установить разрешения владельца на чтение и запись, удалив при этом все разрешения группы владельца и всех остальных. Хотя запоминание восьмеричного бинарного отображения может показаться неудобным, вам обычно нужно использовать только несколько часто используемых: 7 (rwx), 6 (rw-), 5 (r-x), 4 (r--) и 0 (---).
Либо можно запомнить значение одиночных прав доступа и складывать их значения для получения любых комбинаций: 4 (r--), 2 (-w-), 1 (--x). После того, как вы их запомнили, можно получить любую комбинацию, для прав чтения и записи это 6 (4+2) (rw-), для прав записи и выполнения это 3 (2+1) (-wx), для прав чтения и выполнения это 5 (4+1) (r-x)
chmod также поддерживает символическую запись для указания режимов файлов. Символическая запись делится на три части: на кого повлияет изменение, какая операция будет выполнена и какое разрешение будет установлено. Чтобы указать, на кого это влияет, комбинация символов «u», «g», «o» и «a» используется следующим образом:
u |
|
g |
|
o |
|
a |
|
Если символ не указан, будет принято «все». Операция может быть «+», указывающим, что разрешение должно быть добавлено, «-», указывающим, что разрешение должно быть удалено, или «=», указывающим, что должны применяться только указанные разрешения, и что все остальные должны быть удалены.
Права доступа указываются символами «r», «w» и «x». Вот несколько примеров символической записи:
u+x | Добавить разрешение на выполнение для владельца. |
u-x | Удалить разрешение на выполнение от владельца. |
+x | Добавить разрешение на выполнение для владельца, группы и всех остальных. Эквивалент a+x. |
o-rw | Удалить права на чтение и запись у любого пользователя, кроме владельца и группы владельцев. |
go=rw | Установить для группы владельцев и всех, кроме владельца, права на чтение и запись. Если владелец группы или все остальные ранее имели разрешения на выполнение, эти разрешения удаляются. |
u+x,go=rx | Добавить разрешение на выполнение для владельца и установить разрешения на чтение и выполнение для группы и других пользователей. Несколько записей могут быть разделены запятыми. |
Некоторые люди предпочитают использовать восьмеричные обозначения, некоторые люди любят символические. Символьная нотация даёт преимущество, заключающееся в том, что вы можете установить один атрибут, не мешая другим.
Как рекурсивно поменять права доступа в chmod
Для рекурсивного изменения прав доступа используйте опцию -R.
Пример:
chmod -R 755 /ПУТЬ/ДО/ДИРЕКТОРИИ
Предостережение в отношении опции «--recursive»: она действует как для файлов, так и для каталогов, поэтому она не так полезна, как можно было бы надеяться, поскольку мы редко хотим, чтобы файлы и каталоги имели одинаковые разрешения.
Как скопировать права доступа с файла на другие файлы
Если вам нужно установить точно такие же права доступа, как и у другого файла, то используйте опцию --reference=ФАЙЛ_ОБРАЗЕЦ. В этом случае вместо указанного РЕЖИМА, будут установлены права доступа такие же, как и у указанного ФАЙЛА_ОБРАЗЦА.
Комментариев 0