Как читать права
Права записываются тремя группами по три бита: владелец (u), группа (g) и остальные (o). В каждой группе r = 4, w = 2, x = 1, а цифра — их сумма: rwx = 7, r-x = 5, r-- = 4. Поэтому rwxr-xr-x — это 755. Первая буква в выводе ls -l — тип: «-» файл, «d» каталог, «l» символическая ссылка.
Числовая или символьная команда
chmod 640 file задаёт права целиком. Символьная форма умеет менять отдельные биты — chmod g+w file или chmod o-rwx file, — не трогая остальные. Калькулятор выводит символьную команду с «=» (u=rw,g=r,o=), поэтому результат тоже не зависит от текущих прав.
Частые вопросы
Чем отличаются 755 и 644?
755 (rwxr-xr-x) — владелец может всё, остальные читают и запускают: так ставят на каталоги и скрипты. 644 (rw-r--r--) — владелец пишет, остальные только читают: обычные файлы, конфиги, статика сайта. Каталогу без x нельзя сделать cd и прочитать файлы внутри.
Почему chmod 777 — плохая идея?
Любой локальный пользователь и любой процесс (включая взломанный PHP-скрипт) сможет изменить файл или подложить свой. Обычно проблема с правами решается правильным владельцем: chown www-data:www-data и 755/644, либо общей группой и 775/664.
Что делает четвёртая цифра в 2775 или 1777?
Это спецбиты: 4 — setuid, 2 — setgid, 1 — sticky. 2775 на каталоге заставляет новые файлы наследовать группу каталога, 1777 (как у /tmp) разрешает всем писать, но удалять только свои файлы.
Почему chmod 755 не снимает setgid с каталога?
GNU chmod при трёхзначном числовом режиме сохраняет setuid и setgid у каталогов. Чтобы снять их, укажите пять цифр (chmod 00755 dir) или явно: chmod g-s dir.
Какие права нужны для ключа SSH?
Приватный ключ — 600 (или 400), каталог ~/.ssh — 700, authorized_keys — 600. При более широких правах OpenSSH откажется использовать ключ с ошибкой «UNPROTECTED PRIVATE KEY FILE».
