Команды Linux: CHMOD. Команда chmod - Примеры использования Установка прав с помощью чисел

НАЗВАНИЕ
chmod - изменение режима доступа к файлам

СИНТАКСИС

Chmod режим файл...

ОПИСАНИЕ
Права доступа к указанным файлам (среди которых могут быть каталоги) изменяются в соответствии с указанным режимом. Режим может быть задан в абсолютном или символьном виде.

Абсолютный вид - восьмеричное число, являющееся поразрядным ИЛИ следующих режимов: 04000 При выполнении переустановить действующий идентификатор пользователя. 020#0 При выполнении переустановить действующий идентификатор группы, если # есть 7, 5, 3 или 1; учитывать блокировку доступа, если # есть 6, 4, 2 или 0. 01000 Бит навязчивости [см. man chmod(2)]. 00400 Доступен для чтения владельцем. 00200 Доступен для записи владельцем. 00100 Доступен для выполнения (в случае каталога - для просмотра) владельцем. 00040 Доступен для чтения членами группы. 00020 Доступен для записи членами группы. 00010 Доступен для выполнения (просмотра) членами группы. 00004 Доступен для чтения прочими пользователями. 00002 Доступен для записи прочими пользователями. 00001 Доступен для выполнения (просмотра) прочими пользователями.

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

Владелец Группа Прочие (u) (g) (o) rwx rwx rwx

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

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

[кому] операция права

Часть [кому] есть комбинация букв u, g и o (владелец, члены группы и прочие пользователи соответственно). Если часть кому опущена или указано a, то это эквивалентно ugo.

Операция может быть: + (добавить право), - (лишить права), = (в пределах данного класса присвоить права абсолютно, то есть добавить указанные права и отнять неуказанные).

Права - любая осмысленная комбинация следующих букв:

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

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

Chmod u+w,go+x f1

добавит для владельца право писать в файл f1, а для членов группы и прочих пользователей - право выполнять файл. Права устанавливаются в указанном порядке. Право s можно добавлять только для пользователя и группы, право t - только для пользователя.

Учет блокировки доступа (l) к файлу и его частям означает возможность монопольного захвата сегментов файла на время их обработки. Нельзя, однако, разрешить выполнение файла для членов группы и одновременно учитывать блокировку файла. Нельзя также разрешить переустановить при выполнении действующий идентификатор группы и учитывать блокировку файла. Таким образом, следующие команды являются некорректными:

Chmod g+x,+l f2 chmod g+s,+l f3 Попытка их выполнения вызовет соответствующую диагностику.

Изменить режим доступа к файлу может только его владелец или суперпользователь. Бит навязчивости может установить только суперпользователь. Чтобы добавить право переустановки идентификатора группы, надо быть членом этой группы; кроме того, для членов группы должно быть установлено право выполнения.

Для просмотра прав доступа и контроля при их изменении используется команда с флагом -l. Права переустановки идентификаторов пользователя и группы отмечаются буквой s на месте соответствующей буквы x: малой s, если соответствующая категория пользователей имеет право x, и большой S - если не имеет; право t отмечается на месте последней буквы x: малой t, если прочие пользователи имеют право выполнять файл, и большой T - если не имеют. Право l отмечается на месте права x для членов группы.

ПРИМЕРЫ

  1. Чтобы установить права, позволяющие владельцу читать и писать в файл, а членам группы и прочим пользователям только читать, надо сложить 0400, 0200, 0040 и 0004. Таким образом, команду можно записать двумя способами: chmod 644 f1 chmod u=rw,go=r f1
  2. Позволить всем выполнять файл f2: chmod +x f2
  3. Учитывать блокировку доступа к файлу f3: chmod +l f3
  4. Дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4: chmod =rwx,g+s f4 chmod 2777 f4

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

Есть 3 типа прав:
чтение(r),запись(w),выполнение(x)

Права определяются для 3-х типов пользователей:
владельца(u), группы(g), всех других (o)

