Код и данные · права доступаКалькулятор прав доступа (chmod)
Посчитайте права Unix во всех формах — галочками, в цифрах (755) или символами (rwxr-xr-x), — вставьте строку ls -l и получите готовую команду chmod. С объяснением по-русски и предупреждениями о рисках.
Всё считается в браузере — строка ls -l и путь никуда не отправляются
галочки, цифры, символы и строка ls -l — всё связано
Кто и что может
Чтениеr = 4
Записьw = 2
Выполнениеx = 1
Владелец7
Группа5
Остальные5
Спецбиты
Готовые рецепты
Результат
Восьмерично0755
Символьноrwxr-xr-x
Строка ls -l-rwxr-xr-x
Команда
chmod 755 deploy.sh
Что это значит
7
Владелец
Читать содержимое, изменять и сохранять, запускать.
5
Группа
Читать содержимое, запускать.
5
Остальные
Читать содержимое, запускать.
Рискованных прав нет — набор выглядит безопасно
02
Частые режимы
нажмите режим — подставим его в калькулятор
РежимСимвольноКогда применять
644→rw-r--r--обычный файл: владелец правит, остальные читаютПрава по умолчанию для текста, картинки, конфига и страницы сайта. Выполнение никому не нужно — файл не программа.
755→rwxr-xr-xпапка, скрипт, файл на веб-сервереВладелец правит, остальные читают и заходят. Папке право x нужно, чтобы в неё можно было войти, скрипту — чтобы запуститься.
600→rw-------приватный файл: SSH-ключ, .env, токенНикто, кроме владельца, не может даже прочитать. Для приватного ключа это не пожелание: ssh отказывается работать с ключом шире 600.
700→rwx------приватная папка только для владельца: ~/.ssh, ~/.gnupgНи зайти, ни посмотреть список посторонним. Пара к 600: сам ключ 600, папка вокруг него 700.
640rw-r-----файл, читаемый своей группойВладелец правит, группа читает, посторонние не видят вовсе. Так держат конфиги, которые должен читать сервис, работающий от своей группы.
750rwxr-x---папка для владельца и его группыГруппа заходит и читает, но не создаёт файлов; посторонние не заходят. Папочная пара к 640.
400r--------только чтение: ключ, защита от случайной правкиДаже владелец не изменит файл, пока не вернёт себе запись. Способ защититься от собственной ошибки, а не от чужого доступа.
775rwxrwxr-xобщая папка группы с записьюГруппа создаёт и удаляет файлы наравне с владельцем. Обычно дополняется setgid (2775), иначе новые файлы попадут в личную группу автора.
1777→rwxrwxrwt/tmp: пишут все, удаляет только владелец файлаЗапись открыта всем, но sticky-бит запрещает трогать чужое. Без него общая папка превращается в место, где любой удаляет любой файл.
4755rwsr-xr-xsetuid: запуск с правами владельца (passwd)Программа выполняется от имени владельца, а не запустившего. Нужно системным утилитам вроде passwd и почти никогда — своим скриптам.
777→rwxrwxrwxне ставить: полный доступ вообще всемЛюбой пользователь системы может изменить или подменить файл. Ставят «чтобы заработало» — а работает потом и у посторонних; в 99 случаях из 100 нужны 755 или 644.
03
О правах доступа
В Unix у каждого файла три класса — владелец, группа и остальные, — и для каждого три права: чтение (4), запись (2), выполнение (1). Их сумма по классу даёт одну восьмеричную цифру, а три цифры — привычные 755 или 644. Те же права записывают и символами (rwxr-xr-x), и командой chmod задают на файле.
Классы и права
Основа
r = 4 · w = 2 · x = 1
Три класса — владелец, группа, остальные, — и три права у каждого. Сумма прав внутри класса даёт одну цифру: rwx = 4+2+1 = 7, r-x = 5, rw- = 6.
Цифры и символы
Запись
755 = rwxr-xr-x
Одни и те же права пишут восьмерично (755 — компактно) или символами (rwxr-xr-x — наглядно). Команда chmod понимает оба варианта, а ls -l показывает второй.
Спецбиты
4-я цифра
4755 · rwsr-xr-x
setuid, setgid и sticky добавляют ведущую цифру и меняют x на s, S, t или T. Прописная буква означает, что спецбит стоит, а права на выполнение нет, — почти всегда это ошибка.
Файл или папка
Нюанс
x = вход внутрь
У файла «выполнение» — запуск программы, у папки — право войти. «Чтение» папки — посмотреть список имён, а не содержимое файлов. Отсюда правило: папке нужен x везде, где есть r.
Безопасность
Риски
777 · 600
777 открывает запись всем и почти всегда означает, что настоящую причину не нашли. Приватные ключи держат в 600 — с более открытым ключом ssh просто откажется работать.
umask
По умолчанию
022 → 644 / 755
umask не задаёт права, а вычитает их из базовых: 666 у файлов и 777 у папок. При umask 022 файл создаётся как 644, папка — как 755.
umask · права у новых файловumask вычитает права
Новые файлы644rw-r--r--
Новые папки755rwxr-xr-x
04
Частые вопросы
Владелец получает чтение, запись и выполнение (`rwx` = 4+2+1 = 7), группа и остальные — чтение и выполнение (`r-x` = 4+1 = 5). Это обычные права для папки, скрипта и файла на веб-сервере: владелец правит, остальные читают и заходят. Полная запись — `rwxr-xr-x`.
Каждому праву своё число: чтение 4, запись 2, выполнение 1. Их складывают внутри класса — `rwx` = 7, `r-x` = 5, `rw-` = 6, `r--` = 4. Три цифры подряд — это владелец, группа и остальные, именно в таком порядке. Четвёртая цифра впереди, если она есть, — спецбиты.
777 открывает чтение, запись и выполнение вообще всем пользователям системы: любой сможет изменить или подменить файл. Такие права ставят «чтобы наконец заработало», а работает потом и у посторонних. Почти всегда нужны 755 для папки или скрипта и 644 для обычного файла.
Это спецбиты в четвёртой цифре: setuid 4, setgid 2, sticky 1. setuid и setgid запускают программу с правами владельца или группы — так работает `passwd`. Sticky на папке (как у `/tmp`) разрешает удалять только свои файлы. В символьной записи они заменяют `x` на `s`, `S`, `t` или `T`; прописная буква означает, что права на выполнение при этом нет.
Приватный ключ — 600, папка `~/.ssh` вокруг него — 700: ssh откажется работать с ключом, доступным кому-то ещё, и скажет «Permissions are too open». Папка и скрипт — обычно 755, обычный файл — 644, приватная папка — 700. Остальные случаи разобраны в разделе «Частые режимы».
Биты одни и те же, но смысл выполнения разный. У файла `x` — запустить, у папки — войти внутрь; `r` у папки — посмотреть список файлов, а не прочитать их. Поэтому папке почти всегда нужен `x` там, где есть `r`: без него внутрь не зайти, даже зная имя файла. Переключатель «файл / папка» меняет объяснение под нужный случай.