Как это считается
У каждого файла три набора прав: для владельца, для группы и для всех остальных. В каждом наборе три бита: чтение (4), запись (2) и выполнение (1), а восьмеричная цифра — их сумма.
цифра = чтение 4 + запись 2 + выполнение 1 режим = владелец, группа, остальные 755 = rwx (4+2+1) r-x (4+1) r-x (4+1) 644 = rw- (4+2) r-- (4) r-- (4)
Четвёртая цифра спереди хранит специальные биты: setuid 4, setgid 2 и sticky 1. ls показывает их на местах бита выполнения: s для setuid или setgid и t для sticky, заглавной буквой, если бит выполнения под ними выключен. Для папки выполнение — это право войти в неё, поэтому папкам нужен x там, где обычным файлам он не нужен.
Пример
chmod 640 wp-config.php: владелец читает и пишет (6 = 4 + 2), группа читает (4), остальные не получают ничего (0). ls -l покажет -rw-r-----, и веб-сервер сможет прочитать файл, только если он входит в группу файла.
Вопросы
Что означает chmod 755?
Владелец может читать, записывать и выполнять (7), а группа и все остальные — читать и выполнять (по 5). ls -l показывает это как rwxr-xr-x. Это обычный режим для папок, а также для скриптов и программ, которые должны запускать другие.
Чем отличается 644 от 755?
Только битом выполнения. 644 (rw-r--r--) позволяет владельцу писать, а всем читать; 755 дополнительно позволяет всем выполнять. Обычным файлам вроде HTML, изображений и файлов PHP нужен 644, а папкам и скриптам, которые запускаются сами, — 755.
Почему не стоит использовать chmod 777?
777 позволяет любому пользователю и процессу на сервере изменять файл. Если взломают один сайт или плагин, злоумышленник сможет переписать всё, у чего права 777. Ошибку прав лучше исправить, передав файл нужному пользователю командой chown или добавив веб-сервер в группу файла.
Как изменить права всех файлов в папке?
chmod -R 755 folder меняет всё внутри, включая файлы, и делает каждый файл исполняемым. Чтобы разделить папки и файлы, используйте find: find folder -type d -exec chmod 755 {} + для папок и find folder -type f -exec chmod 644 {} + для файлов.