Итак права каждого файла, это 9 бит информации (3 типа прав * 3 типа пользователей), соответственно каждый бит может быть установлен (=1) доступ разрешен, или сброшен(=0) доступ запрещен.

При назначении прав принято использовать восьмеричную(octal) систему счисления.

Текстовое представление прав(10 символов):
- rwxr- - r - -
0123456789

Символ в позиции 0:
"-" - обычный файл, "d" - папка, "l" - ссылка

Символы в позиции 1-3:
"rwx" - права владельца

Символы в позиции 4-6:
"r - -" - права для группы

Символы в позиции 7-9:
"r - -" - права для всех остальных

Таблица для определения прав:

Как видно из таблицы, права легко вычисляются
простым суммированием. 1=выполнение, 2=запись, 4=чтение.
например требуется выполнение(1) и чтение(4), получаем 1+4=5

Пример 644:
- владелец(u) чтение и запись
- группа(g) только чтение
- другие(o) только чтение

Пример 755:
- владелец(u) все права
- группа(g) чтение и выполнение
- другие(o) чтение и выполнение

В языках программирования например таких как C,
к правам добавляют 0 в начале каждого числа, что означает, что число восьмеричное, т.е. пишут 0644 вместо 644. При изменении прав с коммандной строки как правило этого не требуется.

Четырехзначное представление прав(4755), дополнительные права
биты SUID, SGID, sticky:

  • SUID или setuid: изменить "User ID" во время выполнения
  • SGID или setgid: изменить "Group ID" во время выполнения
  • sticky бит: запрещает удаление для всех пользователей кроме владельца. Ранее бит означал "держаться" в памяти после завершения процесса
Таблица. Числовое представление дополнительных прав:

Текстовое представление дополнительных бит:
дополнительные биты обозначаются следующими символами:
"S","s" - SUID, SGID
"T","t" - sticky бит
позиция этих бит, совпадает с позициями (3,6,9) прав выполнения "x"
впри этом, если прав на выполнение нет используется "верхний регистр" т.е. большие символы. Если права на выполнение установлены используются "нижний регистр" т.е. маленькие символы.

примеры:

Установлен SUID:
- r w s - - - - - - установлены биты SUID и выполнение для владельца
- r - S - - - - - - установлен бит SUID, не установлен бит выполнения

Установлен SGID:
- r w x r w s - - - установлены биты SGID и выполнение для группы
- r w x r - S - - - установлен бит SGID, не уст. выполнение для группы

Установлен sticky бит:
- r w x r w x r w t установлены биты sticky и выполнение для других
- r w x r w x r - T установлен sticky бит, но не уст. выполнение для других

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

права файлы папки
чтение чтение содержимого получение списка файлов
запись запись содержимого изменение списка файлов
(создание,удаление,переименование)
выполнение файл можно выполнить пользователь или процесс, может сделать папку "текущей/рабочей"
SUID Установить "User ID" при выполнении Перекрыть идентификатор пользователя при создании файла/папки (использовать идентификатор владельца корневой папки)
SGID Установить "Group ID" при выполнении Перекрыть идентификатор группы при создании файла/папки (использовать идентификатор группы корневой папки)
sticky запретить удаление всем, кроме владельца

команда изменеия прав chmod:
chmod [-R] права файл/папка

"-R" применить права рекурсивно ко всем файлам и подпапкам

Примеры:
chmod -R 755 folder/
chmod 644 file
и т.д.

Есть возможность менять права не целиком, а лишь добавлять или отменять права только определенным группам пользователей
используя символы вместо восьмеричных чисел.
"u" - пользователь/владелец
"g" - группа пользователей
"o" - остальные пользователи
"a" - все группы пользователей

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

Примеры:
chmod -R a+x folder/ выполнение для всех групп рекурсивно
chmod a+rx file чтение и выполнение для всех
chmod u+rx,g-rx file добавить чтение и выполнение для владельца, и
отозвать права для группы
chmod a+r,o= file добавить чтение для всех типов групп и отозвать
все права у всех других пользователей

