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

Какие бывают права доступа к файлам в Linux


Для всех файлов и директорий 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


Сокращено от «все». Сочетание «u», «g» и «o».




Если символ не указан, будет принято «все». Операция может быть «+», указывающим, что разрешение должно быть добавлено, «-», указывающим, что разрешение должно быть удалено, или «=», указывающим, что должны применяться только указанные разрешения, и что все остальные должны быть удалены.



Права доступа указываются символами «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