Chmod

Symbolic mode

The format of a symbolic mode is ‘…]’. Multiple symbolic operations can be given, separated by commas. A combination of the letters ‘ugoa’ controls which users’ access to the file will be changed: the user who owns it (u), other users in the file’s group (g), other users not in the file’s group (o), or all users (a). If none of these are given, the effect is as if ‘a’ were given, but bits that are set in the umask are not affected.

The operator ‘+’ causes the permissions selected to be added to the existing permissions of each file; ‘-‘ causes them to be removed; and ‘=’ causes them to be the only permissions that the file has.

The letters ‘rwxXstugo’ select the new permissions for the affected users: read (r), write (w), execute (or access for directories) (x), execute only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), sticky (t), the permissions granted to the user who owns the file (u), the permissions granted to other users who are members of the file’s group (g), and the permissions granted to users that are in neither of the two preceding categories (o).

What’s about the number?

With the basic understanding of the Classes and Permissions, let’s delve into it further and see how the “777” or “775” come about.

Every file and folder contain a 8-bit data that control the permissions. At its basic binary form, it will be “000”, which means no permissions of any form is granted. When you set a “Read” permission, it will add 4-bit to the data, making it “100” (in binary format) or a “4” in the usual decimal format. Setting a “Write” permission will add 2-bit to the data, making it “010” and “2” in decimal form. Lastly, setting an “Execute” permission adds 1-bit to the data, which will result in “001”, or “1” in decimal form. In short:

  • Read is equivalent to ‘4’.
  • Write is equivalent to ‘2’.
  • Execute is equivalent to ‘1’

When we want to set permissions, we just add up the number. For example, to set the permissions to “read and write”, we will use ‘6’ (4 + 2) for the permission. For read, write and execute, we will use ‘7’ (4 + 2 + 1) for the permission. Here’s the different permutation:

0 – no permission
1 – execute
2 – write
3 – write and execute
4 – read
5 – read and execute
6 – read and write
7 – read, write, and execute

Depending on the permissions you want to grant to the file, you just set the number accordingly.

What about the 3 digits ‘777’? Well, the first digit is assigned to the Owner, the second digit is assigned to the Group and the third digit is assigned to the Others. So for a file with ‘777’ permission, everyone can read, write and execute the file. Here are some of the commonly used permissions:

  • 755 – This set of permission is commonly used in web server. The owner has all the permissions to read, write and execute. Everyone else can only read and execute, but cannot make changes to the file.
  • 777 – Everyone can read write and execute. In a web server, it is not advisable to set ‘777’ permission for your files and folders as it allows anyone to add malicious code to your server. However, in some cases, you will need to set the 777 permissions before you can upload any file to the server (For example, uploading images in WordPress)
  • 644 – Only the owner can read and write. Everyone else can only read. No one can execute the file.
  • 655 – Only the owner can read and write, but not execute the file. Everyone else can read and execute, but cannot modify the file.

Настройка разрешений для файлов Mac с помощью Finder

Если вы хотите установить разрешения для файла на вашем Mac без использования терминала, вам нужно будет использовать приложение Finder.

Вы можете запустить Finder из Dock внизу экрана. Приложение представлено улыбающимся значком с логотипом Happy Mac.

В окне Finder вы можете просматривать и устанавливать разрешения, щелкнув правой кнопкой мыши файл или папку и выбрав «Свойства».

Обширная информация о вашем файле или папке может быть найдена в открывшемся окне «Свойства». Однако, чтобы установить права доступа к файлам, вам нужно нажать на стрелку рядом с опцией «Общий доступ и права доступа».

Будет отображен список учетных записей или групп пользователей на вашем Mac с уровнями доступа, показанными в категории «Общий доступ и права доступа».

Если учетной записи или группы пользователей, для которых вы хотите установить разрешения, нет в списке, выберите значок «Плюс» (+) в нижней части окна.

Выберите пользователя или группу в окне выбора, а затем нажмите кнопку «Выбрать». Это добавит его в список.

Уровни доступа говорят сами за себя – пользователи с уровнем доступа «Только чтение» не могут редактировать файлы, но они могут получить к ним доступ. Если для учетной записи установлен уровень «Чтение и запись», они могут выполнять обе функции.

Чтобы изменить это для пользователя или группы в списке, нажмите стрелку рядом с существующим уровнем для этой учетной записи или группы, а затем выберите «Только для чтения» или «Чтение и запись» из списка.

Разрешения сразу устанавливаются. Закройте окно, как только вы закончите.

Синтаксис

Основные параметры:

  • -c — показать информация обо всех изменениях.
  • -f — не показывать ошибки.
  • -v — вывод полной информации.
  • -R — рекурсивно обрабатывать файлы и каталоги.
  • —help — показать справочную информацию.
  • —version — информация о версии.

Применят часто символьную запись прав:

  • -r —  на чтение
  • -w — на запись
  • -x — на выполнение, права на запуск
  • -s — на выполнение от супер пользователя root.

Категории пользователей:

  1. -u (owner) — владелец.
  2. -g (group) — группа.
  3. -o (others)- другие.

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

Чтобы прибавить права используется знак «+», убавить «-«.

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

  • 0 — все запрещено
  • 1 — выполнение, разрешено запускать документ
  • 2 — запись, изменение.
  • 3 — выполнение и запись.
  • 4 — разрешено читать.
  • 5 — читать и выполнять
  • 6 — читать и писать
  • 7 — все разрешено, писать, читать, выполнять.

Здесь 777:

  1. первая цифра назначает разрешения для владельца документа;
  2. вторая цифра — для группы;
  3. третья  — для всех остальных.

