chmod с числами: как задавать права доступа в Linux

Команда chmod меняет права доступа к файлам и папкам в Linux. Права можно задавать буквами (u+x), но чаще удобнее числами: chmod 644 file. Разберёмся, откуда берутся эти числа.

Как устроены права

У каждого файла три группы пользователей:

  • владелец (user);
  • группа (group);
  • остальные (others).

И три права для каждой группы:

  • r, чтение;
  • w, запись;
  • x, выполнение (для папки: право в неё зайти).

Посмотреть права можно командой ls -l: строка -rw-r--r-- означает, что владелец читает и пишет, а группа и остальные только читают.

Числовая запись

Каждому праву соответствует число:

  • r = 4;
  • w = 2;
  • x = 1.

Права группы складываются: чтение и запись дают 4 + 2 = 6, все три права 4 + 2 + 1 = 7. Три цифры подряд задают права для владельца, группы и остальных.

  • 0: ---, нет прав;
  • 4: r--, только чтение;
  • 5: r-x, чтение и выполнение;
  • 6: rw-, чтение и запись;
  • 7: rwx, все права.

Частые комбинации

  • 644: владелец читает и пишет, остальные читают. Стандарт для обычных файлов.
  • 755: владелец всё, остальные читают и заходят. Стандарт для папок и скриптов.
  • 600: только владелец читает и пишет. Для ключей и файлов с паролями.
  • 700: только владелец, для личных папок, например ~/.ssh.
  • 777: все могут всё. Почти всегда это ошибка и дыра в безопасности.

Примеры

chmod 644 index.php
chmod 755 deploy.sh
chmod 600 ~/.ssh/id_ed25519
chmod -R 755 /var/www/site/wp-content/uploads

Ключ -R применяет права рекурсивно ко всем файлам внутри. Будьте с ним осторожны: файлам обычно не нужен бит выполнения. Правильно задать права отдельно файлам и папкам можно так:

find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;
chmod 640 /var/www/site/wp-config.php

Это рекомендуемые права для сайта на WordPress. Владельцем файлов должен быть пользователь, от которого работает PHP. Меняется он командой chown.

Особые биты

Иногда встречается четвёртая цифра спереди: chmod 2775 dir. Она задаёт особые биты: 4 это setuid, 2 setgid (новые файлы получают группу папки), 1 sticky bit (удалять файлы может только их владелец, как в /tmp).

Права доступа это одна из основ безопасности сервера. Если нужен пользователь с административными правами, смотрите заметку о sudo-пользователе.

Источники и ссылки


Комментарии загружаются…