Encoders & Utilities

Chmod Calculator

Конвертує між числовими й символічними UNIX-правами.

Permissions Type octal (e.g. 755 or 4755) or symbolic (rwxr-xr-x).
-rw-r--r--
chmod 0644
Octal
0644
Symbolic
-rw-r--r--
Binary
110 100 100
Permission matrix
Read
Write
Execute
Owner
r
w
·
Group
r
·
·
Other
r
·
·
Special bits
setuid
Run as file owner. Common on /usr/bin/passwd.
setgid
Inherit group on directories. Used in shared folders.
sticky
Only owner can delete. Used on /tmp.

Про цей інструмент

Chmod Calculator переводить між трьома способами виразити UNIX file permissions: octal (755, 644), symbolic (rwxr-xr-x, rw-r--r--) і symbolic mode (u=rwx,go=rx — форма, яку приймає сам chmod). Клікніть read/write/execute-чекбокси для owner/group/other, і три представлення оновлюються синхронно з готовою для копіювання командою chmod.

Спеціальні біти теж підтримуються: setuid (4000), setgid (2000) і sticky (1000) — біти, що перетворюють /tmp у shared-writable директорію, де користувачі не можуть видаляти файли один одного (sticky), і що дозволяють бінарникам на кшталт passwd ескалювати привілеї (setuid). Дисплей анотує кожен з його security-implication, щоб ви знали, що збираєтесь застосувати.

Коли використовувати цей інструмент

  • Hardening дерев web-сервера. Підтвердіть 644 для файлів і 755 для директорій перед зміною чогось у chmod -R.
  • Розслідування «permission denied». Декодуйте результат ls -l в octal, щоб порівняти з тим, що очікує ваш додаток.
  • Налаштування shared-директорій. Правильна комбінація sticky-біта (1777) для multi-user upload-папки.
  • Вивчення UNIX permissions. Інтерактивні bit-checkboxes — найшвидший спосіб зрозуміти, як octal мапиться на rwx.

Про umask і default permissions

umask — інверсія виводу калькулятора — каже ядру, які біти вимкнути, коли створюється новий файл або директорія. Поширений umask 022 дає 644 для файлів і 755 для директорій за замовчуванням; строгіший umask 077 дає 600 для файлів і 700 для директорій (private для owner). Підібрати правильний umask system-wide ефективніше, ніж chmod-ити кожен файл окремо.

Часті запитання

Яка різниця між 644 і 755?

644 — «owner read/write, всі інші лише read» — правильний default для статичних файлів (HTML, CSS, images). 755 додає execute для всіх, що не має сенсу для статичних файлів, але обов'язкове для директорій (без execute на директорії неможливо cd у неї) і для скриптів/бінарників. Правило: 644 для файлів, 755 для директорій.

Що насправді робить setuid?

Каже ядру «коли цей binary запущено, запускай його як owner файла, а не як користувача, що його інвокує». /usr/bin/passwd має setuid root, щоб звичайний користувач міг змінити свій пароль (що вимагає запису в /etc/shadow). Це потужний, але небезпечний permission; лише системні бінарники мають його мати, ніколи — user-скрипти. Shell-скрипти ігнорують setuid із міркувань безпеки в сучасному UNIX.

Чому execute потрібен на директоріях?

На директорії execute-біт означає «можна увійти (traverse) в цю директорію». Без execute неможливо cd у папку, перелічити її вміст (з ls теж потрібен read) або прочитати будь-який файл всередині, навіть якщо файли мають read permission. Директорія в read-only режимі (444) зламана — ви бачите імена, але не можете stat-нути жоден з них.

Для чого sticky-біт?

На директорії означає «лише owner файла (або root) може видалити чи перейменувати його». /tmp використовує 1777 — всі можуть писати, але видалити можна лише свої файли. Без sticky будь-хто міг би rm-нути чужі tempfile. Біт прийшов із legacy-використання на executable (тримав текст у свапі), тепер на файлах застарілий; на директоріях досі дуже корисний.