zaLinux.ru

Команда 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=ФАЙЛ_ОБРАЗЕЦ. В этом случае вместо указанного РЕЖИМА, будут установлены права доступа такие же, как и у указанного ФАЙЛА_ОБРАЗЦА.

Липкий бит (sticky bit)

На самом деле, режимы не ограничиваются тремя буквами rwx, полный набор такой: rwxXst. Их значение:

  • чтение (r),
  • запись (w),
  • выполнение (или поиск по каталогам) (x),
  • выполнение/поиск только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторых пользователь (X),
  • установить идентификатор пользователя или группы на выполнение (s), Файл с данным режимом (suid/guid) будет запускаться от имени того пользователя, чей идентификатор указан, независимо от того, кто на самом деле запустил данный файл.
  • флаг запрета удаления или липкий бит (sticky bit) (t). Файл с таким битом может удалить только пользователь, который его создал. Популярно использование в папке /tmp.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *