This page has been robot translated, sorry for typos if any. Original content here.

chmod - зміна режиму доступу до файлів

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

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

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

Створюючи файл, користувач автоматично отримує найширші права на роблення з цим файлом чого завгодно, його група - дещо менші права, а всі інші - зовсім незначні. В Unix є тільки три основних права - читати файл або переглядати каталог ( «R ead»), змінювати файл або папку, записуючи в неї що-небудь, або взагалі її видаляти ( «W rite»). Останнє право - право на запуск файлу ( «e X ecute»).

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

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

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