команда изменения владельца chown:

Chown [-R] владелец:группа файл/папка

Примеры:
chown -R 0:0 folder/ установить владельца/группу = root рекурсивно
chown myuser:mygroup file установить myuser/mygroup для файла

In our documentation of the umask command. It contains a comprehensive description of how to define and specify file permissions.

In general, chmod commands take the form:

Chmod options permissions file name

If no options are specified, chmod modifies the permissions of the file specified by file name to the permissions specified by permissions .

permissions defines the permissions for the owner of the file (the "user"), members of the group who owns the file (the "group"), and anyone else ("others"). There are two ways to represent these permissions: with symbols (alphanumeric characters), or with octal numbers (the digits 0 through 7 ).

Let"s say you are the owner of a file named myfile , and you want to set its permissions so that:

  1. the u ser can r ead, w rite, and ex ecute it;
  2. members of your g roup can r ead and ex ecute it; and
  3. o thers may only r ead it.

This command will do the trick:

Chmod u=rwx,g=rx,o=r myfile

This example uses symbolic permissions notation. The letters u , g , and o stand for "user ", "group ", and "other ". The equals sign ("= ") means "set the permissions exactly like this," and the letters "r ", "w ", and "x " stand for "read", "write", and "execute", respectively. The commas separate the different classes of permissions, and there are no spaces in between them.

Here is the equivalent command using octal permissions notation:

Chmod 754 myfile

Here the digits 7 , 5 , and 4 each individually represent the permissions for the user, group, and others, in that order. Each digit is a combination of the numbers 4 , 2 , 1 , and 0 :

  • 4 stands for "read",
  • 2 stands for "write",
  • 1 stands for "execute", and
  • 0 stands for "no permission."

So 7 is the combination of permissions 4 +2 +1 (read, write, and execute), 5 is 4 +0 +1 (read, no write, and execute), and 4 is 4 +0 +0 (read, no write, and no execute).

Syntax

chmod [OPTION ]... MODE [,MODE ]... FILE ... chmod [OPTION ]... OCTAL-MODE FILE ... chmod [OPTION ]... --reference=RFILE FILE ...

Options

-c , --changes

Like --verbose , but gives verbose output only when a change is actually made.

-f , --silent , --quiet

Quiet mode; suppress most error messages.

-v , --verbose

Verbose mode; output a diagnostic message for every file processed.

--no-preserve-root

Display a help message and exit.

The file"s owner.

hopestaff

The group to whom the file belongs.

Feb 03 15:36

The file"s mtime (date and time when the file was last modified).

file.txt

The name of the file.

Examples

chmod 644 file.htm

Set the permissions of file.htm to "owner can read and write; group can read only; others can read only".

Chmod -R 755 myfiles

Recursively (-R ) Change the permissions of the directory myfiles , and all folders and files it contains, to mode 755 : User can read, write, and execute; group members and other users can read and execute, but cannot write.

Chmod u=rw example.jpg

Change the permissions for the owner of example.jpg so that the owner may read and write the file. Do not change the permissions for the group, or for others.

Chmod u+s comphope.txt

Set the "Set-User-ID" bit of comphope.txt , so that anyone who attempts to access that file does so as if they are the owner of the file.

Chmod u-s comphope.txt

The opposite of the above command; un-sets the SUID bit.

Chmod 755 file.cgi

Set the permissions of file.cgi to "read, write, and execute by owner" and "read and execute by the group and everyone else".

Chmod 666 file.txt

Set the permission of file.txt to "read and write by everyone.".

Chmod a=rw file.txt

Accomplishes the same thing as the above command, using symbolic notation.

Related commands

chown — Change the ownership of files or directories.
getfacl — Display file access control lists.
ls — List the contents of a directory or directories.



 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!