Примеры прав на директорию:

  • 744 — первая цифра говорит, что имеет полный доступ владельц, вторая цифра четыре — чтение для группы, третья цифра четыре — всем другим можно читать;
  • 765 — для владельца — полные права, для группы — читать, писать и другим читать, выполнять;
  • 774 — полный доступ для владельца, полный доступ для группы, чтение для остальных;
  • 777 — всем все разрешено.

Примеры

Назначим для файлу test полный доступ всем.

Чтобы посмотреть какие права для файлы test, выполним дополнительную команду ls, с ключом -l. Подробней о команде ls можно посмотреть здесь.

На экране видим:

  1. -rwxrwxwx 1 — права доступа.
  2. Первый root — имя пользователя.
  3. Второй root — имя группы.
  4. 583 — размер файла test.
  5. test — название документа.

Сделаем тоже самое, только уже с помощью букв.

Здесь:

  • u — владелец;
  • g -группа;
  • o — остальные;
  • + — включить;
  • r — читать;
  • w — писать;
  • x — выполнять.

Создадим новый документ «logi» с помощью команды touch и разрешим любым пользователям выполнять его и изменять. За выполнение отвечает буква «х», за изменения «w».

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

Чтобы владельцу дать полный доступ, изменим первую цифру 3 на 7. Получается так:
Дадим полный доступ всем, на каталог «catalog».

Чтобы дать разрешения 777 на папку и включая все ее содержимое, необходимо добавить звездочку. Получается так:

Теперь подкаталоги и файлы имеют 777.

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в linux.

Technical Description

chmod changes the file mode of each specified FILE according to MODE, which can be either a symbolic representation of changes to make, or an octal number representing the bit pattern for the new mode bits.

The format of a symbolic mode is:

[ugoa…][[+-=][perms…]…]

where perms is either zero or more letters from the set r, w, x, X, s and t, or a single letter from the set u, g, and o. Multiple symbolic modes can be given, separated by commas.

A combination of the letters u, g, o, and a controls which users’ access to the file will be changed: the user who owns it (u), other users in the file’s group (g), other users not in the file’s group (o), or all users (a). If none of these are given, the effect is as if a were given, but bits that are set in the umask are not affected.

The operator + causes the selected file mode bits to be added to the existing file mode bits of each file; causes them to be removed; and = causes them to be added and causes unmentioned bits to be removed except that a directory’s unmentioned set user and group ID bits are not affected.

The letters r, w, x, X, s and t select file mode bits for the affected users: read (r), write (w), execute (x), execute only if the file is a directory or already has execute permission for some user (X), set user or group ID on execution (s), restricted deletion flag or sticky bit (t). For directories, the execute options X and X define permission to view the directory’s contents.

Instead of one or more of these letters, you can specify exactly one of the letters u, g, or o: the permissions granted to the user who owns the file (u), the permissions granted to other users who are members of the file’s group (g), and the permissions granted to users that are in neither of the two preceding categories (o).

A numeric mode is from one to four octal digits (-7), derived by adding up the bits with values 4, 2, and 1. Omitted digits are assumed to be leading zeros. The first digit selects the set user ID (4) and set group ID (2) and restricted deletion or sticky (1) attributes. The second digit selects permissions for the user who owns the read (4), write (2), and execute (1); the third selects permissions for other users in the file’s group, with the same values; and the fourth for other users not in the file’s group, with the same values.

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions. However, this is not a problem since the permissions of symbolic links are never used. However, for each symbolic link listed on the command line, chmod changes the permissions of the pointed-to file. In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

Шаг 3 – Использование дополнительных опций с командами chmod и chown

Одна из основных опций работающая с обеими командами это -R, которая означает рекурсивный. Эта опция позволяет вам менять права доступа и владельца файла, заданной папки и ВСЕХ других файлов внутри нее.

ВАЖНО! Будьте очень осторожны с этой опцией, если вы используете ее неправильно, вы можете изменить права доступа и владельца ВСЕХ файлов в вашей системе, что приведет к ошибкам в работе и трате огромного количества времени на откат изменений

  • “-f” – тихая или силовая опция. При использовании данной опции скроет большинство сообщений об ошибках.
  • “-v” – делает диагностику каждого файла затронутого командой.
  • “-c” – схожа с опцией -v, но предоставляет информацию только в случае реальных изменений.

Зачем использовать Chmod

В UNIX-системах — FreeBSD, Ubuntu, Debian, Centos — у каждого файла и папки (каталога) есть свои владелец и группа, к которым они относятся. Сделано это с целью разграничения прав доступа на чтение (r, read), запись (w, write) и исполнение (x, execute) для разных пользователей: владельцев (u), пользователей, входящих в группу владельца (g) и остальных (o).
Например, если вы пользуетесь хостингом, то должны знать, что ваш сайт физически находится на одном сервере рядом со множеством других сайтов таких же, как вы, пользователей со своими сайтами. Чтобы вы не смогли помешать друг другу, у каждой директории с сайтами свой владелец и группа пользователей, к которым они относятся.
На shared хостинге о вас позаботятся профессиональные системные администраторы. А если вы имеете свой сервер VDS/VPS, то просто обязаны следить за прописанными правами на доступ к файлам. Например, если вдруг с помощью уязвимости на сайте злоумышленник сможет записать backdoor в директорию для загрузки файлов, то с правильно прописанными правами доступа он не сможет причинить большого вреда файловой системе. Конечно, в директории для загрузки файлов должно быть принудительно отключено исполнение скриптов, но это тема уже для другого разговора.

Добавить комментарий

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