Все частіше виявляється, що деякі початківці сайтостроітелі, захоплені скріптованіем (на perl/cgi, php тощо) не знають, що таке chmod і як його використовувати. У цьому короткому керівництві ви дізнаєтеся що таке chmod, як він виставляється і взагалі для чого це потрібно.

Дуже важливо іноді призначити права доступу на певні файли і папки, що знаходяться на веб сервері, будь то в цілях безпеки або просто для коректної роботи скрипта. Ця дія називається chmod (change file mode), або по-російськи: зміна режиму доступу до файлів. Ця назва бере свій початок з команди Unix — chmod, яка змінює дозволу на файли. З часом «chmod» став синонімом слова «дозвіл» («permission»).

Існує три групи користувачів, права яких нас будуть цікавити: власник файлу, група та інші користувачі.

Створюючи файл, користувач автоматично отримує найширші права на роблення з цим файлом чого завгодно, його група — дещо менші права, а всі інші — зовсім нікчемні. У Unix є тільки три основних права — читати файл або переглядати каталог («Read»), змінювати файл або папку, записуючи в неї що-небудь, або взагалі її видаляти («Write»). Останнє право — право на запуск файлу («eXecute»).

Режим chmod може позначатися в числовому або символьному форматі. Наприклад: 755, rwxrxrx, 644 і т. д.

Як ви вже зрозуміли, символи r, w та x позначають, відповідно, read, write і execute. Виставляти права на файли таким чином можна через будь ftp-клієнт, наприклад CuteFTP.

Зверніть увагу на розстановку «галочок». Першими йдуть галочки в полях «Власник»: read, write, execute (rwx); потім йдуть поля «Групи»: read, execute (rx); і нарешті поля «Інших»: read, execute (rx). В результаті ми отримали права rwxrxrx на файл (по черзі букв і полів). Тобто, власник може читати, записувати і виконувати файл; «група» і «інші» мають право на читання і виконання файлу, але не на запис! Тепер ви повинні усвідомлювати важливість встановлення прав на файли і постаратися забезпечити максимальну безпеку ваших скриптів і даних на сервері за допомогою цього інструменту.

Зверніть увагу на число 755 в полі Manual. Виявляється, кожне право має певний числовий код і може бути виставленими вручну:

  • 400 — власник має право на читання
  • 200 — власник має право на запис
  • 100 — власник має право на виконання
  • 40 — група має право на читання
  • 20 — група має право на запис
  • 10 — група має право на виконання
  • 4 — інші мають право на читання
  • 2 — решта мають право на запис
  • 1 — решта мають право на виконання

Сума цих пунктів дає бажаний chmod. Наприклад, ми хочемо щоб власник міг робити все, а група і решта — тільки читати файл. Складаємо: 400+200+100+40+4=744. Тобто нам необхідний chmod 744. Тепер залишилося тільки підсумувати числа, відповідні тим прав доступу, які ми хочемо поставити файлу, і встановити їх.

Приклади:

400+40+4=444 — всі мають право тільки на читання.

400+100+10+1=611 — власник може читати і виконувати, інші — тільки виконувати.

400+200+40+4=644 — означає, що ви дозволяєте всім його читати, але писати у файл може тільки власник файлу. Навіть якщо ви є власником файлу і відкриваєте його в браузері, то ви не зможете нічого в нього записати, оскільки доступ через браузер робить вас анонімним користувачем.

400+200+40+20+4+2=666 — означає, що всі можуть читати і писати цей файл. Це необхідно, щоб користувачі могли робити записи в гостьових книгах, форумах і т. д.

400+200+100+40+10+4+1=755 — класична команда для cgi-скритпа. CGI-скрипт — це виконуваний файл, і всі повинні мати до нього доступ на читання і виконання. Тільки власник цього файлу може його змінювати або видаляти.

Наведу ще більш зручну, на мій погляд, таблицю розрахунку chmod:

Значення Owner (Власник) Group (Група) Public (Інші)
Read = 4 x x x
Write = 2 x x
Execute = 1 x x x
Сума: (4 + 2 + 1) = 7 (4 + 1) = 5 (4 + 1) = 5

І на завершення коротко скажу про те, як ці дозволу встановлюються. Робиться це за допомогою будь-якого ftp-клієнта:

  • У Windows Commander вони змінюються через пункти меню «Файл» > «Змінити атрибут». При цьому змінюються дозволу на виділений файл (файли) і/або папки.
  • В FAR Manager дозволу виділених файлів змінюються натисканням Ctrl+A:
    [x][x][ ] [x][x][ ] [x][x][ ] — 666
    [x][x][x] [x][ ][x] [x][ ][x] — 755
  • У CuteFTP дозволу змінюються з допомогою пункту «Change file attributes» (змінити атрибут файлу) меню, що випадає при натисканні правою кнопкою мишки по імені файлу.