Все частіше виявляється, що деякі початківці сайтостроітелі, захоплені скріптованіем (на 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» (змінити атрибут файлу) меню, що випадає при натисканні правою кнопкою мишки по імені файлу.